Benutzer-Werkzeuge

Webseiten-Werkzeuge


diagrams:diagrams:aggregation:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
diagrams:diagrams:aggregation:start [2021/02/28 18:18] Martin Pabstdiagrams:diagrams:aggregation:start [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 25: Zeile 25:
 <WRAP center round info 80%> <WRAP center round info 80%>
 **Aggregation und Komposition** \\ \\  **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.  \\ \\  +Steht ein Objekt mit anderen Objekten in Beziehung (insbesondere in einer "enthält"-Beziehung), 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:+Falls ein Objekt andere Objekte nicht nur **enthält**, sondern sogar aus diesen Objekten **besteht**, d.h. in seiner Existenz von ihnen abhängt, 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:
 {{ :diagrams:diagrams:aggregation:pasted:20210228-181514.png?400 }} {{ :diagrams:diagrams:aggregation:pasted:20210228-181514.png?400 }}
  
-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 Unterscheidung zwischen Aggregation und Komposition ist oft sehr fein, im Grunde genommen hat sie 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:+Die Klasse, deren Objekte die anderen Objekte enthalten, bekommt **entsprechende Attribute**. Im Falle der Rakete:
 <code learnj> <code learnj>
 class Rakete { class Rakete {
Zeile 41: Zeile 41:
 </WRAP> </WRAP>
  
 +===== Beispiel 1: =====
 +Folgende Klassen sind gegeben. Zeichne das Klassendiagramm (ohne Attribute und Methoden)! \\ \\ 
 +Lösung: Siehe Bild rechts.
 +{{ :diagrams:diagrams:aggregation:pasted:20210228-203121.png?400}}
 +<code learnj>
 +class Bibliothek {
 +   Buch[] bücher;
 +   Person leiterin;
 +}
 +
 +class Buch {
 +
 +   String titel;
 +   String autor;
 +
 +}
 +
 +class Person {
 +
 +   String name;
 +   String anschrift;
 +
 +}
 +
 +
 +</code>
 +
 +===== Beispiel 2: =====
 +Schreibe die Java-Klassen (ohne Methoden) zu folgendem Klassendiagramm:
 +Lösung: Siehe rechts.
 +{{:diagrams:diagrams:aggregation:pasted:20210228-203927.png?400 }}
 +<code learnj>
 +class PongSpiel {
 +   Ball ball;
 +   Schläger schlägerLinks;
 +   Schläger schlägerRechts;
 +}
 +
 +class Ball extends Circle {
 +
 +}
 +
 +class Schläger extends Rectangle {
 +
 +}
 +</code>
 +
 +===== Aufgabe 1 =====
 +Zeichne das Klassendiagramm (ohne Methoden) zu folgendem Programm:
 +<code learnj>
 +class Autospiel extends Actor {
 +   Auto spieler1;
 +   Auto spieler2;
 +}
 +class Auto {
 +   Karosserie karosserie;
 +   Rad radVorne;
 +   Rad radHinten;
 +}
 +
 +class Karosserie extends Rectangle {
 +
 +}
 +
 +class Rad extends Circle {
 +
 +}
 +</code>
 +
 +[[.aufgabe1:loesung:start|Lösung]]
 +
 +===== Aufgabe 2 =====
 +Schreibe die Java-Klassen (ohne Methoden) zu folgendem Klassendiagramm:
 +
 +{{:diagrams:diagrams:aggregation:pasted:20210228-205533.png?400}}
  
 +[[.aufgabe2:loesung:start|Lösung]]
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