이 책을 선택한 이유
- 자바 객체지향 관련된 책으로 워낙 유명한 책이고,
또 이동욱님이 블로그에서 언급하신 것을 보고 구입했다.
배운 점
01 협력하는 객체들의 공동체
- 소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니라
고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다.
-> 신세계를 창조한다는 것이 뭘까?
결국은 소프트웨어의 세계는 그것만의 규칙에 따라 운용되는 것이라고 볼 수 있다.
- 객체지향의 근본 개념은 실세계에서 사람들이 타인과 관계를 맺으며,
협력하는 과정과 유사함
-> 객체간의 협력, 그리고 원활한 협력을 정의하는 것이 객체지향의 핵심이다.
- 클래스가 객체지향 프로그래밍 언어의 관점에서 매우 중요한 구성요소인 것은 분명하지만,
객체지향의 핵심을 이루는 중심 개념이라고 말하기에는 무리가 있다.
-> 클래스는 객체를 생성하기 위한 틀을 정의한 것이고,
핵심은 객체 간의 협력, 그리고 그 협력을 정의하는 것이다.
- 훌륭한 객체지향 설계자가 되기 위해 거쳐야 할 첫 번째 도전은
코드를 담는 클래스의 관점에서 메시지를 주고 받는 객체의 관점으로
사고의 중심을 전환하는 것이다.
02 이상한 나라의 객체
- 객체지향에 갓 입문한 사람들이 가장 쉽게 빠지는 함정은 상태를 중심으로 객체를 바라보는 것이다.
초보자들은 먼저 객체에 필요한 상태가 무엇인지를 결정하고,
그 상태에 필요한 행동을 결정한다.
- 협력에 참여하는 훌륭한 객체 시민을 양성하기 위한 가장 중요한 덕목은
상태가 아니라 행동에 초점을 맞추는 것이다.
객체는 다른 객체와 협력하기 위해 존재한다.
-> 객체는 '행위'를 한다. 따라서 객체가 '어떤' 행위를 '누구'와 하느냐를 정의하는 것이
곧 객체지향의 설계이다.
- 흔히 객체지향을 현실 세계의 추상화라고도 하는데, 그 안에는 현실 세계를 모방해서
단순화한다는 의미가 숨어 있다.
여기서 추상화(abstraction)란 실제의 사물에서
자신이 원하는 특성만 취하고 필요 없는 부분을 추려 핵심만 표현하는 행위를 말한다.
-> 객체를 정의하는 것의 전제는 객체는 '추상화'된 대상이라는 것이다.
'책' 카테고리의 다른 글
테크니컬 리더 - 서문 (0) | 2022.05.05 |
---|---|
스프링 입문을 위한 자바 객체지향의 원리와 이해 리뷰(2) (3~5장) (0) | 2022.04.26 |
스프링 입문을 위한 자바 객체 지향의 원리와 이해 리뷰(1) (1~2장) (1) | 2022.04.26 |