본문 바로가기

책, 강의 정리/객체지향의 사실과 오해

객체지향의 사실과 오해 - 7장(함께 모으기)

 

객체지향 설계를 바라보는 세가지 관점 -> 동일한 클래스를 세가지 관점에서 바라보는 것

 

1. 개념관점

도메인 안에 존재하는 개념과 개념들 사이의 관계 표현. 사용자가 도메인을 바라보는 관점을 반영함. 개념관점을 잘 드러낼수록(실제 도메인의 규칙과 유사하게 반영할수록) 각 객체의 책임을 찾는 것, 유지보수를 하는 시간을 줄일 수 있다.

 

2. 명세관점

객체의 인터페이스를 바라보게 하는 것. 인터페이스와 구현을 분리하는 것이 핵심

 

3. 구현 관점

객체의 책임을 어떻게 수행할 것인가에 초점.

 

클래스는 세가지 관점을 모두 수용할 수 있도록 개념, 인터페이스, 구현을 함께 드러내야 함

 

예제에서 인상깊은 구절

- 메시지를 먼저 선택하고 그 후에 메시지를 수신하기에 적절한 객체를 선택하는 것이 중요함

- 인터페이스를 정리할 때 메시지가 객체를 선택하고 선택된 객체는 메시지를 자신의 인터페이스로 받아들인다.

 

코드와 세가지 관점

1. 개념관점

소프트웨어 클래스와 도메인 클래스 사이의 간격이 좁으면 좁을수록 기능을 변경하기 위해 뒤적거려야 하는 코드의 양도 점점 줄어든다.

 

2. 명세관점

최대한 변화에 안정적인 인터페이스를 만들기 위해서는 인터페이스를 통해 구현과 관련된 세부사항이 드러나지 않게 해야한다.

클래스의 안정적인 측면을 드러내야 한다. 구현 관점은 클래스의 불안정한 측면을 드러내야 한다.