UML-Assoziation

Eine Assoziation ist eine Beziehung zwischen zwei Klassen, die anzeigt, dass Objekte der einen Klasse mit Objekten der anderen Klasse in Verbindung stehen.

Zwei Klassen werden mit einer einfachen Linie verbunden. Eine Klasse kann eine Referenz auf eine Instanz der anderen Klasse enthalten.

Kernpunkte

Assoziation ist die allgemeinste Form einer Beziehung in UML:

  • Darstellung: Einfache Linie zwischen Klassen
  • Bedeutung: "kennt" oder "hat Referenz auf"
  • Keine Besitzbeziehung (im Gegensatz zu UML-Komposition)
  • Objekte können unabhängig voneinander existieren
  • Bidirektional oder unidirektional

ASCII-Diagramm: UML-Assoziation

ASSOZIATION (EINFACHE BEZIEHUNG)

┌────────────────┐           ┌────────────────┐
│    STUDENT     │───────────│     KURS       │
├────────────────┤           ├────────────────┤
│ - name: String │           │ - titel: String│
│ - matrikel: int│           │ - credits: int │
├────────────────┤           ├────────────────┤
│ + belegen()    │           │ + starten()    │
└────────────────┘           └────────────────┘

BEDEUTUNG:
→ Student "kennt" Kurs
→ Einfache Linie = Assoziation
→ Keine Besitzbeziehung
→ Beide können unabhängig existieren

Unidirektionale vs. Bidirektionale Assoziation

UNIDIREKTIONAL (Pfeil zeigt Navigationsrichtung)

┌────────────┐         ┌────────────┐
│  PERSON    │────────>│  ADRESSE   │
└────────────┘         └────────────┘
→ Person kennt Adresse
→ Adresse kennt Person NICHT


BIDIREKTIONAL (keine Pfeile oder Pfeile in beide Richtungen)

┌────────────┐         ┌────────────┐
│  KUNDE     │─────────│ BESTELLUNG │
└────────────┘         └────────────┘
→ Kunde kennt Bestellung
→ Bestellung kennt Kunde

Multiplizität (Kardinalität)

MULTIPLIZITÄT BEI ASSOZIATIONEN

     1              *
┌─────────┐     ┌─────────┐
│ PERSON  │─────│  AUTO   │
└─────────┘     └─────────┘

Bedeutung:
1 = genau eine
* = beliebig viele (0..*)
0..1 = optional (0 oder 1)
1..* = mindestens eine

Beispiel:
→ Eine Person (1) besitzt mehrere (*) Autos
→ Ein Auto (*) gehört zu einer (1) Person

Java-Code-Beispiel

// ASSOZIATION: Student kennt Kurs

public class Student {
    private String name;
    private Kurs[] kurse;  // ← Assoziation (Referenz auf Kurs)

    public Student(String name) {
        this.name = name;
        this.kurse = new Kurs[10];
    }

    public void kursBesuchen(Kurs kurs) {
        // Student nimmt Kurs auf
        // Kurs existiert unabhängig vom Student
    }
}

public class Kurs {
    private String titel;

    public Kurs(String titel) {
        this.titel = titel;
    }
}

// VERWENDUNG
Kurs mathe = new Kurs("Mathematik");
Student anna = new Student("Anna");
anna.kursBesuchen(mathe);  // Assoziation

// Wenn anna gelöscht wird, existiert mathe weiter!
anna = null;
// mathe existiert noch
Wichtig für AP2

Assoziation Merkmale:

  • Notation: Einfache Linie (───) zwischen Klassen
  • Bedeutung: "kennt" / "hat Referenz auf"
  • Unabhängigkeit: Beide Objekte existieren unabhängig
  • Keine Besitzbeziehung (im Gegensatz zu UML-Komposition oder UML-Aggregation)

Unterschiede:

  • Assoziation: ─── (einfache Linie)
  • Aggregation: ◇─── (leere Raute)
  • Komposition: ◆─── (gefüllte Raute)
  • Vererbung: ───▷ (leerer Pfeil)
Praxis-Beispiel
BEISPIEL: BANK-SYSTEM

┌─────────────┐         ┌─────────────┐
│   KUNDE     │─────────│    KONTO    │
├─────────────┤    1  * ├─────────────┤
│ - name      │         │ - kontonr   │
│ - id        │         │ - saldo     │
└─────────────┘         └─────────────┘

→ Ein Kunde kann mehrere Konten haben
→ Wenn Kunde gelöscht wird, bleiben Konten bestehen
   (können anderen Kunden zugeordnet werden)
→ ASSOZIATION (keine Besitzbeziehung)
Praxis-Tipps für AP2

  1. Assoziation = einfachste Beziehung (nur Linie, keine Raute)
  2. Test: "Wenn A gelöscht wird, kann B weiter existieren?" → Ja = Assoziation
  3. Typische Prüfungsfrage: "Was ist der Unterschied zwischen Assoziation und Komposition?"
    → Antwort: Bei Assoziation keine Besitzbeziehung, bei Komposition stirbt Teil mit Ganzem

Verwandte Konzepte