더북(TheBook)


1.2HAS-A: 합성 또는 통합


또 다른 객체 관계로 HAS-A가 있습니다. HAS-A 관계는 ‘~이 ~을 가진다 혹은 포함한다’를 의미합니다. 컴퓨터는 CPU와 RAM을 가집니다. ‘A Computer HAS-A CPU’에서 ‘가지고 있다’는 의미가 HAS-A이므로 HAS-A 관계라고 부릅니다.

다른 예로, ‘경찰은 총을 가지고 있다’는 문장에서 경찰과 총의 관계는 영어로 ‘A policeman HAS-A gun’이라고 표현할 수 있으므로 HAS-A 관계가 성립합니다. 프로그램에서 HAS-A 관계는 합성(composition) 혹은 통합(aggregation)을 이용해 표현합니다. 합성과 통합은 모두 HAS-A 관계를 나타내는 방법이지만, 둘 사이에는 차이점이 있습니다. 컴퓨터와 CPU의 관계를 합성으로 표현하고 경찰과 총의 관계를 통합으로 나타내 둘의 차이를 비교해 보겠습니다. 우선 컴퓨터와 CPU의 관계를 살펴보죠.

코드 7-4 oop2/oop2_1/composition.py

class CPU:
    pass

class RAM:
    pass

class Computer:
    def _ _init__(self):
        self.cpu = CPU()  #1
        self.ram = RAM()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.