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

  1. Rauten-Richtung: Hohle Raute zeigt immer zum "Ganzen" (Container)
  2. Test für Aggregation: "Kann Teil ohne Ganzes existieren?" → Ja = Aggregation
  3. Eselsbrücke: "Hohle Raute = Hohlraum = Teile können raus (unabhängig existieren)"
  4. Typischer Fehler: Raute auf falsche Seite zeichnen

Verwandte Konzepte