728x90
반응형
객체 설계시 주의해야할 점
- 객체지향에 갓 입문한 사람들이 가장 쉽게 빠지는 함정은 상태를 중심으로 객체를 설계하는 것이다.
- 보통 먼저 객체에 필요한 상태가 무엇인지 결정한 후 그 상태에 필요한 행동을 결정을 하게 된다.
- 자동차에는 연료량과 바퀴를 가지고 있다 → 자동차가 달리면 연료량이 줄어든다.
이렇게 상태를 먼저 결정하고 행동을 나중에 결정한다면 설계에 나쁜 영향을 주게 되는데..
첫째, 상태를 먼저 결정할 경우 캡슐화가 저해된다.
- 상태에 초점을 맞출 경우 상태가 객체 내부로 깔끔하게 캡슐화되지 못하고 공용 인터페이스에 그대로 노출되버릴 확률이 높아진다.
둘째, 객체를 협력자가 아닌 고립된 섬으로 만든다.
- 객체가 필요한 이유는 애플리케이션 문맥내 다른 객체와 협력하기 위함이다. 상태를 먼저 고려하는 방식은 협력이라는 문액에서 멀리 벗어난 체 객체를 설계하게 함으로써 자연스럽게 협력에 적합하지 못한 객체를 창조한다.
셋째, 객체의 재사용성이 저하된다.
- 객체의 재사용성은 다양한 협력에 참여할 수 있는 능력에서 나온다. 상태에 초점을 맞춘 객체는 다양한 협력에 참여하기 어렵기 때문에 재사용성이 저하될 수 밖에 없다.
즉, 상태보다는 행동에 초첨을 두어야 한다.
- 객체는 다른 객체와 협력하기 위한 존재이며, 객체의 행동은 객체가 협력에 참여하는 유일한 방법이다.
- 우리는 협력의 문맥에 맞는 적절한
행동
을 수행하는 객체를 창조해야한다.
만약, A 라는 기능을 구현해라라는 업무가 주어진다면?
- A 라는 기능에 필요한 협력을 생각한다.
- 협력에 참여하는 데 필요한 행동들을 생각한다.
- 행동을 수행할 객체를 선택한다.
행동을 결정한 후에야 행동에 필요한 정보가 무엇인지를 고려하게 되며 이 과정에서 필요한 상태가 결정된다. 먼저 객체의 행동을 결정하고 그 후에 행동에 적절한 상태를 선택하게 된다.
행동이 상태를 결정한다.
728x90
반응형
'프로그래밍 노트 > 객체지향프로그래밍' 카테고리의 다른 글
[객체지향] 객체의 역할, 책임, 협력 (0) | 2022.09.07 |
---|---|
[객체지향] 추상화에 대해서 (0) | 2022.09.07 |
[객체지향] 객체지향 프로그래밍에서 객체란 무엇을 뜻하는 것일까? (0) | 2022.09.02 |
[객체지향] 타입과 추상화 (0) | 2020.02.03 |
[객체지향] 이상한 나라의 객체(객체지향세계에서의 객체) (0) | 2020.01.29 |