02. 이상한 나라의 객체

객체지향과 인지능력

인간은 타고난 인지 능력을 이용해 세상에 존재하는 다양한 객체(p.41)

객체지향 패러다임은 인간이 인지할 수 있는 다양한 객체들이 모여 현실 세계를 이루는 것처럼 소프트웨어의 세계 역시 인간이 인지할 수 있는 다양한 소프트웨어 객체들이 모여 이뤄져 있다는 믿음에서 출발한다. (p.41)

객체, 그리고 이상한 나라

객체지향을 설명할때 보통 실세계에 빗대어서 표현을 하는 경우가 많은데 객체지향은 실세계 모방이 아닌 현실을 기반으로 존재하지 않는 새로운 세계를 창조하는것이라고 표현해야 적절하다.

현실의 계산기는 스스로 계산을 할수없다. 하지만 객체에서의 계산기는 스스로 계산이 가능하다. 그렇듯이 현실 보다 더 이상적인 모습을 보여준다.

책은 이상한 나라의 앨리스를 바탕으로 객체지향을 설명한다.

앨리스가 액체를 마시고 키가 줄어드는 장면, 케이크를 먹고 키가 다시 커지는 장면, 부채질을 하니 다시 키가 작아지는 장면 등을 예시로 든다.

앨리스는 객체이다.

앨리스는 키가 작아질수도 커질수도 있다. 키는 앨리스에게 상태 이다. 데이터, 값 이라고도 표현할수있겠다.

앨리스가 키가 작든 크든 사람들은 앨리스를 앨리스라 부른다. 즉 상태변화와 무관하게 유일한 존재로 식별7된다.

키를 줄임 으로써 낮은 문을 통과할수있었다.

상태의 필요성

필자는 상태가 필요한 이유는 과거에 얽매이지 않고 객체의 행동방식을 이해할수있기 때문이라고 말한다.

과거의 행동을 기반으로 현재의 발생한 행동을 예측하기 위해서는 그동안 있었던 과거의 사건들을 모두 기억해야 하는데

쉽지않은 일이기에 상태라는 개념을 만들어 상태를 통해 해당 객체의 행동의 결과를 보다 쉽게 예측 할수 있을것이다.

상태와 프로퍼티

객체의 상태를 표현하는 모든것을 프로퍼티 라고 표현한다.

프로퍼티는 값이 될수도 있고 링크가 될 수 도 있다.

앨리스의 키가 160이라 할때 160 이라는 값으로 앨리스의 상태를 표현할수있다.

다만 앨리스가 물을 먹는 중 이라는 상태는 값으로 표현할수있을까?

물론 일련의 문자열로 표현은 가능하겠지만 객체지향에 어울리지 않는다.

물이라는 객체의 행동을 이용하여 앨리스란 객체가 물 이라는 객체를 먹고있다는 행동으로 연결시켜 표현할수있겠다.

물 <-> 앨리스가 같이 협력하므로 이것을 링크라고 표현한다. 이러한 링크가 존재하여야 메세지를 보내서 해당 상태를 확인할수있다.

행동

객체의 상태를 변화시키는것은 객체의 자발적인 행동 뿐이다. 물론 다른 객체의 행동으로 인해 상태가 변할 순 있지만

A라는 객체가 B라는 객체에게 메세지를 보낸다면 결국 이 메세지를 받고 행동을 하는것은 B이다. A가 아무리 행동해도 B가 행동하지 않으면 B 객체의 상태변화는 이루어지지않는다. 간접적인 행동으로 B의 상태변화에 영향을 준것이다. 고로 자발적인 행동만이 객체의 상태를 변화시킨다.

박수도 양 손이 부딫혀야 가능하기에 객체와 객체간의 협력이 중요하다. 또한 A 객체는 B객체의 상태가 변화하는 로직을 몰라야한다. 상태가 변한다 는 것은 알지만 어떤 로직을 거쳐 변한다는 사실은 몰라야 한다는 말이다. 즉 캡슐화가 필요하다.

예를 들어 앨리스가 음료를 먹으면 음료 객체의 양이 줄어든다.

이것을 객체지향 관점에서 이해 해보자면 앨리스는 음료를 마시는 행위를 할때 음료 객체 에게 양을 줄이라는 메세지를 보낸다.

실제 앨리스란 객체는 음료 양이 얼마나 남았는지는 알수가 없다. 다만 메세지를 전달하는 행위를 할뿐이다. 그 부수효과로 음료 객체가 스스로 행동하여 양을 줄인것이다.

Last updated