오브젝트 4.설계 품질과 트레이드오프

조현창·2022년 12월 27일
0

오브젝트

목록 보기
4/5

영화 예매시스템을 책임이 아닌 상태를 표현하는 데이터 중심의 설계를 살펴보고 객체지향적으로 설계한 구조와의 차이점을 알아보자

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

  1. 상태를 분할의 중심축으로 삼는 방법
  2. 책임을 분할의 중심축으로 삼는 방법
    객체의 상태는 객체가 저장해야하는 데이터의 집합

데이터 중심일 때 객체는 자신이 포함하고 있는 데이터를 조작하는 데 필요한 오퍼레이션을 정의한다.
책임 중심일 때 객체는 요청할 수 있는 오퍼레이션을 위해 필요한 상태를 저장한다.

객체지향에서 구현은 불안정하기 때문에 변하기 쉬우며 상태를 중심축으로 오퍼레이션을 구현하면 세부사항이 객체의 오퍼레이션, 인터페이스에 스며들어 캡슐화가 불가능해진다.

설계 트레이드오프

캡슐화

변화가 적은 안정적인 부분만 외부에 노출 시키고 변경이 잦은 구체적인 구현부는 private 접근 지정자로 감추는 것으로 변경 여파를 줄일 수 있다. 유지보수성과 직결된다.

유지보수성

두려움 없이, 주저함 없이, 저항감 없이 코드를 변경할 수 있는 능력

응집도

모듈 내부 요소(클래스, 객체)들이 연관돼 있는 정도를 나타낸다. 단일 객체 또는 클래스에 얼마나 관련 높은 책임들을 할당했는지를 나타낸다.

결합도

의존성의 정도를 나타낸다. 각 모듈이 다른 모듈에 대한 지식을 얼마나 가지고 있는지 나타낸다.

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

데이터 중심의 설계는 캡슐화를 위반하고 객체의 내부 구현을 인터페이스의 일부로 만든다. 반면 책임 중심의 설계는 객체의 내부 구현을 안정적인 인터페이스 뒤로 캡슐화한다.

캡슐화 위반

fee를 수정하기 위해서 getter와 setter모두를 이용해야한다.

profile
공부중

0개의 댓글