객체, 그리고 소프트웨어 나라
객체는 상태(state), 행동(behavior), 식별자(identity)를 지닌다.
1. 상태
상태를 이용하면 과거에 얽매이지 않고 현재를 기반으로 객체의 행동 방식을 이해할 수 있다.
상태는 근본적으로 세상의 복잡성을 완화하고 인지 과부하를 줄일 수 있는 중요한 개념이다.
객체의 상태를 구성하는 모든 특징을 통틀어 객체의 프로퍼티(property)라고 한다.
ex) 앨리스의 키, 위치, 음료
→ 일반적으로 프로퍼티는 변경되지 않고 고정되기 때문에 정적이다.
→ 반면 프로퍼티 값(property value) 은 시간이 흐름에 따라 변경되기 때문에 동적이다.
ex) 키의 값, 위치(장소)의 값, 음료의 양
객체와 객체 사이의 의미 있는 연결을 링크(link)라고 한다.
객체와 객체 사이에는 링크가 존재해야만 요청을 보내고 받을 수 있다.
즉, 객체의 링크를 통해서만 메시지를 주고받을 수 있다.
객체 간의 선으로 표현되는 링크와 달리 객체를 구성하는 단순한 값은 속성(attribute)이라고 한다.
ex) 앨리스의 키의 값, 앨리스의 위치의 값
→ 객체의 프로퍼티는 단순한 값인 속성, 다른 객체를 가리키는 링크, 두 가지 종류의 조합으로 표현.
2. 행동
-객체가 취하는 행동은 객체 자신의 상태를 변경시킨다.
-객체의 행동에 의해 객체의 상태가 변경된다는 것은 행동이 부수 효과(side effect)를 초래한다는 것을 의미.
3. 식별자
값(value)은 숫자, 문자열, 날짜, 시간, 금액 등과 같이 변하지 않는 양을 모델링한다.
흔히 값의 상태는 변하지 않기 때문에 불변 상태(immutable state)를 가진다고 말한다.
객체는 시간에 따라 변경되는 상태를 포함하며, 행동을 통해 상태를 변경한다.
→ 따라서 객체는 가변 상태(mutable state)를 가진다고 말한다.
동등성(equality)은 상태를 이용해 두 값이 같은지 판단할 수 있는 성질을 말한다.
값이 같은지 여부는 상태가 같은지를 이용해 판단한다.
→ 값의 상태가 같으면, 두 인스턴스는 동일한 것으로 판단한다.
→ 값의 상태가 다르면, 두 인스턴스는 다른 것으로 판단한다.
동일성(identical)은 식별자를 기반으로 두 객체가 같은지 판단할 수 있는 성질을 말한다.
두 객체의 상태가 다르더라도 식별자가 같다면, 두 객체를 같은 객체로 판단할 수 있다.
참조 객체(reference object), 또는 엔티티(entity)는 식별자를 지닌 전통적인 의미의 객체를 가리킨다.
값 객체(value object)는 식별자를 가지지 않는 값을 가리키는 용어다.
Last updated