In einem Klassendiagramm, das Teil des Unified Modeling Language (UML) ist, stellt eine Aggregation eine spezielle Beziehung zwischen zwei Klassen dar, die anzeigt, dass ein Objekt einer Klasse (Teilklasse) Teil eines anderen Objekts einer anderen Klasse (Ganzes oder Containerklasse) sein kann. Diese Beziehung drückt aus, dass die Teilklasse unabhängig vom Container existieren kann, und sie kann auch zu anderen Containern gehören.
Die Aggregation wird oft mit einem Diamanten-Symbol (ähnlich dem "Raute"-Symbol) dargestellt, das auf die Containerklasse zeigt. Diese Notation zeigt an, dass die Teilklasse mit dem Container verbunden ist, aber nicht notwendigerweise von ihm "besessen" wird. Das bedeutet, dass die Teilklasse weiterhin existieren kann, auch wenn der Container nicht mehr existiert. Hier sind einige wichtige Merkmale einer Aggregationsbeziehung:
Teil-Ganzes-Beziehung: Eine Aggregation zeigt an, dass die Teilklasse ein Teil der Containerklasse ist, aber nicht zwangsläufig an sie gebunden ist.
Unabhängigkeit: Die Teilklasse kann unabhängig von der Containerklasse erstellt, verwendet oder gelöscht werden. Die Existenz der Teilklasse hängt nicht von der Containerklasse ab.
Navigation: Durch die Aggregation kann auf die Teilklasse von der Containerklasse aus zugegriffen werden, aber nicht unbedingt umgekehrt. Dies bedeutet, dass die Containerklasse die Teilklasse "enthält", aber die Teilklasse kann auch anderswo verwendet werden.
Ein häufiges Beispiel für eine Aggregationsbeziehung ist die Beziehung zwischen einem Auto (Containerklasse) und seinen Rädern (Teilklasse). Die Räder sind Teil des Autos, aber sie können auch unabhängig existieren und für andere Zwecke verwendet werden.
Es ist wichtig zu beachten, dass die Aggregation eine schwächere Form der Beziehung ist als die "Komposition", bei der die Teilklasse eng an die Containerklasse gebunden ist und normalerweise nur im Kontext der Containerklasse existiert. Die Unterscheidung zwischen Aggregation und Komposition ist in UML-Diagrammen wichtig, da sie die Beziehungen zwischen Klassen und Objekten genauer darstellen können.