C++

[C++] is-a/has-a 관계

programmer-faust 2025. 7. 14. 21:28
  • 순서
    1. is-a 관계
    2. has-a 관계
    3. is-a 관계와 has-a 관계의 차이점
  • is-a 관계
    1. is-a는 'A는 B이다'일 때 '~이다'와 같다.
    2. 추상화(형식이나 클래스와 같은)들 사이의 포함 관계를 의미함. 클래스 A가 다른 클래스B의 파생클래스임을 뜻함.
    3. 타입 A는 타입 B의 명세를 암시하여 타입B의 서브타입이라고 할 수 있음
    4. is-a관계를 통해 생성된 클래스 및 객체는 상속 관계에서 둘은 밀접하게 결합됨. => 부모 또는 기저 클래스의 명세에 변경이 발생하면 코드가 손상도리 위험이 있음.
  • has-a 관계
    1. has-a는 "A가 B를 가지고 있다"라는 관계이다.
    2. 구성 관계를 의미하며 한 오브젝트가 다른 오브젝트에 "속한다"를 말함.
    3. 한 클래스가 다른 클래스의 객체를 멤버 변수로 포함하는 관계
    4. has-a 방식으로 생성된 클래스 및 객체는 느슨하게 결합됨 =>상속에 비해서 명세에 변경이 발생하더라도 구성 요소를 쉽게 변경할 수 있다는 의미. (더 많은 유연성을 제공)
  • is-a 관계와 has-a 관계의 차이점
    1. is-a관계는 상속이고 has-a관계는 구성 관계이다.
    2. is-a관계는 다른 클래스에 상속하고, has-a관계는 다른 클래스 객체를 멤버를 포함하도록 구현한다.

'C++' 카테고리의 다른 글

[C++] 연산자 오버로딩  (0) 2025.07.17
[C++] 시프트 연산자  (0) 2025.07.15
[C++] Iterator 반복자  (0) 2025.07.10
[C++]Alogorithm헤더파일  (1) 2025.07.08
[C++] <sstream>헤더파일  (0) 2025.07.04