객체지향에 대해 아무것도 모르던 시절 이 책을 읽었다. 비유되는 이야기들은 흥미롭게 읽어나갔고 이야기를 설명하는 부분은 낯설었다. 객체지향을 몰라도 가볍게 읽을 수도 있는 책이었다. 최근 이 책을 다시 보며 느낀 건 아는 만큼 보인다였다. 한번 보았던 비유되는 이야기들은 이미 기억이 되어 빠르게 읽을 수 있었고, 뒤 설명하는 부분은 머리속에 코드를 상상하며 읽을 수 있었다. 이번엔 책을 정리하면서 읽으려 하고 올 겨울 이 책을 한 번 더 주행할 예정이다.

협력하는 객체들의 공동체

객체지향은 실세계를 모방하는 것이 아니다. 새로운 세계를 창조하는 것이다. 실세계와 비교하는 것은 객체지향을 이해하기 위한 보조수단으로 생각하자.

역할과 책임 그리고 협력

카페에 가서 커피를 주문하는 과정을 상상해보자. 고객은 캐셔에게 음료를 주문한다. 캐셔는 주문 받은 음료를 바리스타에게 알려준다. 바리스타는 음료를 만들어 고객에게 제공한다. 고객은 구매한 음료를 만든다.

위 문장안에서 커피주문이라는 협력에 참여한 고객, 캐셔, 바리스타는 각자의 역할에 책임을 다한다. 위 상황뿐 아니라 다른 사람과 접촉하는 모든 곳에 존재한다.

<aside> 💡 손님—-(커피를 주문한다)—→ 캐셔 —-(커피를 제조하라)—→ 바리스타

</aside>

손님은 캐셔에게 커피 주문을 요청한다.

캐셔는 주문을 받고 바리스타에게 커피제조를 요청한다.

바리스타는 요청받은 음료를 완성하고 캐셔에게 완성했다고 응답한다.

캐셔는 음료가 완성됐으므로 진동벨을 울려 손님의 요청에 응답한다.

요청을 하면 응답을 한다.

요청이 연이어 발생하면 응답요청의 반대 방향으로 연쇄적으로 전달된다.