식별자
객체가 식별 가능하다는 것은 객체를 서로 구별할 수 있는 특정한 프로퍼티가 객체 안에 존재한다는 것을 의미한다.
이 프로퍼티를 식별자라고 한다.
모든 객체가 식별자를 가진다는 것은 반대로 객체가 아닌 단순한 값은 식별자를 가지지 않는다는 것을 의미한다.
값과 객체의 가장 큰 차이점은 값은 식별자를 가지지 않지만 객체는 식별자를 가진다는 점이다.
값
숫자, 문자열, 날짜, 시간, 금액 등과 같은 변하지 않는 양을 모델링한다. 흔히 값의 상태는 변하지 않기 때문에 불편 상태(immutable state)를 가진다고 한다. 값의 경우 두 인스턴스의 상태가 같다면 두 인스턴스를 같은 것으로 판단한다.
상태를 이용해 두 값이 같은지 판단할 수 있는 성질을 동등성(equaliy)이라고 한다. 상태를 이용해 동등성을 판단할 수 있는 이유는 값의 상태가 변하지 않기 때문이다.
객체
객체는 시간에 따라 변경되는 값을 포함하며, 행동을 통해 상태를 변경한다. 따라서 객체는 가변 상태(mutable state)를 가진다고 말한다.
이름이 엘리스고 키가 동일한 두 사람이 있다고 하더라도 두 사람을 같은 사람이라고 하지 않는다. 이름과 키가 같지만 별개의 인격체다.
어린 시절의 나와 현재의 나는 같다. 키도 다르고 나이도 다르지만 나는 나다. 상태와 무관하게 동일한 사람으로 판단할 수 있는 일종의 식별자를 가지고 있는 객체다.
이처럼 식별자를 기반으로 객체가 같은지 판단할 수 있는 성질을 동일성이라고 한다.
상태를 기반으로 객체의 동일성을 판단할 수 없는 이유는 시간의 흐름에 따라 객체의 상태가 변하기 때문이다. 따라서 상태가 가변적인 두 객체의 동일성을 판단하기 위해서는 상태 변경에 독립적인 별도의 식별자를 이용할 수밖에 없다.
그래서
식별자란 어떤 객체를 다른 객체와 구분하는 데 사용하는 객체의 프로퍼티다.
정리
- 값은 불변 상태를 갖는다. 따라서 값을 비교할 때 상태를 비교하면 된다.
- 상태를 기반으로 두 값이 같은지 판단할 수 있는 성질을 동등성(equality)이라고 한다.
- 객체는 가변 상태를 갖는다. 따라서 상태를 기반으로 비교할 수 없다. 그래서 상태 변화에 독립적인 별도의 식별자를 이용해 비교한다.
- 식별자를 기반으로 객체가 같은지를 판단할 수 있는 성질을 동일성(identical)이라고 한다.
'독서' 카테고리의 다른 글
[우리는 여전히 삶을 사랑하는가, 에리히 프롬] 우리는 여전히 삶을 사랑하는가 (0) | 2024.12.22 |
---|---|
몰입[1] (0) | 2024.11.20 |