aggregation。
オブジェクト(C++)どうしの関係の一種で、あるオブジェクトが別のオブジェクトを保持しているが、その対象は独立して存在できる関係。
has-a関係の一種だが、コンポジションより結びつきは弱い。
集約では、保持される側のオブジェクトの生存期間(C++)は、保持する側に従わない。
そのため、全体が破棄されても、部分側は独立して生存できる。
C++では、ポインタや参照を使って外部のオブジェクトを保持する形で表現されることが多い。
class Teacher
{
};
class Department
{
private:
Teacher* m_teacher{};
};この例では、DepartmentはTeacherを利用しているが、Teacherの寿命そのものは管理していない。