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을 들면 일반 시민은 바로 복종할 듯 하다)
'컴퓨터 기본' 카테고리의 다른 글
Thread 란? (0) | 2020.05.07 |
---|---|
컴퓨터 하드웨어 구성(CPU) (0) | 2020.02.11 |
class의 static이란?(실무에서 바로 통하는 자바) (0) | 2019.10.28 |
유니코드 vs 아스키코드 (0) | 2019.06.14 |
운영체제 32bit vs 64bit (0) | 2019.06.14 |