集約もコンポジションもUMLのクラス図で使われる言葉で、両方ともHAS-Aの関係を表します。記号で書くと
- ◆-がコンポジション
- ◇-が集約
さて、本題です。
- 集約はClassA型の変数が消滅してもClassB型のメンバー変数は消滅しない
- コンポジションはClassA型の変数が消滅したらClassB型のメンバー変数も消滅する
class ClassA {
// field
ClassB b;
};
これはコンポジションです。class ClassA {
// field
ClassB* b;
// destructor
~ClassA() {
delete b;
}
};
これもコンポジションです。class ClassA {
// field
ClassB* b;
// destructor
~ClassA() {
// do nothing...
}
};
これは集約です。
0 件のコメント:
コメントを投稿