앨리스의 상태를 결정하는 것은 행동이지만 행동의 결과를 결정하는 것은 상태다.
앨리스의 키를 결정하는 것 케이크 먹기와 부채질하기가 있다.
따라서 앨리스가 한 행동의 결과는 앨리스의 상태에 의존적이다.
- 앨리스는 상태를 가지며 상태는 변경 가능하다.
- 앨리스의 상태를 변경시키는 것은 앨리스의 행동이다.
- 앨리스는 어떤 상태에 있더라도 유일하게 식별 가능하다.
상태
어떤 행동의 결과는 과거에 어떤 행동들이 일어났었느냐에 의존
지난 많은 행동들을 토대로 결과를 판단하는 것은 너무 어렵기 때문에 결과를 쉽게 예측할 수 있는 상태라는 개념을 고안
프로퍼티와 프로퍼티 값
프로퍼티 : 객체의 상태를 구성하는 모든 특징이며, 변경되지 않고 고정되기 때문에 정적이다.
프로퍼티 값 : 시간이 흐름에 따라 변경되기 때문에 동적이다.
링크를 통해 메시지를 주고받는 것
== 객체가 다른 객체를 참조하는 것
== 한 객체가 다른 객체의 식별자를 알고 있다는 것
행동
객체는 스스로의 행동에 의해서만 상태가 변경된다.
why? 객체의 자율성을 유지하기 위해
- 객체의 행동은 상태에 영향을 받는다.
- 객체의 행동은 상태를 변경시킨다.
협력과 행동
객체가 어떤 행동을 하도록 만드는 것은 다른 객체의 메시지 때문이다.
이 메시지를 받고 객체는 적절히 행동하면서 협력에 참여하고, 본인의 상태를 변경한다.
객체는 행동을 통해 다른 객체와의 협력에 참여하므로 행동은 외부에 가시적이어야 한다.
상태 캡슐화
앨리스 객체의 키를 작게 만드는 것이 앨리스 자신인 것처럼 음료 객체의 양을 줄이는 것도 음료여야 한다.
- 음료에게 자신이 음료를 마셨다는 메시지를 전송
- 음료 양을 줄이는 것은 메시지를 받은 음료 스스로의 몫
캡슐화를 해야 하는 이유
- 객체의 자율성을 높임
- 협력을 단순하고 유연하게 만듦
식별자
객체가 식별 가능하다는 것 == 서로 구별할 수 있는 특정한 프로퍼티가 객체 안에 존재한다는 것
그리고 해당 프로퍼티를 "식별자"라고 한다.
값 vs 객체
값은 식별자를 갖지 않지만, 객체는 식별자를 가진다. 이것이 가장 큰 차이점이다.
객체는 시간에 따라 변경되는 상태를 포함하며, 행동을 통해 상태를 변경한다.
때문에 타입이 같은 두 객체의 상태가 완전히 똑같더라도 식별자를 통해 별개의 객체로 다뤄야 한다.
- 객체는 상태를 가지며 상태는 변경 가능하다.
- 객체의 상태를 변경시키는 것은 객체의 행동이다.
- 객체는 어떤 상태에 있더라도 유일하게 식별 가능하다.
행동이 상태를 결정하다
객체는 다른 객체와 협력하기 위해 존재한다. 객체의 행동은 객체가 협력에 참여하는 유일한 방법이다.
행동을 결정한 후에 행동에 필요한 정보가 무엇인지를 고려하게 되며 이 과정에서 필요한 상태를 결정해야 한다.
'Book > 객체지향의 사실과 오해' 카테고리의 다른 글
[객체지향의 사실과 오해] 05장 책임과 메시지 (0) | 2023.07.24 |
---|---|
[객체지향의 사실과 오해] 04장 역할, 책임, 협력 (0) | 2023.07.24 |
[객체지향의 사실과 오해] 03장 타입과 추상화 (0) | 2023.07.24 |
[객체지향의 사실과 오해] 01장 협력하는 객체들의 공동체 (0) | 2023.07.15 |