Agregacja (programowanie obiektowe)

Agregacja

Agregacja (znana również jako zawieranie się lub gromadzenie) to sytuacja, w której tworzy się nową klasę, bazując na już istniejących klasach. Proces ten często określa się jako „tworzenie obiektu składowego”. Nowa klasa może być zbudowana z dowolnej liczby obiektów, które mogą być różnych typów i w różnych kombinacjach, aby osiągnąć zamierzony efekt. Agregacja jest zazwyczaj definiowana jako relacja typu „zawiera”, na przykład „samochód zawiera silnik”, gdzie „samochód” i „silnik” to klasy, a klasa „samochód” zawiera w sobie obiekt (lub czasami referencję czy wskaźnik) typu „silnik”.

Agregacja jest często porównywana do dziedziczenia, które polega na uszczegóławianiu ogólnego typu w celu stworzenia typu szczególnego. W przeciwieństwie do dziedziczenia, agregacja nie tworzy podtypu, lecz generuje nowy typ.

Na diagramach UML agregację reprezentuje się za pomocą pustego rombu.

Kompozycja

Szczególnym przypadkiem agregacji jest kompozycja, która oznacza, że obiekt składa się z obiektów składowych, które nie mogą istnieć niezależnie od obiektu głównego. Kompozycja jest relacją typu „posiada”.

W przypadku kompozycji dana część może przynależeć tylko do jednej całości. Oznacza to, że część nie może istnieć bez całości, a usunięcie całości skutkuje automatycznym usunięciem wszystkich jej części, które są powiązane z nią poprzez związek kompozycji.

Na diagramach UML kompozycję oznacza się wypełnionym rombem.