컴퓨터 기본
클래스 관계 HAS-A 상속(합성, 통합)
시연이아빠
2019. 11. 8. 11:23
HAS-A는 뭐냐? ~이 ~을 가진다. 컴퓨터는 CPU와 RAM을 가진다, 경찰은 총을 가진다.
HAS의 의미 그대로 "가진다"의 뜻이다.
HAS-A 관계는 두가지의 종류가 있는데 하나는 합성(composition) 다른 하나는 통합(aggregation)이다.
합성관계는 없어서는 안될 아주 강한 결합 상태고, 통합은 없어도 괜찮아~ 정도의 약한 결합 상태이다.
합성의 예를 들면 컴퓨터와 CPU의 관계이다. 컴퓨터는 CPU 없이는 존재할 수 없다. 왜냐? 아무것도 못하니깐
통합의 예는 경찰과 총의 관계이다. 근육맨 경찰들은 총이 없어도 그만이지 않는가
1. 합성의 예시
class CPU:
print('빵빵한 CPU')
class RAM:
print('든든한 RAM')
class Computer:
def __init__(self):
self.cpu = CPU()
self.ram = RAM()
print('CPU와 RAM 없이는 존재 할 수 없으니 나는 합성 관계야!!')
computer = Computer()
2. 통합의 예시
class Gun:
def __init__(self, gun):
self.gun = gun
def bbang(self):
print(self.gun + ' 빵야 빵야')
class Police:
def __init__(self):
self.gun= None
def get_gun(self, gun):
self.gun = gun
def fire_gun(self):
if self.gun:
self.gun.bbang()
else:
print('총 없다 손으로 맞자')
police = Police()
police.fire_gun()
police.get_gun(Gun('M16'))
police.fire_gun()
통합의 예시는 이미 설명했듯이 있어도 그만 없어도 그만이다. 경찰이 총이없으면 손으로 총이 있으면 총으로!(경찰이 M16을 들면 일반 시민은 바로 복종할 듯 하다)