객체, 그리고 소프트웨어 나라

객체는 상태(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