2018-4-27 TIL 객체지향의 사실과 오해 Chapter1
협력하는 객체들의 공동체
객체지향에서 모든 과정 속에는 객체들 사이의 암묵적인 협력 관계가 존재를 한다. 예를들어 카페에서 주문을 하는 경우 캐시어, 바리스타, 손님사이의 암묵적인 협력관계들이 존재한다는 점이다.
- 객체와 객체사이에는 요청과 이에 반응을 하는 응답이 존재를 한다. 일상생활에서 스스로 해결하지 못하는 문제와 마주치면 문제 해결에 필요한 지식을 알고있거나 서비스를 제공해 주는 사람에게 도움을 요청한다. 이것을 요청이라고 한다.
- 요청을 받은 사람은 주어진 책임을 다하면서 필요한 지식이나 서비스를 제공한다. 이것을 응답이라고한다.
- 요청과 응답을 통해 다른 객체들과 협력한다.
객체는 특정한 역할을 부여받게 된다. 이 역할이라는 개념안에는 책임도 내포가 되어있다.
객체의 여러가지 역할
- 여러 사람이 동일한 역할을 수행할 수 있다 : 손님이 커피를 주문할때, 어떤 캐시어가 주문을 받든지 중요하지 않다. 그리고 캐시어가 바리스타에게 커피제조를 부탁하면 누가 제조를 하던 상관하지 않는다.
- 역할은 대체 가능성을 의미 : 손님입장에서는 캐시어는 대체가능(Substitutable)하다. 동일한 역할을 할 수 있는 캐시어가 2명이라고 하면 손님입장에서는 누가하던 별로 상관이 없다.
- 책임을 수행하는 방법은 자율적으로 선택 : 요청을 받은 사람들은 요청을 처리하는 방법을 자유롭게 선택할 수 있다. 동일한 요청에 대해 서로 다른 방식으로 응답할 수 있는 능력을 다형성이라고 한다.
- 객체가 협력에 참여하기 위해 어떤 행동을 해야 한다면 그 행동을 하는 데 필요한 상태도 함께 지니고 있어야 한다. 객체는 다른 객체가 ‘무엇(What)’을 수행하는지 알 수 있지만 ‘어떻게(How)’수행하는지에 대해선 알 수 없다.
- 자율성이란 자신의 상태를 직접 관리하고 상태를 기반으로 스스로 판단하고 행동할 수 있음을 의미한다.
협력과 메시지
- 흔히 객체의 세계를 인간세계와 비슷하다고 한다. 인간세계에서는 다양한 소통 방식이있지만, 객체의 세계에서는 한 가지 의사소통만이 존재를 한다. 이를 메세지라고한다.
- 객체가 수신된 메세지를 처리하는 방법을 메서드라고 한다.
- 바리스타로 전달된 커피 제조 요청은 메시지이고 커피를 제조하는 구체적인 방법은 메서드이다.
객체지향의 본질
- 객체지향이란 상호작용하는 자율적인 객체들의 공동체로 바라보고 이 객체를 이용해서 시스템을 분할한다.
- 자율적인 객체란 상태와 행위를 함께 지니며 스스로 자기 자신을 책임진다.
- 객체는 다른 객체와 협력한다.
- 객체는 다른 객체와 협력하기 위해 메세지를 전송하고, 메세지를 수신한 객체는 메세지를 처리하는 데 적합한 메서드를 자율적으로 선택한다.
맺으며
클래스의 구조와 메서드가 아니라 객체의 역할, 책임, 협력에 집중을 해야한다. 객체지향은 객체를 지향하는 것이지 클래스를 지향하는 것이 아니다.
Written on April 27, 2018