객체지향 프로그래밍 - 관계의 의미, composite
오늘은 객체지향 프로그래밍에서 클래스 간의 관계에 대해서 이야기해보겠습니다. 객체지향은 뭘까요? 객체를 생각하며 프로그래밍하는 방법이라고 이해합시다. 보다 철학적이고 복잡한 설명은 접어둡니다. 여기서는 객체라는 아이디어를 중심으로 자유롭게 창작하는 방법을 이야기합니다. 객체(object)는 어떤 설계도에서 탄생한 구체적인 소스코드입니다. 요즘 인기있는 파이썬으로 설명을 하려고 합니다. 여러분에게 주사위를 생각하라는 과제가 주어졌다고 합시다. 그럼 주사위는 어떻게 설계할까를 생각합니다. 먼저 주사위는 ‘주사위’라는 구체적인 사물입니다. class 주사위: pass 주사위에 아무것도 적지 않아서 일단 pass라고 했습니다. 주사위는 여섯 개의 면이 있고 각각의 면에 숫자가 적혀져 있는 사물입니다. 이렇게 주사위의 존재 실체를 생각합니다. 즉, 주사위가 탄생하면 여섯 개의 면도 같이 태어납니다. 이 면들을 다음과 같이 했다고 합시다. class 측면: def __init__(self,number): self.number=number 가령 1부터 6까지 쓰여진 측면 6개는 다음과 같이 태어납니다. 측면1=측면(1) 측면2=측면(2) 측면3=측면(3) 측면4=측면(4) 측면5=측면(5) 측면6=측면(6) 이제 주사위와 측면의 관계를 말하고자 합니다. 자, 여러분 위에 쓰인 코드를 잘 보면 이상하지 않습니까? 주사위의 측면은 어떻게 존재할까요? 주사위가 없이 측면1=측면(1)과 같이 존재할 수 있을까요? 주사위의 측면은 주사위의 본질적인 것이므로 주사위와 주사위의 측면의 존재적 차이가 없다고 말할 수 있습니다. 즉, 숫자 6개가 없는 주사위는 주사위가 아니고 주사위에 붙어 있지 않은 측면은 상상하기 어렵습니다. 이처럼 존재적으로 강한 의존서을 가진다는 말은 주사위가 태어날 때 측면 6개도 함께 태어나고 주사위가 사라질 때 이들의 의미도 사라진다는 뜻입니다. 따라서 class 주사위는, class 주사위: ...