- 실세계의 모방이라는 개념은 아쉽게도 객체지향의 기반을 이루는 철학적인 개념을 설명하는데 적합하지만, 유연하고 실용적인 관점에서 객체지향 분석, 설계를 설명하기엔 적합하지 않다.
- 대다수의 개발자들은 객체지향 애플리케이션이 실세계를 모방해야 한다는 설명을 전혀 납득하지 못한다.
- 객체지향의 목표는 실세계를 모방하는 것이 아니라 새로운 세계를 창조하는 것이다.
- 소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니라 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다.
- 버트란드 마이어는 “소프트웨어 시스템이 해결하고자 하는 실재는 잘해봐야 먼 친척 밖에는 되지 않는다.” 는 말로 소프트웨어의 세계와 실세계 사이의 거리를 잘 표현하고 있다.
- 실세계의 모방이라는 객체지향의 개념은 훌륭한 프로그램을 설계하고 구현하는 실무적인 관점에선 부적합하지만, 객체지향이라는 용어에 담긴 기본 사상을 이해하고 학습하는데 매우 효과적이다.
- 그래서 이번 쳅터에선 객체지향에 관한 기본적인 내용을 설명하고자 잠시 동안만 실세계의 모방이라는 과거의 인습에 얽매일 예정이다.
협력하는 사람들
커피 공화국의 아침
- 커피 주문점에 모든 음료 주문은 손님이 커피를 주문하고, 캐시어가 주문 받고, 바리스타가 커피를 제조하는 과정을 거친 후에야 완료된다.
- 커피를 주문하고 제조하는 과정은
역할,
책임
,협력
이라는 사람의 일상 속에 항상 스며들어 있는 세 가지 개념이 한데 어울려 조화를 이루며 만들어 낸 것이다. - 모든 과정 속엔 손님, 캐시어, 바리스타 사이의 암묵적인
협력
관계가 존재한다.- 커피를 주문하는 손님, 주문을 받는 캐시어, 커피를 제조하는 바리스타라는
역할
이 존재하기에 모든 회사원들이 아침에 모닝커피를 원활히 누릴 수 있는 것이다. - 손님, 캐시어, 바리스타는 부문한 커피를 손님에게 제공하기 위해 협력하는 과정에서 자신이 맡은 바에
책임
을 다한다. 손님은 카페인을 채우기 위해 커피를 주문할책임
을 수행한다. 캐시어는 손님의 주문을 받는책임
을 성실히 수행한다. 바리스타는 주문된 커피를 제조하는책임
을 수행한다.
- 커피를 주문하는 손님, 주문을 받는 캐시어, 커피를 제조하는 바리스타라는
- 위에서 언급되는
역할,
책임
,협력
은 객체지향에서 가장 중요한 개념 세 가지이다.