전통적인 경제학은 인간을 완벽하게 이기적인 동시에 합리적인 존재라고 가정한다. 이 관점에 따르면 인간은 항상 자신에게 최대의 이익이 돌아올 수 있도록 합리적으로 의사 결정을 내리려고 노력한다. 과연 그럴까?

1982년 독일 홈볼트 대학의 베르너 귀스 교수는 흥미로운 경제한 게임 하나를 고안했다. 이 실험을 위해서는 두 명의 게임 참가자가 필요하다. 게임 참가자 중 한 명은 ‘제안자'라고 부르고 다른 한 명은 ‘응답자'라고 부른다.

게임 방법은 간단하다. 연구팀은 제안자에게 일정한 금액을 제공하고 제안자는 자신이 받은 금액 일부를 응답자와 나눠 가져야 한다. 제안자는 자신이 받은 금액을 공평하게 나누어 가지자고 제안할 수도 있고 6:4, 7:3, 8:2, 9:1과 같이 자신이나 응답자에게 좀 더 많은 금액이 돌아가도록 제안할 수도 있다. 이 게임에는 제안자와 응답자 둘 모두에게 오직 단 한 번의 선택 기회만 주어지기 때문에 “최후통첩 게임”이라는 무시무시한 이름이 붙여졌다.

응답자는 제안자의 제안을 수용하거나 거부할 수 있다. 만약 응답자가 제안을 승낙하면 제안자가 제시한 비율에 따라 금액을 나누어 가질 수 있지만 거부하면 제안자와 응답자 둘 다 한 푼도 손에 쥘 수 없게 된다.


객체의 세계에서도 협력이라는 문맥이 객체의 행동 방식을 결정한다. 객체지향에 갓 입문한 사람들의 가장 흔한 실수는 협력이라는 문맥을 고려하지 않은 채 객체가 가져야할 상태와 행동부터 고민하기 시작한다는 것이다.

중요한 것은 개별 객체가 아니라 객체들 사이에 이뤄지는 협력이다. 객체지향 설계의 전체적인 품질을 결정하는 것은 개별 객체의 훔질이 아니라 여러 객체들이 모여 이뤄내는 협력의 품질이다. 훌륭한 객체지향 설계자는 객체들 간의 요청과 응답 속에서 창발하는 협력에 초점을 맞춰 애플리케이션을 설계한다. 협력이 자리를 잡으면 저절로 객체의 행동이 드러나고 뒤이어 적절한 객체의 상태가 결정된다.

훌륭한 객체지향 설계란 겉모습은 아름답지만 협력자들을 무시하는 오만한 객체를 창조하는 것이 아니라 조화를 이루며 적극적으로 상호작용하는 협력적인 객체를 창조하는 것이다. 비록 그 객체를 따로 떼어 놓고 봤을 때는 겉모습이 다소 기묘하고 비합리적이더라도 말이다.

객체의 모양을 빋는 것은 객체가 참여하는 협력이다. 어떤 협력에 참여하는지가 객체에 필요한 행동을 결정하고, 필요한 행동이 객체의 상태를 결정한다. 개별적인 객체의 행동이나 상태가 아니라 객체들 간의 협력에 집중하라.