우테코 코딩 테스트를 준비하며 아직 잘 모르는 javascript보다 python으로 온라인 코딩 테스트를 보는 게 낫지 않을까 생각해서 다시 python을 복습하고 있다. 객체 지향에 관해 내가 보고 있는 책(게임으로 배우는 파이썬)에서는 역시나 클래스와 객체의 관계를 붕어빵 틀과 붕어빵으로 설명하고 있다.

 

예전에 이 개념이 잘 이해가 안 가서 인터넷으로 검색해봤는데, 클래스와 객체의 관계는 붕어빵 틀과 붕어빵이 아니라는 글을 보고 이해가 갔다. 그런데 오늘 다시 그 글을 보니 이해가 바로 안 되더라. 그 글에서는 클래스는 붕어빵 틀이 아니라 붕어빵 공장이라고 했다. 객체는 '실체'라는 것을 강조했다. 

 

곰곰이 생각해보니 객체는 실체이며 클래스는 실체가 아니라는 것, 따라서 붕어빵 틀은 실체이므로 그 비유가 잘못되었다는 말이라는 생각이 들었다. 배민 문방구 제품을 예로 들어보자.

 

배민 문방구에는 현재 세 가지 종류의 파일이 있다. 흰 바탕에 검은색 글씨가 프린트 되어 있다는 점은 똑같다. 다른 것은 프린트된 글씨의 내용이다. 여기서 '불투명한 재질'이며 '오른쪽으로 열린다'는 것, 크기는 'A4 사이즈'이고 '흰 바탕'에 '검은색 글씨'가 있다는 것이 배민 문방구 파일에 대한 약속이다. 파일을 만드는 공장에서는 이 약속에 따라 '아- 보람차다'라고 쓰인 파일과, '까먹지 말자'라고 쓰인 파일, '선생님 감사해요'라고 쓰인 파일을 만들었을 것이다. 이 세 가지 파일이 바로 클래스(약속)로 만들어진 객체다. 

 

그러므로 나는 클래스는 붕어빵 틀도 아니며 붕어빵 공장도 아니라고 말하고 싶다. 클래스는 '약속'이다. 이런 이런 조건으로 물건을 만들겠다고 정한 내용이 클래스며 그 정한 내용으로 만든 실체가 객체다.

+ Recent posts