티스토리 뷰

반응형

객체란, 상태, 행동, 식별자

  • 객체의 행동의 결과는 상태에 영향을 받고, 객체는 유일하게 식별이 가능하다.
    • 한 객체에서 상태가 다르면 같은 행동이라도 행동의 결과는 달라지지만 여전히 식별 가능한 객체이다.
    • Ex. 앨리스의 키는 현재 상태에 따라 매우 커질수도 있고, 매우 작아질수도 있으나, 앨리스는 여전히 앨리스이다.

 

상태

  • 상태를 알면 행동의 결과를 쉽게 예측할 수 있다.
  • 객체의 상태는 정적인 프로퍼티(변하지 않는 상태), 동적인 프로퍼티(시간에 따라 변하는 상태)로 구성된다.
  • 객체의 프로퍼티
    • 객체를 구성하는 단순한 값인 속성과 객체와 객체를 연결하는 링크의 조합을 말한다.
  • 객체는 스스로의 행동에 의해서만 상태가 변경된다.
    • 즉, 외부의 객체 메시지를 통해 객체 스스로가 메시지를 참고하여 상태를 변경하는 것이다.

 

행동

  • 객체의 상태를 변경하는 것은 객체의 자발적인 행동뿐이다. (메시지를 받아 상태가 변경되는 것도 결국 객체의 자발적인 행동에 의해 변경되는 것이다.)

  • 행동과 상태

    • 행동과 상태의 조합으로 행동을 우아하게 표현할 수 있다.
    • 현재 행동의 결과를 확인할 때, 과거의 행동을 돌아볼 필요 없이 상태를 이용하면 결과를 쉽게 확인할 수 있다.
    • Ex. 앨리스의 키가 40cm이면 문을 통과할 수 있다.
  • 협력과 행동

    • 객체의 행동은 두 가지 관점에서 살펴볼 수 있다.
    • 첫번째로, 객체 자신의 상태 변경
    • 두번째로, 협력하는 다른 객체에 대한 메시지 전송
  • 상태 캡슐화

    • 메시지 송신자는 메시지 수신자의 상태 변경에 대해서는 전혀 알지 못한다. 그저 그러기를 바라고 전달할 뿐이다.
    • 상태를 외부에 노출시키지 않고 행동을 통해 캡슐화하는 것이다. (객체의 자율성을 높인 것이다.)
    • 자율적인 객체는 스스로 판단하고 스스로 결정하기 때문에 자율성이 높아지고 객체의 지능도 높아진다.
    • 객체의 지능이 높아진다는 것은, 협력하는 과정이 유연하고 간결해진다는 결과를 도출한다. 즉, 이것이 상태 캡슐화의 이유이다.

 

식별자

  • 객체가 식별가능하다는 것은 객체를 서로 구별할 수 있는 특정 프로퍼티가 객체 안에 존재하다는 것이다.
  • 객체와 값의 가장 큰 차이는 값은 식별자를 가지지 않지만, 객체는 식별자를 가진다는 점이다.
  • 값과 객체
    • 값(Integer, String)의 경우 불변상태이므로 두 인스턴스의 상태가 같으면 두 인스턴스는 동등하다고 본다.
    • 객체의 경우 시간에 따라 변경되는 가변상태이므로 타입이 같은 두 객체의 상태가 같더라도 동등하다고 볼 수 없고, 상태가 다른데도 동일한 객체라고 볼 수있다.
      • Ex. 이름이 같고, 나이가 같은 두 사람이 함께 있더라도 둘은 명백히 다른 사람이다.
      • Ex. 10년전의 나와 10년 후의 나는 상태가 다르지만 결국 동일한 사람이다.
  • 여기에서 말하는 것은, 상태를 기반으로 객체의 동일성을 판단할 수 없다는 것이다. 즉, 객체는 식별자에 의해서만 동일성을 검사할 수 있는 것이다.

 

행동이 상태를 결정한다.

  • 상태를 먼저 결정하고 행동을 결정하는 것은 설계에 나쁜영향이 끼친다.
  • 그 이유를 살펴보자
    • 첫번째, 상태를 먼저 결정할 시 캡슐화가 저해된다.(상태가 외부에 노출하는 상황)
    • 두번째, 객체가 협력자가 아닌 고립된 섬이 된다.
    • 세번째, 재사용성이 저하된다.(협력을 하지 못하므로)

 

객체지향 세계와 현실 세계

  • 객체지향 세계는 현실 세계를 추상화한 것이 아니라, 새로운 세계를 가지고 있되, 현실보다 더 많은 특징과 능력을 보유한 객체가 존재하는 것이다.
  • 현실세계는 주가 사람이 되어 사람의 행동에 따라 객체들의 상태가 결정되는데, 객체지향 세계에서는 모두가 주체가 되어 스스로 자신의 상태를 결정한다.
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함