협력하는 객체들의 공동체

Jay Jang·2022년 6월 20일
0
post-thumbnail

객체지향의 사실과 오해



오후에 식곤증이 찾아왔다. 일정을 마치기 위해서는 오늘도 카페인의 힘을 빌려야 한다. 커피를 들고 잠시 쉬기 위해 5분 거리의 카페를 찾아갔다.

카운터엔 캐셔가 있고, 커피 머신 앞에는 바리스타가 있다. 가끔은 바리스타가 캐셔를 겸하기도 하던데, 어쨌든.

나는 논커피나 시럽, 설탕이 들어간 것은 피한다. 아메리카노나 콜드브루, 가끔은 라떼를 고른다. 오늘은 그 가끔이다.

캐셔가 주문을 받는다. 나는 라떼를 말하고 캐셔에게 카드를 주고, 받고. 그리고 캐셔는 내게 진동벨을 주었다. 그리고 받은 주문을 바리스타에게 넘긴다.

얼마 지나지 않아 진동벨이 울려 라떼를 받으러 갔다. 방금 전의 캐셔가 라떼를 건내준다. 다른 타임의 바리스타는 하트를 그려주던데 이사람은 로제타를 그려주었다. 나는 천천히 마시고 책도 읽다가 카페를 나왔다.

나는 손님으로서 내 책임을 다했다. 커피를 주문했으며, 마시고, 일어났다.

주문을 받은 캐셔는 캐셔로서의 책임을 다했다. 주문을 받았으며, 바리스타에게 주문을 넘겼고, 커피를 다시 받아 내게 주었다.

바리스타도 본인의 책임을 다했다. 캐셔로부터 커피를 내려달라는 요청을 받았으며, 커피를 내려 캐셔에게 다시 건내주었다.

나(손님), 캐셔, 바리스타 모두 본인의 역할에서 책임을 다한 것이다.

‘커피를 주문한다’ 라는 하나의 행위를 마치기 위해 세명이 역할을 통해 협력한 것이다.


...

내가 아닌 다른 사람이 주문을 하더라도 라떼는 라떼일 것이다.

손님이 바뀌어도, 직원이 바뀌어도 커피를 주문한다 라는 것은 달라지지 않는다.

오늘은 캐셔와 바리스타가 분업했지만, 내일은 바리스타가 캐셔를 겸할 수도 있고, 바리스타 또는 캐셔 중 한명이 바뀌거나 혹은 둘 다 바뀔수도 있다. 키오스크로 주문할 수도 있다 - 그리고 그것이 내가 받는 커피에는 전혀 문제가 되지 않는다. 주문을 어떻게 받느냐는 중요하지 않다.

역할을 담당하는 객체가 바뀌어도 협력의 결과는 바뀌지 않는다.

오늘은 바리스타가 로제타를 그려줬지만, 어제는 곰돌이를 그려줬으며, 그제는 바빠서 그려주지 못했다고 해도 내가 받는 것이 라떼가 아닌 것이 아니다. 라떼를 어떻게 만드느냐는 중요하지 않다. 다형성(polymorphism)의 이야기이다.

이렇게 역할과 책임을 중심으로 객체들이 협력하여 행위를 마치는 것, 객체 지향이다.

profile
그때는맞고지금은틀리다

2개의 댓글

comment-user-thumbnail
2022년 11월 22일

ㅋㅏ...카페에서 그런 생각을 하시다니 천생 개발자시군요

1개의 답글