반응형
객체
- 하나의 개별적인 실체로 식별 가능한 물리적인 또는 개념적인 사물은 어떤 것이라도 객체가 될 수 있음
- 객체는 변경 가능한 상태, 특징적인 행동, 구별 가능한 식별자를 가지며,
객체는 저장된 상태와 실행가능한 코드를 통해 구현된다.
상태
- 특정 시점에 객체가 가지고 있는 정보의 집합
- 상태를 이용하면 과거의 모든 행동 이력을 설명하지 않고도 현재를 기반으로 객체의 행동 방식을 이해하고 행동의 결과를 쉽게 예측하고 설명할 수 있음
- 모든 객체의 상태는 단순한 값과 객체의 조합으로 표현할 수 있다.
- 객체의 상태 = 프로퍼티 + 프로퍼티 값
- 프로퍼티
- 객체의 상태를 구성하는 모든 특징
- 프로퍼티는 정적 (변경되지 않고 고정됨)
- 프로퍼티 값(property value)은 동적 (시간이 흐름에 따라 변경됨)
- 객체의 프로퍼티 = 속성(단순한 값) + 링크 (다른 객체를 참조하는 것)
- 링크
- 객체와 객체 사이의 의미 있는 연결 (링크카 존재해야만 요청을 보내고 받을 수 있음)
- 객체가 다른 객체를 참조할 수 있다는 것을 의미
- 객체는 다른 객체의 상태에 직접적으로 접근하거나 변경시킬 수 없다. (자율성)
∴ 객체 스스로 자신의 상태를 책임져야 함 (스스로의 행동에 의해서만 상태가 변경됨)
객체지향 : 상태와 행동을 하나의 단위로
상태와 행동
- 행동 : 외부의 요청 또는 수신된 메시지에 응답하기 위해 동작하고 반응하는 활동
- 객체가 취하는 행동의 결과로 객체는 자신의 상태를 변경시키거나 다른 객체에게 메시지 전달할 수 있음 (= 행동이 부수효과 초래)
- 객체의 행동은 객체의 상태를 변경시키지만, 행동의 결과는 객체의 상태에 의존적
협력과 행동
- 객체가 어떤 행동을 하도록 만드는 것은 객체가 외부로부터 수신한 메시지임
- 객체는 수신된 메시지에 따라 적절히 행동하면서 협력에 참여하고,
그 과정에서 자기 자신의 상태뿐만 아니라 다른 객체의 상태 변경을 유발할 수도 있음
상태 캡슐화
- 객체가 외부에 노출하는 것은 행동뿐이며, 외부에서 객체에 접근할 수 있는 유일한 방법 역시 행동
- 객체의 행동을 유발하는 것은 외부로부터 전달된 메시지 but, 객체의 상태 변경 여부는 객체 스스로 결정
식별자
- 식별자 : 객체를 서로 구별할 수 있는 특정한 프로퍼티
- 모든 객체는 식별자를 가지며, 식별자를 이용해 객체 구별 가능
- 객체가 가지는 프로퍼티 타입 = 단순한 값 or 객체
값 | 객체 |
식별자를 가지지 않음 | 식별자를 가짐 (어떤 상태에 있더라도 식별 가능) |
불변 상태 (변하지 않는 양 모델링) | 가변 상태 (상태를 가지며 상태 변경 가능) |
동등성 (equality) : 두 인스턴스의 상태가 같다면 두 인스턴스를 같은 것으로 판단 |
동일성 (identical) : 두 객체가 다르더라도 식별자가 같다면 두 객체를 같은 객체로 판단 |
행동이 상태를 결정한다
- 객체의 상태를 변경시키는 것은 객체의 행동이며,
행동의 결과는 상태에 의존적이고 상태를 이용해 설명할 수 있으며
헹동의 순서가 실행 결과에 영향을 미침
잘못된 설계 방법
- 객체에 필요한 상태가 무엇인지 결정하고,
그 상태에 필요한 행동을 결정 - 문제점 : 캡슐화↓, 재사용성↓, 협력↓
올바른 설계 방법
- 책임-주도 설계 (Responsibility-Driven Design, RDD)
⇒ 협력의 문맥에서 객체의 행동을 생각하도록 함 ⇒ 응집도↑, 재사용성↑ - 애플리케이션에 필요한 협력을 생각하고,
협력에 참여하는 데 필요한 행동을 생각한 후,
행동에 필요한 정보가 무엇인지를 고려하여 필요한 상태를 결정
반응형
'개발 도서 > 객체지향의 사실과 오해' 카테고리의 다른 글
[객체지향의 사실과 오해] 06장 : 객체 지도 (0) | 2023.03.31 |
---|---|
[객체지향의 사실과 오해] 05장 : 책임과 메시지 (0) | 2023.03.13 |
[객체지향의 사실과 오해] 04장 : 역할, 책임, 협력 (1) | 2023.03.13 |
[객체지향의 사실과 오해] 03장 : 타입과 추상화 (0) | 2023.03.13 |
[객체지향의 사실과 오해] 01장 : 협력하는 객체들의 공동체 (0) | 2023.03.13 |