관리 메뉴

생각해보기

객체지향 사실과 오해 정리 -2- 본문

객체지향

객체지향 사실과 오해 정리 -2-

정한_s 2021. 11. 1. 09:34

객체지향의 패러다임은 인간이 인지할 수 있는 다양한 객체들이 모여 현실 세계를 이루는 것처럼 소프트웨어의 세계 역시 인간이 인지할 수 있는 다양한 소프트웨어 객체들이 모여 이뤄져 있다는 믿음에서 출발한다.

 

객체는 식별 가능한 객체 또는 사물이다. 객체는 구체적인 사물일 수도 시간처럼 추상적인 개념일 수 도 있다. 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가진다.

 

상태

더보기

상태는 특정 시점에 객체가 가지고 있는 정보의 집합으로 객체의 구조적 특징을 표현한다. 객체의 상태는 객체에 존재하는 정적인 프로퍼티와 동적인 프로퍼티 값으로 구성된다. 객체의 프로퍼티는 단순한 값과 다른 객체를 참조하는 링크로 구분할 수 있다.

 

상태를 이용하면 과거의 행동을 알지 않아도 현재의 상태를 이용하여 행동의 결과를 쉽게 예측할 수 있다. 즉 과거에 얽매이지 않고 현재를 기반으로 객체의 행동 방식을 이해할 수 있다. 상태를 통해서 복잡성을 완화할 수 있다.

객체의 상태를 구성하는 모든 특징을 객체의 프로퍼티(property)라고 한다. 프로퍼티는 단순한 값(속성/attribute)과 다른 객체를 참조하는 링크로 구분할 수 있다.

 

행동

더보기

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

 

객체의 상태는 저절도 변하지 않는다. 객체의 상태를 변경하는 것은 객체의 자발적인 행동이다. 객체의 행동은 객체의 상태를 변경시키지만 행동의 결과는 객체의 상태에 의존적이다. 객체의 행동은 상태에 영향을 받고 객체의 행동은 상태를 변경시킨다.

객체의 행동을 통해 발생하는 결과는 다음과 같다. 객체 자신의 상태를 변경하는 결과, 행동 내에서 협력하는 다른 객체에게 메시지 전송하는 결과이다. 

 

식별자

더보기

식별자란 어떤 객체를 다른 객체와 구분하는 데 사용하는 객체의 프로퍼티다. 값은 식별자를 가지지 않기 때문에 상태를 이용한 동등성 검사를 통해 두 인스턴스를 비교해야 한다. 객체는 상태가 변경될 수 있기 때문에 식별자를 이용한 동일성 검사를 통해 두 인스턴스를 비교할 수 있다.

 

상태를 기반으로 객체가 같은 지 판단할 수 없다. 그 이유는 상태는 시간에 따라 변하기 때문이다. 따라서 두 객체가 같은지 판단하기 위해서 상태 변경에 독립적인 별도의 식별자를 이용한다.

 

객체의 특징

 

  • 객체는 상태를 가지며 상태는 변경 가능하다
  • 객체의 상태를 변경시키는 것은 객체의 행동이다
    • 행동의 결과는 상태에 의존적이며 상태를 이용해 서술할 수 있다.
    • 행동의순서가 실행 결과에 영향을 미친다
  • 객체는 어떤 상태에 있더라도 유일하게 식별 가능하다.

 

객체는 다른 객체와 협력하기 위해 존재한다. 객체의 행동은 객체가 협력에 참여하는 유일한 방법이다. 따라서 우리는 협력에 맞는 적절한 행동을 하는 객체를 선택해야 한다. 우리는 설계에 있어서 객체의 상태보다 객체의 행동에 초점을 맞추어야 한다. 따라서 먼저 객체의 행동을 결정하고 그 후에 행동에 적절한 상태를 선택해야 한다.

 

소프트웨어 객체는 현실의 객체를 은유적으로 표현한 것이다. 우리가 알고 있는 현실의 개념을 이용해서 소프트웨어 객체를 묘사하기 한다. 이 과정 때문에 우리는 소프트웨어 객체를 쉽게 이해하고 기억할 수 있다. 

현실의 객체와 소프트웨어 객체의 다른 점은 소프트웨어 객체에서 모든 객체는 능동적이라는 것이다. 객체는 자신의 상태를 스스로의 판단에 의해 결정한다. 

Comments