Book/『 객체지향의 사실과 오해 』
"객체지향의 사실과 오해" 역할, 책임, 협력의 중요성과 클래스와 객체의 오해
kanado
2024. 10. 12. 04:25
1. 역할, 책임, 협력의 중요성
책에서는 역할, 책임, 협력이 객체지향 설계의 핵심이라고 강조한다. 이는 소프트웨어뿐만 아니라 실세계에서도 여러 사람들이 서로의 역할과 책임을 바탕으로 협력하여 목표를 달성하는 것과 같다.
협력의 핵심은 특정한 책임을 수행하는 객체들 간의 연쇄적인 요청과 응답을 통해 목표를 달성하는 것이다. 객체지향 설계에서는 한 기능을 더 작은 책임으로 분할하고, 그 책임은 적절한 역할을 수행할 수 있는 객체에 의해 수행된다. 책임이 불분명한 객체는 잘 분할되지 않은 기능을 나타낸다.
2. 객체의 세 가지 필수 요소
객체지향의 아름다움을 결정하는 것이 협력이라면 협력이 얼마나 조화를 이루는지 결정하는 것은 객체이다. 객체는 다음 세 가지를 갖춰야 한다.
- 요청에 적절한 응답
- 자율성을 가지기 -> 자기 스스로 응답을 보내야한다.
- 행동을 하기 위해 필요한 상태를 알아야 한다.
3. 메시지와 메서드의 분리
메시지를 수신한 객체가 실행 시간에 메서드를 선택할 수 있다는 점은 객체지향 언어의 핵심적인 특징 중 하나다. 요청이 무엇인지 표현하는 메시지와 요청을 처리하기 위한 메서드를 분리하는 것은 객체의 자율성을 높이는 핵심 메커니즘이며 이는 캡슐화와 깊은 관련이 있다.
4. 클래스보다 객체
객체지향에서 중요한 것은 어떤 클래스가 필요한가가 아니라, 어떤 객체들이 어떤 메시지를 주고받으며 협력하는가다. 클래스는 객체들의 협력 관계를 코드로 옮기는 도구이고, 협력에 필요한 객체를 만드는 데 필요한 구현 메커니즘입니다. 따라서 중요한 것은 클래스들의 정적인 관계가 아니라, 메시지를 주고받는 객체들의 동적인 관계다.
끝.