[객체지향의 사실과 오해] 2장 내용 정리
2021.07.13 - [IT 책 독서록] - [객체지향의 사실과 오해] 1장 내용 정리
[객체지향의 사실과 오해] 1장 내용 정리
객체지향 시스템은 자율적인 객체간의 협력으로 이루어진다. 협력을 구성하는 각 객체들은 각각의 역할이 있고 역할은 곧 책임을 의미한다. 실세계의 커피숍을 이와같은 관점으로보면 커피를
blog.robinjoon.space
객체는 구별가능한 식별자, 특징적인 행동, 변경가능한 상태를 가진다.
상태 : 특정 시점에 객체가 가지고있는 정보의 집합. 객체의 구조적 특징을 표현한다. 객체의 상태는 정적인 프로퍼티와 동적인 프로퍼티 값으로 구성된다.
프로퍼티 : 객체의 상태를 구성하는 모든 특징. 단순한 값인 속성과 다른 객체를 참조하는 링크로 부분된다. ex) 사람의 키, 몸무게
프로퍼티 값 : 객체의 상태를 구성하는 값. ex) 170cm, 70kg
객체의 상태는 다른 객체가 직접적으로 접근할 수도, 변경할수도 없어야한다. 즉, 캡슐화되어야 한다.
행동 : 외부의 요청 또는 수신된 메시지에 응답하기위해 동작하고 반응하는 활동. 행동의 결과로 객체는 자신의 상태를 변경하거나 다른 객체에게 메시지를 전달할 수 있다. 객체는 행동을 통해 다른 객체와 협력하므로 행동은 외부에 가시적이어야 한다.
상태와 행동은 다음과 같은 관계가 있다.
- 객체의 행동은 상태에 영향을 받는다
- 객체의 행동은 상태를 변경시킨다.
따라서 행동은 상태를 이용해 두 관점으로 서술할 수 있다.
- 행동이 현재의 상태에 어떤 방식으로 의존하는가
- 행동이 어떻게 현재의 상태를 변경시키는가
객체가 행동을 하는 것은 외부로부터 메시지를 받았기 때문이다. 즉 행동은 메시지를 처리하기 위한 것이다.
객체가 행동을 할 때 자신의 상태뿐 아니라 다른 객체의 상태를 변경시켜야 할 때도 있다. 즉, 행동의 결과로 다른 객체에게 메시지를 전송할 수도 있다. (물론, 메시지를 수신한 객체가 상태를 변경할지 말지 결정한다.)
캡슐화 : 객체는 상태를 감춰둔 채 외부로 노출하지 않는다. 객체가 외부에 노출하는 것은 행동뿐이며, 외부에서 객체에 접근할 수 있는 유일한 방법 역시 행동뿐이다.
캡슐화를 통해 객체의 자율성을 높이고 협력을 단순하고 유연하게 만들수 있다.
식별자 : 어떤 객체를 다른 객체와 구분하는데 사용하는 프로퍼티.
결론적으로 객체는 다음 특성을 가진다.
1. 객체는 상태를 가지며 상태는 변경 가능하다.
2. 객체의 상태를 변경시키는 것은 객체의 행동이다.
3. 행동의 결과는 상태에 의존적이며 상태를 이용해 서술할 수 있다.
4. 행동의 순서가 실행결과에 영향을 미친다.
5. 객체는 어떤 상태에 있어도 유일하게 식별가능하다.
객체를 바라볼 때 상태를 중심으로 바라보는게 아니라 행동을 중심으로 바라봐야 한다.
객체지향은 객체들간의 협력이고, 객체가 협력에 참여하는 방법은 상태가 아니라 행동에 있기 때문이다.
협력안에서 객체의 행동은 결국 객체의 책임을 의미한다. 따라서 어떤 책임이 필요한가를 결정하는 과정이 전체 설계를 주도해야 한다. 이를 책임 주도 설계(RDD)라 한다.
객체지향은 현실세계의 모방이 아니다. 객체지향은 현실세계의 은유다. 현실속에서는 수동적인 존재가 소프트웨어 객체로 구현될 때에는 능동적으로 변한다. 즉, 의인화된다.