실행결과 p1 shoots
Unable to shoot
p1 shoots again
bang bang!
p1 shoots again
Unable to shoot
경찰 객체가 생성될 때는 총을 가지고 있지 않습니다(#4). 그러므로 총을 쏠 수 없지요. 이후 acquire_gun() 메서드를 통해 총을 얻고 나서야 총을 쏠 수 있습니다(#5). 이후 release_gun() 메서드를 통해 총을 반납하므로 더 이상 쏠 수 없습니다(#6).
경찰과 총의 관계를 그림으로 나타내면 다음과 같습니다.
그림 7-3 경찰과 총은 통합 관계
그림 7-3은 HAS-A 관계의 Police 클래스와 Gun 클래스를 나타냅니다. 빈 다이아몬드 모양은 통합을 나타냅니다.