시너지를 생각하라. 전체는 부분의 합보다 크다. - 스티븐 코비

서론

객체지향이란...? 실제 세계를 모델링하여 소프트웨어를 개발하는 방법

→ 객체지향 소프트웨어는 실세계의 투영, 객체란 현실에 존재하는 사물에 대한 추상화

객체지향의 목표는 실세계를 모방하는 것이 아닌, 새로운 세계를 창조하는 것.

현실 세계 생명체의 자아 = 객체의 자율성 (상태와 행위 캡슐화)

현실 세계의 생명체 ⇒ 암묵적인 약속과 명시적인 계약을 기반으로 협력

소프트웨어의 객체 ⇒ 메시지를 주고 받으며 공동의 목표를 달성하기 위해 협력

→ 객체 지향 설계의 핵심 사상인 '연결완전성(seamlessness)'를 설명하는데 적합한 틀 제공


1. 협력하는 사람들

커피 공화국의 아침

등장 인물 : 손님, 캐시어, 바리스타

손님은 커피를 주문하고, 캐시어는 주문을 받고, 바리스타는 커피를 제조