객체지향의 사실과 오해-4 상태

상태가 필요한 이유

Posted by Warner on September 1, 2021

그렇다면 객체는 왜 상태가 필요할까?

ex)

  1. 텔레비전 전원을 켜지 않는 한 채널을 변경할 수 없다.
  2. 여자친구와 드라이브를 하려면 먼저 자동차의 시동을 걸어야 한다.
  3. 엘리베이터가 움직이기 위해서는 먼저 원하는 층의 버튼을 눌러야 한다.

예시의 공통점은 어떤 행동의 결과는 과거에 어떤 행동들이 일어났었느냐에 의존한다는 것이다.


앨리스가 문을 통과하기 까지 과거의 모든 행동을 설명하기는 매우 어렵다.

따라서 인간은 행동의 과정과 결과를 단순하게 기술하기 위해 상태라는 개념을 고안했다.


앨리스 이야기에서 나온 앨리스, 음료, 토끼, 케이크, 부채, 버섯, 문 모두 객체이다.
뚜렷한 경계를 가지며 식별가능하고 상태와 행동을 지니고 있다.

앨리스의 ‘키’‘위치’는 객체가 아니다.

음료와 케이크의 ‘양’ 도 객체가 아니다.

문이 열려있는지 ‘여부’ 는 객체가 아니다.

토끼가 달려가는 ‘속도’ 도 객체가 아니다.

숫자,문자열,양,속도,시간,날짜,참/거짓은 상태를 표현하기 위한 수단이다.

object4.png

객체와 상태를 구성하는 모든 특징을 통틀어 프로퍼티(property) 라고 한다.
앨리스의 경우 키, 위치, 음료가 앨리스의 프로퍼티이다.

반면 프로퍼티 값(property value)은 시간이 흐름에 따라 변화된다.
앨리스의 키는 음료를 마시면 변화된다.
문을 통과하면 위치가 바뀐다.
음료를 다 마시면 음료를 버릴것 이다.

객체 사이에는 연결하는 선을 링크(link) 라고 부르며 링크가 있어야 서로 요청을 보내고 받을 수 있다.
앨리스의 키, 위치와 같이 객체를 구성하는 단순한 값은 속성(attribute) 라고 한다.
따라서 프로퍼티(property)는 속성과 링크로 표현할 수 있다.


객체는 자율적인 존재이다!
객체지향의 세계에서 객체는 다른객체의 상태에 직접적 접근도 상태를 변경할 수도 없다.
객체는 스스로 자신을 책임져야한다.
그렇기 때문에 외부에서 간접적으로 객체의 상태를 변경 또는 조회할 방법이 필요하다.
이 시점에서 상태와 상태를 조작하기 위한 행동이 등장한다.