UML-Aggregation
Aggregation ist eine spezielle Form der UML-Assoziation, die eine "hat-eine"-Beziehung darstellt, bei der das Teil-Objekt unabhängig vom Ganzen existieren kann.
In UML wird Aggregation durch eine Linie mit einer hohlen Raute (◇) dargestellt. Die Raute zeigt zur "Ganzes"-Klasse.
Kernpunkte
Aggregation ist eine schwache "HAS-A"-Beziehung:
- Darstellung: Hohle Raute (◇) + Linie
- Bedeutung: "hat" / "besteht aus"
- Teil kann ohne Ganzes existieren (Hauptunterschied zur UML-Komposition)
- Raute zeigt immer zur "Ganzes"-Klasse
- Beispiel: Auto hat Räder (Räder können auch ohne Auto existieren)
ASCII-Diagramm: UML-Aggregation
AGGREGATION (SCHWACHE BESITZBEZIEHUNG)
┌────────────────┐ ┌────────────────┐
│ UNIVERSITÄT │◇──────────│ STUDENT │
├────────────────┤ ├────────────────┤
│ - name: String │ │ - name: String │
│ - ort: String │ │ - matrikel: int│
└────────────────┘ └────────────────┘
◇ Hohle Raute
BEDEUTUNG:
→ Universität "hat" Studenten
→ Student kann ohne Universität existieren
(Student kann Uni wechseln)
→ ◇ zeigt zur "Ganzes"-Klasse (Universität)
Aggregation vs. Komposition vs. Assoziation
VERGLEICH DER BEZIEHUNGEN
ASSOZIATION (einfache Linie)
┌────────┐ ┌────────┐
│PERSON │───────────│ ADRESSE│
└────────┘ └────────┘
→ Kennt sich
→ Keine Besitzbeziehung
AGGREGATION (hohle Raute)
┌────────┐ ┌────────┐
│FIRMA │◇──────────│ANGESTELL│
└────────┘ └────────┘
→ "Hat"-Beziehung
→ Teil kann ohne Ganzes existieren
→ Angestellter kann Firma wechseln
KOMPOSITION (gefüllte Raute) → UML-Komposition
┌────────┐ ┌────────┐
│ HAUS │◆──────────│ ZIMMER │
└────────┘ └────────┘
→ "Besteht aus"-Beziehung
→ Teil stirbt mit Ganzem
→ Zimmer kann ohne Haus nicht existieren
Java-Code-Beispiel
// AGGREGATION: Abteilung hat Mitarbeiter
public class Abteilung {
private String name;
private List<Mitarbeiter> mitarbeiter; // ← Aggregation
public Abteilung(String name) {
this.name = name;
this.mitarbeiter = new ArrayList<>();
}
public void mitarbeiterHinzufuegen(Mitarbeiter m) {
mitarbeiter.add(m);
}
public void mitarbeiterEntfernen(Mitarbeiter m) {
mitarbeiter.remove(m);
}
}
public class Mitarbeiter {
private String name;
public Mitarbeiter(String name) {
this.name = name;
}
}
// VERWENDUNG
Mitarbeiter anna = new Mitarbeiter("Anna");
Mitarbeiter max = new Mitarbeiter("Max");
Abteilung it = new Abteilung("IT");
it.mitarbeiterHinzufuegen(anna);
it.mitarbeiterHinzufuegen(max);
// Wenn it gelöscht wird, existieren anna und max weiter!
it = null;
// anna und max können zu anderer Abteilung wechseln
Multiplizität bei Aggregation
KARDINALITÄTEN
1 1..*
┌─────────┐ ┌─────────┐
│ TEAM │◇────│ SPIELER │
└─────────┘ └─────────┘
→ Ein Team hat mindestens einen Spieler
→ Spieler können Team wechseln
→ Wenn Team aufgelöst wird, existieren Spieler weiter
Wichtig für AP2
Aggregation Merkmale:
- Notation: Hohle Raute (◇) + Linie
- Bedeutung: "hat" / schwache Besitzbeziehung
- Raute zeigt zum Ganzen (nicht zum Teil!)
- Teil existiert unabhängig vom Ganzen
Unterschiede:
- Aggregation: ◇─── (hohle Raute) - Teil kann ohne Ganzes existieren
- Komposition: ◆─── (gefüllte Raute) - Teil stirbt mit Ganzem
- Assoziation: ─── (einfache Linie) - nur Referenz
Typische Prüfungsfrage: "Was ist der Unterschied zwischen Aggregation und Komposition?"
→ Antwort: Bei Aggregation kann Teil ohne Ganzes existieren, bei Komposition nicht!
Praxis-Beispiel
BEISPIEL: BIBLIOTHEK
┌─────────────┐ ┌─────────────┐
│ BIBLIOTHEK │◇────────│ BUCH │
├─────────────┤ 1 * ├─────────────┤
│ - name │ │ - titel │
│ - ort │ │ - isbn │
└─────────────┘ └─────────────┘
→ Bibliothek "hat" Bücher
→ Wenn Bibliothek geschlossen wird, existieren Bücher weiter
(können an andere Bibliothek verkauft werden)
→ AGGREGATION (◇)
Praxis-Tipps für AP2
- Rauten-Richtung: Hohle Raute zeigt immer zum "Ganzen" (Container)
- Test für Aggregation: "Kann Teil ohne Ganzes existieren?" → Ja = Aggregation
- Eselsbrücke: "Hohle Raute = Hohlraum = Teile können raus (unabhängig existieren)"
- Typischer Fehler: Raute auf falsche Seite zeichnen
Verwandte Konzepte
- [[UML-Komposition]] - Starke Besitzbeziehung
- UML-Assoziation - Einfache Beziehung
- Vererbung - IS-A Beziehung