티스토리 뷰
1. 협력하는 객체들의 공동체
객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다.
객체지향은 어떻게 표현해야하는가?
- 객체를 스스로 생각하고 스스로 결정하는 현실세계의 생명체에 비유하는 것은
- 상태와 행위를 '캡슐화'하는 소프트웨어 객체의 '자율성'을 설명한다.
- 현실 세계의 사람들이 암묵적인 약속기반으로 협력하며 목표를 달성해 나가는 과정은
- '메시지'를 주고 받으면서 공동의 목표를 달성하기 위한 '협력'하는 객체들의 관계를 설명한다.
요청과 응답으로 구성된 협력
- 스스로 해결하지 못하는 문제와 마주치면 문제 해결에 필요한 지식을 알고 있거나 서비스를 제공해줄 수 있는 사람에게 도움을 요청한다.
- 요청을 받은 사람은 주어진 책임을 다하면서 필요한 지식이나 서비스를 제공하는 것을 응답이라고 한다.
- 요청과 응답을 통해 다른 사람과 협력할 수 있는 능력은 복잡하고 거대한 문제를 해결할 수 있는 공동체를 형성할 수 있게 만든다.
역할과 책임
- 사람들은 다른 사람과 협력하는 과정 속에서 특정한 역할을 부여받는다.
- 역할이라는 단어는 의미적으로 책임이라는 개념을 내포한다.
- 결국, 특정한 역할은 특정한 책임을 암시한다.
객체의 역할 특징
- 여러 객체가 동일한 역할을 수행할 수 있다.
- 역할은 대체 가능성을 의미한다.
- 각 객체는 책임을 수행하는 방법을 자율적으로 선택할 수 있다.
- 하나의 객체가 동시에 여러 역할을 수행할 수 있다.
역할은 유연하고 재사용 가능한 협력관계를 구축하는데 중요한 설계 요소다. 대체 가능한 역할과 책임은 객체지향 패러다임의 중요한 기반을 제공하는 다형성과 깊이 연관 되어 있다.
객체의 덕목
- 객체는 충분히 '협력적'이어야 한다.
- 외부의 도움을 무시한 채 모든 것을 스스로 처리하려고 하는 전지전능한 객체(God Object)는 내부적인 복잡도에 의해 자멸하고 만다.
- 객체는 다른 객체의 명령에 복종하는 것이 아니라 요청에 응답할 뿐이다.
- 어떤 식으로 응답할지는 객체 스스로 판단하고 결정한다.
- 심지어 요청에 응할지 여부도 객체 스스로 결정 할 수 있다.
- 객체는 충분히 '자율적'이어야 한다.
- 객체 공동체에 속한 객체들은 공동의 목표를 달성하기 위해 협력에 참여하지만 스스로의 결정과 판단에 따라 행동하는 자율적인 존재다.
- 다른 객체와 조화롭게 협력할 수 있을 만큼 충분히 개방적인 동시에 협력에 참여한는 방법을 스스로 결정할 수 있을 만큼 충분히 자율적인 객체들의 공동체를 설계하는데 있다.
훌륭한 객체지향 설계자가 되기 위해 거쳐야 할 첫 번째 도전은 코드를 담는 클래스의 관점에서 메시지를 주고받는 객체의 관점으로 사고의 중심을 전환하는 것이다.
'개발 > 패러다임' 카테고리의 다른 글
[객체지향 사실과 오해] - 정리 5 (0) | 2019.12.19 |
---|---|
[객체지향 사실과 오해] - 정리 4 (0) | 2019.12.19 |
[객체지향 사실과 오해] - 정리 3 (0) | 2019.12.19 |
[객체지향 사실과 오해] - 정리 2 (0) | 2019.12.19 |