이 장은 객체를 이루는 세 가지 핵심 요소인 상태, 행동, 식별자를 중심으로 객체지향의 본질을 아주 구체적이고 명확하게 풀어내고 있다. '객체'라는 말을 우리는 늘 쓰지만, 이처럼 구성 요소 하나하나를 구조적으로 되짚어볼 기회는 흔치 않다. 단순히 '객체는 상태와 행동을 가진다'고 배우는 것을 넘어서, 왜 그런 구성이어야 하는지, 각각이 어떤 역할을 하는지를 설명하는 이 장의 내용은 객체지향을 더 깊이 이해하는 데 도움이 되었다.
우선 상태에 대한 설명은 매우 설득력 있었다. 객체가 세상과 상호작용하며 경험을 쌓고 그에 따라 다른 반응을 보인다는 개념은 마치 사람처럼 느껴졌다. 같은 질문에도 기분이나 상황에 따라 다른 대답을 하는 사람처럼, 객체도 같은 메시지에 대해 상태에 따라 다른 행동을 할 수 있다. 이처럼 객체의 반응이 과거의 이력, 즉 현재의 상태에 따라 달라진다는 점은 객체를 정적인 구조물이 아니라 살아 있는 유기체처럼 보이게 만든다. 복잡한 행동의 흐름을 간단히 표현하기 위해 ‘상태’라는 개념이 도입됐다는 설명은 단순히 기술적 편의가 아닌 인지의 효율성과도 연결된다는 점에서 재밌었다.
행동은 객체의 외부와 내부를 연결하는 창처럼 느껴졌다. 객체는 외부로부터 메시지를 수신하고, 그에 응답하기 위해 행동을 수행한다. 이때 행동은 내부 상태를 바꾸기도 하고, 다른 객체에게 메시지를 보내기도 한다. 이 두 가지(내부 상태 변화와 외부와의 협력)는 객체가 시스템 내에서 자율성과 상호작용성을 동시에 갖게 하는 핵심이다. 특히, 객체가 상태를 직접 노출하지 않고, 행동이라는 매개를 통해서만 응답한다는 설명은 캡슐화의 본질을 다시 떠올리게 해줬다. 외부에서는 객체 내부가 어떻게 구성되어 있는지 알 수 없고, 알 필요도 없다. 오직 메시지를 보내고 응답을 기다릴 뿐이다. 객체의 협력은 그렇게 이루어진다.
식별자의 개념은 특히 '객체'와 '값'의 차이를 구분하는 데 결정적인 역할을 한다. 두 객체의 상태가 완전히 같더라도, 그들이 서로 다른 식별자를 지닌다면 전혀 다른 존재로 다뤄져야 한다. 반대로, 상태는 바뀌었지만 식별자가 동일하다면 우리는 그것이 같은 객체라고 받아들인다. 이 차이는 단순히 메모리 상의 비교나 코드 수준의 구현 문제를 넘어서, 시스템의 의미적 일관성과도 관련된 이야기다. 식별자는 객체가 변해도 그 존재감을 유지하게 해주는 기준이 되고, 이것이 바로 값과 구별되는 객체의 정체성이다. 그래서 객체지향에서 식별자는 단순한 ID 필드 그 이상이다. 그것은 객체의 존재 이유와도 같은 것이다.
이 장은 결국 객체를 더 이상 단순한 기술적 단위로 보지 않게 만들었다. 객체는 상태를 지니고, 그 상태에 따라 다르게 반응하며, 스스로의 행동으로 상태를 변화시켜간다. 그리고 그 모든 흐름 속에서도 항상 동일한 존재로 식별될 수 있다. 객체지향 설계는 이처럼 살아 움직이는 존재들의 협력 구조를 만드는 일이다. 상태와 행동, 식별자를 유기적으로 연결하고, 그 사이에서 역할과 책임을 정리해나가는 과정이 바로 객체지향이 추구하는 세계다. 이 장을 통해 객체 하나하나가 그 자체로 독립적이고 유의미한 존재이며, 동시에 협력의 구성원이라는 점을 다시 한번 확실히 느꼈다. 코드를 작성할 때 객체를 어떻게 만들고 연결할지를 고민하기에 앞서, 객체가 무엇인지를 정확히 이해하는 일이 선행돼야 함을 다시금 깨닫게 된다.
'독서 > 객체지향의 사실과 오해' 카테고리의 다른 글
이상한 나라의 객체 | 행동이 상태를 결정한다 (1) | 2025.06.22 |
---|---|
이상한 나라의 객체 | 기계로서의 객체 (0) | 2025.06.21 |
이상한 나라의 객체 | 객체, 그리고 이상한 나라 (0) | 2025.06.19 |
이상한 나라의 객체 | 객체지향과 인지 능력 (0) | 2025.06.18 |
협력하는 객체들의 공동체 | 객체지향의 본질 (1) | 2025.06.17 |