생각해보기
객체지향 사실과 오해 정리 -1- 본문
객체 지향의 목표는 실세계를 모방하는 것이 아니다. 새로운 세계를 창조하는 것이다.
객체 지향이 종종 실세계와 비교되는 것은 객체가 역할과 그에 대한 책임이 있으며 서로 협력하기 때문이다.
객체 지향의 가장 중요한 개념은 역할, 책임, 협력이다.
대부분의 문제는 개인보다는 다른 사람의 도움을 받아 해결한다. 우리는 가장 잘 해결해줄 것 같은 사람에게 도움을 요청한다. 요청받은 사람은 주어진 책임을 다하면서 요청에 응답한다. 우리는 이러한 요청과 응답을 통해 다른 사람과 협력한다. 협력의 성공은 요청을 받은 개인이 얼마나 요청을 성실히 이행했는지에 달려있다.
다른 사람과 협력하는 과정에서 특정한 역할을 부여받는다. 역할은 협력에 참여하는 사람이 협력안에서 차지하는 책임과 의무를 의미한다. 특정한 역할에는 특정한 책임이 있다. 협력이 잘 되기 위해서는 개인이 해야하는 역할이 잘 나눠져 있어야 하며 그 역할에 책임을 다해야 한다.
역할과 책임의 특징
- 여러 사람이 동일한 역할을 수행할 수 있다
- 역할은 대체 가능성을 의미한다
- 책임을 수행하는 방법은 자율적으로 선택할 수 있다
- 한 사람이 동시에 여러 역할을 수행할 수 있다
객체
객체 역시 역할과 책임이 있으며 서로 협력하여 기능을 구현한다. 위의 사람이 "객체"로, 요청을 "메시지"로, 요청을 처리하는 방법을 "메서드"로 바꿀 수 있다.
협력은 특정 목표를 이루기 위해 하는 것이다. 협력의 핵심은 특정한 책임을 수행하는 역할간에 연쇄적인 요청과 응답을 통해 목표를 달성하는 것이다. 목표는 협력으로 해결되며, 목표는 더 작은 책임으로 분할되고 책임을 수행하는 적절한 역할을 가진 사람에 의해 수행된다.
이처럼 애플리케션의 기능은 더 작은 책임으로 분할되고 책임은 적절한 역할을 수행할 수 있는 객체에 의해 수행된다. 객체는 다른 객체에게 도움을 요청할 수 있다. 따라서 객체지향 설계라는 것은 객체에게 적절한 역할과 책임을 할당하는 것부터 시작한다.
객체지향의 어플리케이션의 완성도를 결정하는 것은 협력이라면 협력이 얼마나 조화를 이루는지를 결정하는 것은 객체이다. 협력의 품질을 결정하는 것은 객체이다. 객체는 두 덕목을 갖추어야 하며 두 덕목 사이에서 균형을 유지해야 한다.
객체는 '협력적'이어야한다. 객체는 전지전능해야 하는 것이 아니며 각기 다른 역할을 맡은 객체와 협력해야 한다.
객체는 '자율적'이어야 한다. 객체는 스스로 결정하고 판단에 따라 행동해야 한다.
객체는 상태와 행동을 가지고 있으며 이를 통해 판단하고 스스로 결정한다. 객체의 자율성은 객체의 내부와 외부를 명확히 구분하는 것으로 나온다. 객체의 정보들은 보호되어야 하며 외부에서 접근이 허락된 수단으로 소통해야 한다. 객체는 요청 메시지가 들어왔을 때 특정 방법 즉 메서드로 처리하며 처리하는 과정은 자율적이어야 한다.
객체지향의 핵심은 다음과 같다.
- 객체지향이란 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고 객체를 이용해 시스템을 분할하는 방법이다.
- 자율적인 객체란 상태와 행위를 함께 지니며 스스로 자기 자신을 책임지는 객체를 의미한다
- 객체는 시스템의 행위를 구현하기 위해 다른 객체와 협력한다. 각 객체는 협력 내에서 정해진 역할을 수행하며 역할은 관련된 책임의 집합이다.
- 객체는 다른 객체와 협력하기 위해 메시지를 전송하고. 메시지를 수신한 객체는 메시지를 처리하는 데 적합한 메서드를 자율적으로 선택한다.
'객체지향' 카테고리의 다른 글
객체지향 사실과 오해 정리 -6- (0) | 2021.11.09 |
---|---|
객체지향 사실과 오해 정리 -5- (0) | 2021.11.09 |
객체지향 사실과 오해 정리 -4- (0) | 2021.11.05 |
객체지향 사실과 오해 정리 -3- (0) | 2021.11.04 |
객체지향 사실과 오해 정리 -2- (0) | 2021.11.01 |