[객체지향의 사실과 오해] 이상한 나라의 객체-5

2025. 3. 18. 12:37·📚 개발자의 서재/객체지향의 사실과 오해

 

해당 포스팅은 조영호 작가님의  객체지향의 사실과 오해 (P. 57~62)를 읽고 정리한 글입니다.

 

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

식별자

객체는 식별 가능해야 한다. 이는 객체를 서로 구별할 수 있는 특정한 프로퍼티가 객체 안에 존재한다는 것을 의미하고 해당 식별자를 프로퍼티라고 한다.

 

프로퍼티 타입은 객체나 단순한 값 중 하나가 될 수 있다.

값과 객체의 가장 큰 차이점은 값은 식별자를 가지지 않지만 객체는 식별자를 가진다.

값(Value) 객체(Object)
숫자, 문자열, 날짜, 시간, 금액 등과 같이
변하지 않는 양을 모델링한다.
객체는 시간에 따라 변경되는 상태를 포함하며,
행동을 통해 상태를 변경한다.
불변 상태(immutable state) 가변 상태(mutable state)
동등성(equality)
상태를 이용해 두 값이 같은지 판단할 수 있는 성질
동일성(identical)
식별자를 기반으로 객체가 같은지 판단하는 성질

 

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

 

객체지향 프로그래밍 언어에서 값과 객체 두 개념 모두 클래스를 이용해 구현되기 때문에 혼란스러워한다. 이런 오해의 소지를 줄이기 위해 객체의 값을 지칭하는 별도의 용어를 사용하기도 한다. 

 

식별자를 지닌 객체 = 참조 객체(reference object) = 엔티티(entity)

식별자를 가지지 않는 값 = 값 객체 (value object)


기계로서의 객체

객체가 외부에 제공하는 행동은 대부분 쿼리와 명령으로 구성된다.

 

기계를 사용할 때 사용자는 버튼을 통해 상호작용하지 직접 내부를 뜯어보지 않는다. 이는 두 가지를 강조한다.

 

객체에 접근할 수 있는 유일한 방법은 객체가 제공하는 행동뿐이라는 점을 강조한다.

객체 기계가 제공하는 버튼을 통해서만 상태에 접근할 수 있다는 점은 객체의 캡슐화를 강조한다.

 

저작자표시 비영리 변경금지

'📚 개발자의 서재 > 객체지향의 사실과 오해' 카테고리의 다른 글

[객체지향의 사실과 오해] 타입과 추상화 -1  (0) 2025.03.20
[객체지향의 사실과 오해] 이상한 나라의 객체 -6  (0) 2025.03.19
[객체지향의 사실과 오해] 이상한 나라의 객체 -4  (0) 2025.03.17
[객체지향의 사실과 오해] 이상한 나라의 객체 -3  (0) 2025.03.16
[객체지향의 사실과 오해] 이상한 나라의 객체 -2  (0) 2025.03.15
'📚 개발자의 서재/객체지향의 사실과 오해' 카테고리의 다른 글
  • [객체지향의 사실과 오해] 타입과 추상화 -1
  • [객체지향의 사실과 오해] 이상한 나라의 객체 -6
  • [객체지향의 사실과 오해] 이상한 나라의 객체 -4
  • [객체지향의 사실과 오해] 이상한 나라의 객체 -3
l'avenirJun
l'avenirJun
  • l'avenirJun
    오늘도 꾸준히 개발
    l'avenirJun
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 📚 개발자의 서재 N
        • 객체지향의 사실과 오해
        • Good Code, Bad Code
        • 도메인 주도 개발 시작하기 N
      • 🔧 트러블 슈팅
      • Java
      • Spring
      • 운영체제
        • 공룡책 학습
      • 알고리즘
      • GIT
      • 면접 지식
      • Spring 단기심화 2기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    협력
    매핑 구현
    애그리거트
    추상화
    책임
    코딩트리조별과제
    DIP
    유스케이스
    리포지터리
    인터페이스
    코드트리
    책임-주도 설계
    코딩테스트
    모듈화
    도메인 모델
    메시지
    코드 계약
    타입
    티스토리챌린지
    역할
    표현 영역
    good code bad code
    객체
    가독성
    객체지향의 사실과 오해
    오블완
    도메인 주도 개발 시작하기
    애그리거트 루트
    specification
    캡슐화
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
l'avenirJun
[객체지향의 사실과 오해] 이상한 나라의 객체-5
상단으로

티스토리툴바