[OOP] 객체지향의 사실과 오해 Chapter 1-2 객체

Jane·2021년 1월 17일
3
post-thumbnail

객체란?

상태(state)행동(behavior), 식별자(identity)를 지닌 실체

  • 상태를 결정하는 건 행동이지만, 행동의 결과를 결정하는 것은 상태다.

상태

특정 시점에 객체가 가지고 있는 정보의 집합

  • 정적인 프로퍼티와 동적인 프로퍼티 값으로 구성
    • property: 객체의 상태를 구성하는 모든 특징 (정적)
      • link: 객체와 객체 사이의 연결, 메시지를 주고받을 수 있는 통로
      • attribute: 객체를 구성하는 단순한 값
    • property value: 시간이 흐름에 따라 변경됨 (동적)
  • 객체는 가변 상태(mutable state)를 가진다.
  • query: 객체의 상태를 조회
  • command: 객체의 상태를 변경

행동

외부의 요청 또는 수신된 메시지에 응답하기 위해 동작하고 반응하는 활동

식별자

객체를 서로 구별할 수 있는 프로퍼티 (어떤 객체를 다른 객체와 구분하는 데 사용하는 객체의 프로퍼티)

  • 두 객체의 상태가 다르더라도 식별자가 같다면 같은 객체라고 판단할 수 있다.
  • 객체지향 언어에서는 값과 객체 모두 클래스로부터 생성된 객체이기 때문에 식별자를 지닌 객체를 reference object 또는 entity, 식별자를 가지지 않는 값을 value object라고 부르기도 한다.

※ 메서드: 객체가 수신된 메시지를 처리하는 방법
→ 메시지와 메서드의 분리는 객체들 간의 자율성을 증진시킨다.
※ 클래스: 협력에 참여하는 객체를 만드는 데 필요한 구현 메커니즘


객체의 역할과 책임

  • 여러 객체가 동일한 역할을 수행할 수 있다.
  • 역할은 대체 가능성을 의미한다.
  • 각 객체는 책임을 수행하는 방법을 자율적으로 선택할 수 있다.
  • 하나의 객체가 동시에 여러 역할을 수행할 수 있다.

객체의 덕목

  • 객체는 충분히 협력적이어야 한다.
    - 모든 것을 홀로 처리하는 객체는 복잡도에 의해 자멸한다. 따라서 객체는 다른 객체의 요청에 응답하며 협력하는 존재여야 한다.
  • 객체는 충분히 자율적이어야 한다.
    - 객체는 자신의 행동을 스스로 결정하고 책임지는 자율적인 존재다.
    - 객체는 자신의 상태를 직접 관리하고 상태를 기반으로 스스로 판단하고 행동할 수 있어야 한다.

객체의 자율성과 캡슐화

  • 객체는 다른 객체와 협력하기 위해 메시지를 전송하고, 메시지를 수신한 객체는 메시지를 처리하는 데 적합한 메서드를 자율적으로 선택한다.
  • 객체는 다른 객체가 무엇(what)을 수행하는지는 알 수 있지만 어떻게(how) 수행하는지에 대해서는 알 수 없다.
  • 객체는 다른 객체의 상태에 직접 접근할 수도, 상태를 변경할 수도 없다.
  • 객체에 접근할 수 있는 유일한 방법은 행동뿐이다.

Source

  • 객체지향의 사실과 오해 (조영호 저)

0개의 댓글