-
Ch7. 함께 모으기코딩은 주댕이로/객체지향의 사실과 오해 2022. 4. 4. 20:34
마틴 파울러는 객체지향 설계 안에 존재하는 세 가지 상호 연관된 관점에 대해 설명한다.
개념 관점, 명세 관점, 구현 관점
개념 관점: 사용자가 도메인을 바라보는 관점을 반영한다. 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심
명세 관점: 프로그래머는 객체가 협력을 위해 ‘무엇'을 할 수 있는가에 초점을 맞춘다.
구현 관점: 객체들이 책임을 수행하는 데 필요한 동작하는 코드를 작성하는 것. 책임을 ‘어떻게' 수행할 것인가에 초점
개념 관점, 명세 관점, 구현 관점은 동일한 클래스를 세 가지 다른 방향에서 바라보는 것을 의미한다.
클래스는 세 가지 관점을 모두 수용할 수 있도록 개념, 인터페이스, 구현을 함께 드러내야 한다. 동시에 코드 안에서 세 가지 관점을 쉽게 식별할 수 있도록 깔끔하게 분리해야 한다.
코드와 세 가지 관점
코드는 세 가지 관점을 모두 제공해야 한다.
인터페이스를 수정하면 해당 객체와 협력하는 모든 객체에게 영향을 미칠 수밖에 없다. 객체의 인터페이스는 수정하기 어렵다는 사실을 명심하라.
다른 사람이 여러분의 코드를 읽으면서 세 가지 관점을 쉽게 포착하지 못한다면 세 가지 관점이 명확하게 드러날 수 있게 코드를 개선하라.
인터페이스와 구현을 분리하라
마틴 파울러는 개념적인 관점과 명세 관점 사이는 그렇게 중요하지 않은 경우가 많지만 명세 관점과 구현 관점을 분리하는 것은 매우 중요하다고 주장한다.
'코딩은 주댕이로 > 객체지향의 사실과 오해' 카테고리의 다른 글
Ch6. 객체 지도 (0) 2022.03.09 Ch5. 책임과 메시지 (0) 2022.03.09 Ch3. 타입과 추상화 (0) 2022.03.09 Ch2. 이상한 나라의 객체 (0) 2022.03.09 Ch1. 협력하는 객체들의 공동체 (0) 2022.03.09