Komposition oder Aggregation



  • Mittelpunkt und Radius von Kugel bzw. 2 Eckpunkte und Rechteck: Komposition oder einfache Aggregation? Realisierung als eingeschlossenes Objekt oder als Zeiger-Member-Variable auf äußeres Objekt?



  • Komposition. Ich seh überhaupt nicht, wie man hier auf Aggregation kommen kann.



  • Komposition, 1 Element      Objektinstanz 
    Komposition, 0..1 Elemente  Zeiger auf Objektinstanz, NULL zeigt 0 an
    Komposition, n Elemente     Array aus Objektinstanzen 
    Komposition, 0..* Elemente  dyn. Array (vector<T>, list<T>) aus Objektinstanzen
    

    (von Marc++us)

    d.h. Objektinstanz kein Zeiger.



  • ist es nicht so, dass ein punkt auch ohne rechteck oder kugel weiter besteht? daher könnte das doch eine einfache aggregation sein.



  • Diese Frage ist ohne Kenntnis des Kontext nicht beantwortbar!

    Es hängt nämlich vom Umfeld ab, ob der Punkt weiter besteht. Mathematisch gesehen vielleicht, aber ob diese Modellierung im konkreten Fall richtig ist, kann man nur im Rahmen der Problemwelt beantworten.

    Im Rahmen einer objektorientierten Analyse kommt man zunächst vielleicht zu der Erkenntnis, daß eine Objektbeziehung eine Aggregation ist, weil die reale Welt das so vorlebt. Aber bei Vertiefung des Entwurfs stellt man evtl. fest, daß dieses Weiterleben gar nicht erforderlich ist. In diesem Fall macht man aus der Aggregation eine Komposition, wenn dies bereits ausreicht.

    Man muß also mit Lehrbuchbeispielen sehr vorsichtig sein - typische Beispiele wie Objekt:Auto und Objekt:Koffer werden dort gerne als Aggregation modelliert, weil der Koffer unabhängig vom Auto existiert. Ob das im Rahmen eines Programms notwendig ist, hängt wirklich ab ob man sich mit Autos und Koffern befasst, oder nur mit Koffern. Evtl. wird der Koffer im Programm einfach zu einem unsigned, der Zahlen von 0...n annimmt... da wäre es unnötiger Programmieraufwand, eine Aggregation dafür zu realisieren, wenn man diese sogar auf ein Attribut verkürzen kann.

    Nur soviel modellieren wie notwendig. Faustregel 1.



  • Geht es eigentlich darum, ob beide Teile eigenständig weiter bestehen können? Zum Beispiel kann eine Kugel ohne Mittelpunkt mathematisch nicht vernünftig weiter "leben", der Punkt schon, obwohl er als anschließend bedeutungsloses Objekt keinen Sinn mehr macht. Das typische Beispiel für Komposition ist Mensch und Gehirn, obwohl man bei manchen zweifeln kann, ob es nicht auch eine kleine Denkbeule täte. 😉 Auto + Autoradio ist eine einfache Aggregation, Auto + Motor mit gewisser Sicherheit eine Komposition, obwohl der Motor auch in einem anderem Auto weiter betrieben werden könnte. In Lehrbüchern findet man oft, dass der Motor zusammen mit dem Auto verschrottet wird, was sicher nicht immer zutrifft. Nicht ganz einfach die Materie. Hängt stark vom Kontext und dem Ziel ab. 😋


Log in to reply