2장. 이상한 나라의 객체

KIMA·2023년 3월 19일
1
post-thumbnail

객체지향과 인지능력

인간은 본능적으로 세상을 독립적이고 식별 가능한 객체의 집합으로 바라본다.
물리적인 실체로 존재하지 않더라도 개념적으로 경계지을 수 있는 추상적인 사물까지도 객체로 인식한다.
세상을 더 작은 객체로 분해하는 것은 본질적으로 세상이 포함하고 있는 복잡성을 극복하기 위한 인간의 작은 몸부림이다.
즉, 객체란 인간이 분명하게 인지하고 구별할 수 있는 물리적인 또는 개념적인 경계를 지닌 어떤 것이다.

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

객체를 상태(state), 행동(behavior), 식별자(identity)를 지닌 실체로 보아야 한다.

상태

객체의 Property는 객체의 상태를 구성하는 모든 특징을 통틀어놓은 것이며, 링크와 속성으로 구성되어 있다.
링크는 객체가 다른 객체를 참조하는 것이다. 링크를 통해서만 다른 객체와 메시지를 주고받을 수 있다.
속성은 객체를 구성하는 단순한 값이다. 숫자, 문자, 참/거짓 등...

즉, 상태란 특정 시점에 객체가 가지고 있는 정보의집합이다.

행동

외부의 객체가 직접적으로 객체 상태를 변경할 수 없고, 간접적으로 객체의 상태를 변경하거나 조회할 수 있는 방법이 필요하다. 그 방법이 바로 행동이다.
객체지향의 기본사상은 상태와 상태를 조작하기 위한 행동을 하나의 단위로 묶는 것이다.
객체는 스스로의 행동에 의해서만 상태가 변경되는 것을 보장함으로써 객체의 자율성을 유지한다.

즉, 행동이란 외부의 요청 또는 수신된 메시지에 응답하기 위해 동작하고 반응하는 활동이다. 행동의 결과로 객체는 자신의 상태를 변경하거나 다른 객체에게 메시지를 전달할 수 있다. 객체는 행동을 통해 다른 객체와의 협력에 참여하므로 행동은 외부에 가시적이어야 한다.
협력에 참여하는 객체들의 지능이 높아질수록 협력은 유연하고 간결해진다.

식별자

식별자는 객체를 서로 구별할 수 있는 특정 프로퍼티를 의미한다.

  • 상태가 아닌 식별자를 기반으로 두 객체가 같은지를 판단하는 성질을 동일성이라고 한다.
    • 참조 객체 또는 엔티티는 식별자를 지닌 전통적인 의미의 객체이다.
      • ex) Person 클래스
  • 식별자가 아닌 상태를 이용해 두 객체가 같은지를 판단하는 성질을 동등성이라고 한다.
    • 값 객체(Value Object)는 식별자를 가지지 않는 객체이다.
      • ex) Integer 클래스

행동이 상태를 결정한다.

객체를 설계할 때 상태를 먼저 결정하고 행동을 나중에 결정하는 방법은 객체 설게에 나쁜 영향을 미친다.

객체지향은 현실 세계의 단순한 모방이 아니다.

현실 세계의 계좌는 인간이라는 에이전트 없이 스스로 금액을 이체할 수 없다. 현실 세계의 트럼프 카드도 스스로 뒤집을 수도, 말을 할 수도, 걸을 수도 없다. 하지만 객체지향 세계에서는 이 모든 것들이 가능한 전지전능한 존재가 된다.

모방과 추상화라는 개념만으로 현실 객체와 소프트웨어 객체 사이의 관계를 깔끔하게 설명하지 못한다. 현실 객체와 소프트웨어 객체 사이의 가장 큰 차이점은 현실 속에서의 수동적인 존재가 소프트웨어 객체로 구현될 때는 능동적으로 변한다는 것이다. 즉, 현실 세계의 객체에 비해 소프트웨어로 구현된 객체는 더 많은 일을 할 수 있다.
이러힌 특징을 의인화라고 한다.

Reference

  • 객체지향의 사실과 오해, 조영호 지음
profile
안녕하세요.

0개의 댓글