kok202
[2019.02.21] 객체지향의 오해와 진실 (7장~부록)

2019. 2. 21. 23:59[공부] 독서/객체지향의 사실과 오해

7장


 Composition 관계

 메뉴판 ◆― 메뉴

 part of 관계

 Aggregation 관계 

 메뉴    ◇― 이름

 has a 관계

 Association 관계

 메뉴판 ―― 손님

 


도메인 모델에서 어떤 관계가 어떤 관계이고 이런 것은 중요하지 않다.


훌륭한 코드를 위한 3가지 관점

- 개념 관점

- 명세 관점

- 구현 관점


인터페이스와 구현을 분리하라 (명세와 구현의 분리)





부록

클래스는 객체가 공유하는 본질적인 속성을 정의한다.

서브타입은 슈퍼타입의 부분집합이다.


100% 규칙 : 슈퍼 타입의 정의는 100% 서브타입에 적용돼야만 한다.


상속에서 구조적인 순응 : 100% 규칙

상속에서 행위적인 순응 : 다형성


서브 타이핑 : 인터페이스 상속 - 설계의 유연성이 목표

서브 클래싱 : 구현 상속 - 코드의 중복 제거가 목표

위임 : 수신된 메시지가 이해할 수 없는 경우 부모 클래스로 위임하는 것 (super.function1();)


연관 관계로 연결된 두 객체는 독립적으로 제거 가능하다.

패키지, 모듈 = 클래스 집합

패키지는 내부의 클래스들을 추상화 한다.

= 패키지로 내부에 포함된 객체들을 감춰서 시스템 구조를 추상화한다.