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

+ Recent posts