다중상속 단점
- 클래스가 커짐
- 결합도 : 상속이나 사용관계로 서로 의존도가 높아짐
- 결합도가 낮을 수록 유지보수가 수월
- 거대 클래스는 결합도를 높임
- 컴파일 시간이 늘어남
- 오픈 소스처럼 클래스 파일이 많으면 컴파일 시간이 늘어남
컴포지션
- 멤버 변수로 포함하는 개념
- 같이 생성되고 같이 삭제되는 관계
class Heart {
public:
void beat() {}
};
class Person {
private:
Heart heart;
};
어그리게이션
- 분리된 클래스의 객체를 포인터나 레퍼런스 변수로 포함
- 외부 객체를 그냥 연결해서 쓰는 관계
class Student {
public:
string name;
Student(string n) : name(n) {}
};
class Professor {
private:
Student* student;
public:
void assign(Student* s) {
student = s;
}
void show() {
cout << student->name << endl;
}
};
int main(){
Student s("Kim");
Professor p;
p.assign(&s);
p.show();
}