Benutzer-Werkzeuge

Webseiten-Werkzeuge


diagrams:diagrams:aggregation:start

Dies ist eine alte Version des Dokuments!


Aggregation/Komposition

Im letzten Projekt "Hunter" enthielt die Huntergame-Klasse die Attribute hunter und target vom Datentyp Circle sowie das Attribut enemies vom Datentyp Group. Diese Attribute speichern Referenzen ("Zeiger") auf entsprechende Circle- bzw. Group-Objekte:

class HunterGame extends Actor {
 
   Circle hunter;
 
   Circle target;
 
   Group enemies = new Group();
 
   usw...
 
}

Man sagt: "Ein Huntergame-Objekt enthält zwei Circle-Objekte und ein Group-Objekt" und stellt dies im Klassendiagramm folgendermaßen dar:

Die Kardinalitäten 1:1 bzw. 1:2 sind genauso definiert wie zwischen Datenbanktabellen.

Aggregation und Komposition

Enthält ein Objekt andere Objekte, so spricht man von Aggregation. Im Klassendiagramm veranschaulicht man dies als Verbindungs"pfeil" mit einer unausgefüllten Raute als Spitze. Die Raute zeigt auf die Klasse, deren Objekte die anderen Objekte enthalten.

Falls ein Objekt andere Objekte nicht nur enthält, sondern sogar aus diesen Objekten besteht, so spricht man von einer Komposition. Im Unterschied zur Aggregation wird in diesem Fall die Raute schwarz gefüllt. Besteht ein Objekt der Klasse Rakete beispielsweise aus einem Objekt der Klasse Rectangle (dem Raketenrumpf) und einem Objekt der Klasse Triangle (der Spitze), so sieht das Klassendiagramm folgendermaßen aus:

Die Unterscheidung zwischen Aggregation und Komposition ist oft sehr fein, im Grunde genommen hat es aber wenig Auswirkungen, da beide Relationen programmtechnisch identisch umgesetzt werden:

Die Klasse, deren Objekte die anderen Objekte enthalten, bekommt entsprechende Attribute. Im Falle der Rakete:

class Rakete {
   Rectangle rumpf;
   Triangle spitze;
 
   usw...
}
diagrams/diagrams/aggregation/start.1614532704.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki