협력은 요청과 응답들의 모임이다
어떠한 일을 수행하는 것을 협력이라고 하자. 이 일은 혼자서는 하지 못하고, 다양한 사람들의 힘을 합쳐야 한다. 이때, 이 사람들 사이에서는 수많은 요청과 응답이 있을 것이다. 객체지향도 이와 같다.
책임의 분류
어떠한 객체가 어떠한 요청에 대해 대답할 수 있거나, 적절한 행동을 해야 할 의무가 있다면 이를 책임을 가진다 고 한다. 책임은 객체지향 설계의 품질을 결정하는 가장 중요한 요소이다.
- 하는 것(doing)
- 객체를 생성하거나 계산을 하는 등의 스스로 하는 것
- 다른 객체의 행동을 시작시키는 것
- 다른 객체의 활동을 제어하고 조절하는 것
- 아는 것
- 개인적인 정보에 관해 아는 것
- 관련된 객체에 관해 아는 것
- 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것
객체가 지닌 책임의 집합으로, 객체의 역할을 암시할 수 있다.
ㄴ재판한다 등의 책임을 가진다면, 해당 객체는 판사라고 볼 수 있다.
어떤 객체가 어떤 책임을 가지고 어떤 방식으로 서로 협력해야 하는지에 대한 개요를 아는 것만으로도 충분하다.
협력의 추상화
역할의 가장 큰 가치는 하나의 협력 안에 여러 종류의 객체가 참여할 수 있게 함으로써 협력을 추상화할 수 있다는 것이다. 역할을 이용하면 협력을 추상화함으로써 단순화할 수 있다. 협력의 추상화를 통해 애플리케이션의 설계를 이해하고 기억하기 쉬워진다.
요약하면 역할의 대체 가능성은 행위 호환성을 의미하고, 행위 호환성은 동일한 책임의 수행을 의미한다.
'책 > 객체지향의 사실과 오해' 카테고리의 다른 글
5장 Part2. 인터페이스 (0) | 2025.01.01 |
---|---|
5장 Part1. 책임과 메시지 (1) | 2025.01.01 |
3장. 타입과 추상화 (0) | 2025.01.01 |
2장. 이상한 나라의 객체 (2) | 2025.01.01 |
1장. 협력하는 객체들의 공동체 (0) | 2025.01.01 |