본문 바로가기
객체지향의 사실과 오해

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

by 킴도TV 2022. 5. 8.

레베카 워프스브록 - 객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제다.

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

  • 객체의 특성
    • 상태(state)
    • 행동(behavior)
    • 식별자(identity)
  • 객체와 객체 사이의 의미 있는 연결을 링크(link) 라고 한다.
    • 객체와 객체 사이에는 링크가 존재해야만 요청을 보내고 받을 수 있다.
  • 객체가 취하는 행동은 객체 자신의 상태를 변경시킨다. 객체의 행동에 의해 객체의 상태가 변경된다는 것은 행동이 부수 효과(side effect)를 초래한다는 것을 의미한다.
    • 여기서의 부수효과는 좋은 것도 나쁜것도 아닌 당연한 원리. 메소드를 호출함으로써 멤버 프로퍼티의 값을 변화시킨다 -> Side Effect

메시지를 통한 앨리스와 음료 사이의 협력 관계


------------------->  (앨리스) -------------------> 음료
 [drinkBeverage()]             [drunken(quality)]

식별자(Identifier)

  • 값(value type): 숫자, 문자열, 날짜, 시간, 금액 등과 같이 변하지 않는 양을 모델링한다. 흔히 값의 상태는 변하지 않기 때문에 불변 상태(immutable state) 를 가진다고 말한다.
    • 상태를 이용해 두 값이 같은지 판단할 수 있는 성질을 동등성(equality) 라고 한다.
  • 객체(reference type): 시간에 따라 변경되는 상태를 포함하며, 행동을 통해 상태를 변경한다. 따라서 객체는 가변 상태(mutable state) 를 가진다고 말한다.
    • 두 객체의 상태가 다르더라도 식별자가 같다면 두 객체를 같은 객체로 판단할 수 있다. 이처럼 식별자를 기반으로 객체가 같은지를 판단할 수 있는 성질을 동일성(identical) 이라고 한다.

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

기계로서의 객체

  • 객체의 상태를 조회하는 작업을 쿼리(query)라고 한다.
  • 객체의 상태를 변경하는 작업을 명령(command)이라고 한다.