본문 바로가기

객체지향

(3)
11 합성과 유연한 설계 10장은 상속에 대해 이야기를 하였다면 11장에서는 합성에 대해 이야기를 하였습니다. 그리고 10장에서 이야기한 상속과 마찬가지로 합성을 잘 쓰고 있는 저에게 있어 생각하지 못하고 있던 장단점들에 대해 이야기를 하고 있었습니다. 그러면서 부가적으로 일급 컬렉션에 대해 떠올릴 수 있었습니다. 합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용한다. ... 합성에서 두 객체 사이의 의존성은 런타임에 해결된다. ... 합성은 내부에 포함되는 객체의 구현이 아닌 퍼블릭 인터페이스에 의존한다. 따라서 합성을 이용하면 포함된 객체의 내부 구현이 변경되더라도 영향을 최소화할 수 있기 때문에 변경에 더 안정적인 코드를 얻을 수 있게 된다. ... [코드 재사용을 위해서는] 객체 합..
06 메시지와 인터페이스 https://goto-pangyo.tistory.com/230 05 책임과 메시지 4장에 이어 5장에서는 설계에 도움이 될 법한 실질적인 조언을 해주고 있습니다. 저자는 '메시지'의 역할 및 중요성을 이야기하고 이를 설계와 코드에 어떻게 녹이며, 인터페이스의 역할에 대해 goto-pangyo.tistory.com 이미 비슷한 내용으로 포스팅을 했었습니다. 그러나 오브젝트에서 언급하는 메시지는 조금더 구체적이고 또 실제 개발을 할 때 도움이 되는 내용들이였다는 느낌을 받았습니다. 추가로 "6장 메시지와 인터페이스"는 좋은 내용들이 풍부하지만 "객체지향의 사실과 오해"에서 다루었던 내용은 간략하게 설명하거나 건너뛰며 글을 작성하고자 합니다. 훌륭한 객체지향 코드를 얻기 위해서는 클래스가 아니라 객체를 지향..
5장 책임 할당하기 4장에서는 책임중심의 접근법이 아닌 데이터중심의 접근법의 문제점을 짚어보았습니다. 그리고 5장에서는 어떻게 해야 책임을 잘 할당할 수 있는지를 언급하였습니다. 기억에 남는 접근법은 총 두개가 있는데 하나는 처음에 설계를 할 때부터 GRASP 패턴으로 접근하는것 다른 하나는 절차지향적으로 코드를 먼저 작성하고 이를 리팩토링 하는 것입니다. 다행히도 GRASP 패턴의 경우 이미 1~4장까지 언급한 내용과 동일하다는 것입니다. 객체에게 할당된 책임이 협력에 어울리지 않는다면 그 책임은 나쁜 것이다. 객체의 입장에서는 책임이 조금 어색해 보이더라도 협력에 적합하다면 그 책임은 좋은 것이다. 책임은 객체의 입장이 아니라 객체가 참여하는 협력에 적합해야 한다. 이는 "객체지향의 사실과 오해"라는 책에서도 나오는 대..