해당 포스팅은 조영호 작가님의 객체지향의 사실과 오해 (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 |