반응형
IS-A
상속 관계에서 주로 사용된다.
상속은 상위 클래스를 구체화한다.
(동물) - (사람), (개) (고양이), (원숭이) …
• 사람은 동물이다.
• 개는 동물이다
• 고양이는 동물이다.
상속 관계는 상위 클래스 기능을 하위 클래스가 물려받을 수 있다는 것에
클래스 계층구조가 안정적인 장점이 있다.
부모 클래스 명세가 변경되면 코드가 손상될 위험이 있다.
class Animal
{
virtual void speak() {
printf("동물...");
}
}
class Dog : public Animal {}
class Cat : public Animal
{
virtual void speak() {printf("야용...");}
}
void main()
{
Animal* cat = new Cat();
Animal* dog = new Dog();
Animal* animal = new Animal();
cat.speak(); // 야옹
dog.speak(); // 동물...
animal.speak(); // 동물...
}
HAS-A
'포함' 개념으로 상속을 사용하지 않는다.
하나의 객체가 다른 객체를 "(부분으로써) 갖거나" 하는 경우
is-a 관계보다 느슨한 결합으로
중간에 클래스 명세가 변경되더라도 유연성을 제공한다.
• 자동차는 배터리를 가지고 있다.
• 자동차는 HUD를 가지고 있다.
• 자동차는 서라운드뷰 기능을 가지고 있다.
반응형
'까망 동네 > 디자인 패턴' 카테고리의 다른 글
[디자인 패턴] GRASP 객체지향 (2) | 2024.11.12 |
---|---|
[디자인패턴] 어댑터 패턴 (Adapter Pattern) (8) | 2024.10.13 |
💻 디자인 패턴(Design Pattern)이란? (6) | 2024.08.02 |
[디자인패턴] 체인 패턴 (Chain of Responsibility, 책임 연쇄) (4) | 2024.07.31 |
객체 지향 프로그래밍 5대 원칙 [SOLID] (40) | 2023.11.19 |
댓글