Aggregation/Komposition



  • Hallo C++ Gemeinde,
    Ich beschäftige mich gerade mit dem Thema Aggregation und Komposition.
    An sich habe ich die Begriffe verstanden und kann sie auch auseinander halten.
    Ich bin aber im Internet auf zwei Beispiele für Aggregation gestoßen, die mich an sich etwas verwirrt haben.

    Beispiel 1:
    Ein Kamin ist Bestandteil eines Gebäudes.
    Der Kamin existiert auch ohne Gebäude weiter,
    genauso das Gebäude.

    Beispiel 2:
    Eine To-Do-Liste besteht aus einzeilen To-Do-Einträgen.
    Ein To-Do-Eintrag kann unabhängig einer To-Do-Liste existieren,
    aber meiner Meinung nach kann eine To-Do-Liste nur existieren,
    wenn sie To-Do-Einträge enthalt.

    Nun verwirrt mich, dass bei einem Beispiel das Ganze auch unabhängig von den Bestandteilen existiert, aber beim anderen Beispiel das Ganze ohne die Teile nicht existieren kann.

    Oder beschreiben Aggregation/Komposition nur die Beziehung der Bestandteile zum Ganzen?

    Ich hoffe jemand kann mir den Unterschied erklären, bzw meine Verwirrung auflösen.

    Lg Dodo217



  • das ist ein wenig komisch formuliert mit dem "kann selbstständig existieren".

    also wenn du dir eine hand abhackst, existiert die hand zwar weiter, erfüllt aber ohne den körper keinen zweck bzw. fängt langfristig an zu stinken. einen motor kannst du dagegen ausbauen, ohne dass er irgendwie kaputt geht.

    eine to-do-liste kann aber trotzdem existieren, obwohl sie keine (gültigen) einträge enthält: du nimmst dir einfach einen zettel und schreibst "to-do-liste" drauf. 😃

    in "grundlagen von datenbanksystemen" von elmasri, navathe wird zum beispiel aufgrund genau dieser schwammigen formulierung gar nicht weiter darauf eingegangen bzw. nicht unterschieden.



  • Hallo Dodo217,

    Willkommen im C++-Forum.

    Zur Komposition kann man sagen, dass in dem konkreten Fall einer Beziehung (hier Gebäude-Kamin) das beschriebene Kamin-Objekt nur als Teil des Gebäudes existiert. Das bedeutet aber NICHT, dass ein Kamin-Objekt nicht grundsätzlich auch ohne Gebäude existieren kann.
    Eine Komposition beschreibt eine Beziehung zwischen zwei Objekten in einem bestimmten Kontext. Heißt Gebäude-hat-Kamin mit der Regel: wenn Gebäude verschwindet ist auch der Kamin weg. An anderer Stelle kann aber durchaus auch ein Kamin (z.B. auf einem Grillplatz) existieren. Eine Komposition beschreibt eben nicht eine Eigenschaft des aggregierten Objekts (eines Kamins) sondern eine Eigenschaft einer konkreten Beziehung (hier Gebäude-Kamin).

    Umgekehrt gilt die Regel nicht. Es kann in obiger Beziehung durchaus auch Gebäude ohne Kamin geben - oder eben eine To-Do-Liste ohne Einträge. Ob ein Kamin einen, keinen oder mehr als einen Kamin hat oder haben kann, wird über die Kardinalität angegeben. In Fall des Kamins wahrscheinlich viele (D.h. in der UML: '*') - also ein Gebäude kann keinen, einen oder mehr als einen Kamin haben. Genauso bei der To-Do-Liste.

    Gruß
    Werner