[객사오] 객체지향 설계 (1)

Hashswim·2024년 5월 20일
2

객체 지향이란

소프트웨어 시스템은 메시지를 통해 협력하는 자율적인 객체들의 공동체

객체란 무엇인가?

하나의 개별적인 실체로 식별 가능한 물리적인 또는 개념적인 사물은 어떤 것이라도 객체가 될 수 있다.

즉, 우리가 다른 사물과 구분할 수 있고 하나의 독립적인 단위로 인식할 수 있는 모든 것

객체지향은 실세계의 모방뿐만이 아닌 실세계의 개념을 차용해 새로운 소프트웨어 세상을 창조하는 것으로 실세계의 개념을 은유적으로 추상화한다고 말한다..!

객체는 상태, 행동, 식별자를 가진다.

  • 상태

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

    객체의 상태는 단순한 값과 객체의 조합으로 표현
    상태를 구성하는 모든 특징을 '프로퍼티'라고 한다.

    프로퍼티는 변경되지 않으므로 정적,
    프로퍼티의 값은 시간의 흐름에 따라 변경될 수 있으므로 '동적'

    프로퍼티는 단순한 값과 다른 객체를 참조하는 링크로 구분가능함.

    객체의 행동은 캡슐화되어 외부로부터 은닉화된다.

    (숫자, 문자열, 양, 속도 등의 단순함 값은 그 자체로 독립적인 의미를 가지는 객체가 되지 않고 다른 객체의 상태를 표현한다)

  • 행동

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

    객체의 행동은 상태에 영향을 받으며 상태를 변경시킨다.
    객체는 자율적인 존재기 때문에 자신의 상태를 변경시키는 것은 오직 자신의 행동에서 이루어진다.

    객체는 수신된 메시지를 자율적으로 처리해 행동을 통해 자신의 상태를 변경하거나 필요하다면 다른 객체에게 메시지를 전달한다.

    행동은 외부에 가시적이다.(행동을 통해 메시지를 보내기 때문)

  • 식별자

    어떤 객체를 다른 객체와 구분하는 데 사용하는 프로퍼티

    값은 객체가 아니기 때문에 식별자를 가지지 않는다.

    시간에 따라 객체의 상태가 변경되더라도 같은 식별자라면 같은 객체이다.

정리

이상한 나라의 앨리스의 이야기를 예로 실세계의 개념을 소프트웨어의 객체로 표현해보았다.

객체지향 설계중 '객체'에 대해서만 알아보았다.
다음장에서는 객체지향 자체로 역할, 책임, 협력이 어떻게 시스템을 구성하는지 알아보자..!

0개의 댓글