Definicja: Agregacja jest relacją między klasami, oznacza że klasa jest częścią innej klasy.
Przykład:
#include<iostream>
using namespace std;
class A {
public:
A(){ cout << "A()" << endl;}
~A(){cout << "~A()" << endl;}
void fA(){cout << "fA()" << endl;}
};
class B {
public:
B(){cout << "B()" << endl; }
~B(){cout << "~B()" << endl; }
void fB(){ pa->fA(); }
private:
A *pa;
};
void main(){
B b; // wywoływny jest konstruktor B()
b.fB();
}
PS: Kompozycja jest często stosowana podczas agregacji.
Definicja: Kompozycja (złożenie, ang. composition) oznacza, że klasa zawiera instancję innej klasy.
Przykład:
Czas życia obiektu "A" zależy od czasu życia obiektów klasy "B".
#include<iostream>
using namespace std;
class A {
public:
A(){cout << "A()" << endl;}
~A(){cout << "~A()" << endl;}
};
class B {
public:
B(){cout << "B()" << endl;}
~B(){cout << "~B()" << endl;}
private:
A a[4];
};
void main() {
B b; // wywoływne są 4 konstruktory A(), jeden B()
}
Żródło: http://www.math.uni.opole.pl/~zlipinski/pr2d/Programowanie2-cpp-Wyklad-04.pdf