<--SyntaxHighlighter--> SyntaxHighlighter.all();

01. 데이터 중심의 영화 예매 시스템

○ 데이터를 준비하자

○ 영화를 예매하자

02. 설계 트레이드오프

○ 캡슐화

· 객체를 사용하면 변경 가능성이 높은 부분은 내부에 숨기고(구현) 외부에는 상대적으로 안정적인 부분만 공개함으로써(인터페이스) 변경의 여파를 통제할 수 있다.

○ 응집도와 결합도

· 응집도: 모듈 내의 요소들이 하나의 목적을 위해 긴밀하게 협력한다면 높은 응집도

· 결합도: 어떤 모듈이 다른 모듈에 대해 꼭 필요한 지식만 알고 있다면 두 모듈은 낮은 결합도를 가진다. 

클래스의 구현이 아닌 인터페이스에 의존하도록 코드를 작성해야 낮은 결합도를 얻을 수 있다.

03. 데이터 중심의 영화 예매 시스템의 문제점

○ 캡슐화 위반

○ 높은 결합도

○ 낮은 응집도

단일책임원칙(SRP: Single Responsibility Principle)

04. 자율적인 객체를 향해

○ 캡슐화를 지켜라

○ 스스로 자신의 데이터를 책임지는 객체

· 질문1: 어떤 데이터를 포함해야 하는가?

- 이 객체가 어떤 데이터를 포함해야 하는가?

- 이 객체가 데이터에 대해 수행해야 하는 오퍼레이션은 무엇인가?

· 질문2: 데이터를 처리하기 위해 어떤 오퍼레이션이 필요한가?

05. 하지만 여전히 부족하다.

○ 캡슐화 위반

캡슐화의 진정한 의미: 구현과 관련된 것이라면 변하는 어떤 것이든 감추는 것.

○ 높은 결합도

유연한 설계를 위해서는 캡슐화를 설계의 첫 번째 목표로 삼아야 한다.

○ 낮은 응집도

06. 데이터 중심 설계의 문제점

○ 데이터 중심 설계는 객체의 행동보다는 상태에 초점을 맞춘다

· 데이터 중심의 설계는 너무 이른 시기에 데이터에 대해 고민하기 때문에 캡슐화에 실패하게 된다. => 변경에 취약한 코드

○ 데이터 중심 설계는 객체를 고립시킨 채 오퍼레이션을 정의하도록 만든다

+ Recent posts