2023.08.21 MON
234p ~ 249p
18일차 내용 ⬇️
2023.08.21 - [개발 서적 기록/오브젝트_조영호] - 18일차 - 하향식 기능 분해 설계
18일차 - 하향식 기능 분해 설계
2023.08.20 SUN 223p ~ 234p 17일차 내용 ⬇️ 2023.08.19 - [개발 서적 기록/오브젝트_조영호] - 17일차 - 프로시저 추상화와 데이터 추상화 17일차 - 프로시저 추상화와 데이터 추상화 2023.08.18 FRI 214p ~ 224p 16
magenta-ming.tistory.com
정보 은닉
시스템에서 자주 변경되는 부분을, 상대적으로 덜 변경되는 안정적인 인터페이스 뒤로 감춰서, 시스템을 모듈 단위로 분해하는 방법
시스템을 모듈로 분해한 후에는 각 모듈 내부를 구현하고, 이때 기능 분해가 적용된다.
모듈은 복잡하지 않게, 변경에 유연하게 설계해야한다.
그래서 이 모듈에 대한 인터페이스를 제공해야한다.
인터페이스를 통해서, 외부에서 모듈을 추상화할 수 있어 모듈의 복잡성이 낮아진다.
그리고, 인터페이스는 쉽게 변경되지 않으므로, 변경 가능한 설계에 대한 부분은 모듈 내부로 감출 수 있어, 실제로 변경이 발생했을 때에 여러 모듈이나 인터페이스가 아닌 단 하나의 모듈만 수정하면 된다.
모듈의 장점
- 모듈 내부의 변수가 변경되더라도 모듈 내부에만 영향을 미친다.
- 비즈니스 로직과 사용자 인터페이스에 대한 관심사를 분리한다.
- 전역 변수와 전역 함수를 제거함으로써, 네임스페이스 오염을 방지한다.
모듈의 단점
인스턴스의 개념을 제공하지 않는다.
그래서 개별 객체에 대한 독립적인 단위를 다룰 수 없다.
이를 추상 데이터 타입으로 해결할 수 있다.
데이터 타입
데이터를 저장하는 객체(object)와 객체가 할 수 있는 연산(operation)의 집합
추상 데이터 타입 Abstract Data Type
추상 객체의 클래스를 정의한 것으로, 내부에 캡슐화할 데이터와, 적용할 수 있는 오퍼레이션을 가지고 있다.
어떤 데이터 타입이 어떤 작업으로 이루어지는지만 표현한다.
이 추상 데이터 타입에 대해 여러개의 인스턴스를 생성할 수 있다.