객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 개발자의 역할은 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다.
객체를 스스로 생각하고 스스로 결정하는 현실 세계의 생명체에 비유하는 것은 상태와 행위를 ‘캡슐화’하는 소프트웨어 객체의 ‘자율성’을 설명하는 데 효과적이다. 사람들이 목표를 달성해 나가는 과정은 ‘메시지’를 주고 받으며, 목표를 달성하기 위해 ‘협력’하는 객체들의 관계를 설명하는 데 적합하다.
실세계의 사물을 기반으로 sw 객체를 식별하고 구현까지 이어간다는 개념은 객체지향 설계의 핵심 사상인 ’연결완전성’을 설명하는 데 적합한 틀을 제공한다.
객체지향을 설명할 때, 실세계의 모방이라는 개념을 포기하지 못하는 이유는 이해하기 너무 쉽기 때문이다.
객체지향에서 가장 중요한 개념 세 가지
<aside> ❓ 예시 커피 주문이라는 협력에 주문된 커피가 손님에게 정확하게 전달될 수 있도록 역할과 책임을 다한다. 덜컹거리는 차를 정비하기 위해 들른 정비소, 주린 배를 채우기 위해 들어간 식당, 사람이 사는 곳이라면 어디서나 역할, 책임, 협력이 존재한다.
</aside>
request와 response을 통해 다른 사람과 협력할 수 있는 능력은 복잡한 문제를 해결할 수 있는 공동체를 형성할 수 있게 해준다.
사람들이 협력을 위해 특정한 역할을 맡고 역할에 적합한 책임을 수행한다는 사실은 몇가지 중요한 개념을 제시한다.
사람이란 단어를 객체로, client의 요청을 메시지로, client가 요청을 처리하는 방법을 메서드로 → 객체지향
객체지향 설계라는 에술은 적절한 객체에게 적절한 책임을 할당하는 것에서 시작된다. 객체의 역할은 다음과 같은 특징을 갖는다