객체지향의 사실과 오해
Etc ·개발자들 사이에서 많이 언급되는 책이라 읽어보았습니다.
객체지향의 개념에 대해 정리되지 않았던 생각들이
머릿 속에서 정리되는 데에 도움을 주었습니다.
객체지향 프로그래밍 입문자들에게 추천하기 좋은 책인 것 같습니다.
책은 7장으로 구성되어 있는데, 매 장마다 기억에 남는
글이나 개념을 적어놓으려고 합니다.
1장 협력하는 객체들의 공동체
- 객체지향의 핵심은 적절한 책임을 수행하는 역할 간의
유연하고 견고한 협력 관계를 구축하는 것
2장 이상한 나라의 객체
- 객체는 상태, 행동, 식별자를 지닌 실체
- 행동이 상태를 결정한다
3장 타입과 추상화
- 추상화란 현실에서 출발하되 불필요한 부분을 도려내가면서
사물의 놀라운 본질을 드러나게 하는 과정 - 타입은 시간에 따른 객체의 상태 변경이라는
복잡성을 단순화할 수 있는 효과적인 방법 - 클래스는 타입을 구현하는 한 가지 방법
4장 역할, 책임, 협력
- 개별적인 객체의 행동이나 상태가 아니라
객체들 간의 협력에 집중하라 - 협력에 필요한 책임을 결정하고 객체에게 책임을
할당하는 과정을 얼마나 합리적이고 적절하게
수행했는지가 객체지향 설계의 품질을 결정한다
5장 책임과 메시지
- 협력에 참여하는 객체가 얼마나 자율적인지가
전체 애플리케이션의 품질을 결정한다 - 메시지는 객체로 하여금 자신의 책임,
즉 행동을 수행하도록 만드는 유일한 방법 - 다형성은 객체들의 대체 가능성을 이용해
설계를 유연하고 재사용 가능하게 만든다 - 메시지는 송신자와 수신자 사이의 결합도를 낮춤으로써
설계를 유연하고, 확장 가능하고, 재사용 가능하게 만든다 - 책임이 자율적일수록 적절하게 추상화되며 응집도가 높아지고
결합도가 낮아지며 캡슐화가 증진되고 인터페이스와 구현이
명확히 분리되며 설계의 유연성과 재사용성이 향상된다 - 객체지향의 강력함을 누리기 위한 출발점은
책임을 자율적으로 만드는 것이다.
그리고 이것은 여러분이 선택하는 메시지에 따라 달라진다
6장 객체 지도
- 안정적인 도메인 모델을 기반으로 시스템의 기능을 구현하라.
도메인 모델과 코드를 밀접하게 연관시키기 위해 노력하라.
그것이 유지보수하기 쉽고 유연한 객체지향 시스템을 만드는 첫걸음이 될 것이다.
7장 함께 모으기
- 클래스가 은유하는 개념은 도메인 관점을 반영
- 클래스의 공용 인터페이스는 명세 관점을 반영
- 클래스의 속성과 메서드는 구현 관점을 반영
- 클래스는 세 가지 관점을 모두 수용할 수 있도록
개념, 인터페이스, 구현을 함께 드러내야 한다
그것이 변경에 유연하게 대응할 수 있는 객체지향 코드를
작성하는 가장 빠른 길이다