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

한번씩 기술 블로그를 볼때마다 IS-A , HAS-A 어쩌고 저쩌고 하던데 컴퓨터 사이언스 부트캠프 with 파이썬 책에 잘 나와있어서 정리해본다

 

IS-A: 상속

 - IS-A는 ~은 ~의 종류다 라는 뜻인데 A laptop IS-A computer 즉 랩탑(노트북)은 컴퓨터의 한 종류다! 이 예시가 제일 적절하다. 그러니깐 컴퓨터는 부모 클래스고 노트북은 자식 클래스이다.

 

컴퓨터와 노트북은 IS-A 상속 관계

class Computer:

    def __init__(self, cpu, ram):
        self.cpu = cpu
        self.ram = ram

    def browse(self):
        print('브라우저로 웹서칭')

    def work(self):
        print('일하기')


class Laptop(Computer):

    def __init__(self, cpu, ram, battery):
        super().__init__(cpu, ram)
        self.battery = battery

    def move(self):
        print('노트북은 이동 가능해요')


laptop = Laptop('2core', '4GB', '100%')
print(laptop.cpu)
laptop.move()

위와 같은 관계를 IS-A라고 부른다! ~은 ~의 한종류다.

+ Recent posts