# Seite 14. UML-Sequenzdiagramm-Trainer

Dieser interaktive Trainer gehört zur Theorie-Seite:

```text
UML-Sequenzdiagramm
```

Hier übst du, aus einer Aufgabenbeschreibung ein korrektes UML-Sequenzdiagramm abzuleiten.

Im Fokus stehen:

```text
Teilnehmer
Lebenslinien
Nachrichten
Rückgaben
Reihenfolge
Aktivierungsbalken
parallele Prozessbereiche
```

---

**Was wird trainiert?**

| Bereich | Bedeutung |
|---|---|
| **Teilnehmer erkennen** | beteiligte Akteure, Objekte oder Systemteile |
| **Lebenslinien verstehen** | gestrichelte Linien unter den Teilnehmern |
| **Nachrichten eintragen** | durchgezogene Pfeile als Aufrufe |
| **Rückgaben unterscheiden** | gestrichelte Pfeile als Antworten |
| **Reihenfolge prüfen** | Ablauf wird von oben nach unten gelesen |
| **Parallelbereich erkennen** | zwei parallele Linien markieren parallele Abläufe |
| **Beschriftungen sauber setzen** | Methodenaufrufe und Rückgaben eindeutig benennen |

---

**Interaktiver UML-Sequenzdiagramm-Trainer**

<iframe
  src="https://trainer.ulrich-wiki.com/uml-sequenzdiagramm-trainer.html?v=1"
  width="100%"
  height="1500"
  style="border:1px solid #444; border-radius:12px;">
</iframe>

<div style="margin:16px 0;">
  <a
    href="https://trainer.ulrich-wiki.com/uml-sequenzdiagramm-trainer.html?v=1"
    target="_blank"
    rel="noopener"
    style="
      display:inline-block;
      padding:12px 18px;
      background:#2563eb;
      color:white;
      font-weight:bold;
      text-decoration:none;
      border-radius:10px;
      border:1px solid #1d4ed8;
    ">
    UML-Sequenzdiagramm-Trainer im Vollbild öffnen
  </a>
</div>

---

**Merksatz für den Trainer**

```text
Teilnehmer stehen oben.
Lebenslinien laufen nach unten.
Zeit läuft von oben nach unten.
Nachrichten sind durchgezogene Pfeile.
Rückgaben sind gestrichelte Pfeile.
Aktivierungsbalken zeigen Verarbeitung.
Parallele Abläufe müssen sichtbar markiert werden.
```

---

**Wichtige fachliche Einordnung**

Im Trainer verwenden wir für den parallelen Bereich eine **IHK-nahe vereinfachte Darstellung mit zwei parallelen Linien**.

Das bedeutet:

```text
zwei parallele Linien = paralleler Ablaufbereich
```

Streng nach UML kann Parallelität auch als `par`-Combined-Fragment mit Rahmen dargestellt werden.

Für dein IHK-Lernen ist wichtig:

```text
Du sollst erkennen:
Hier laufen zwei Prozesse parallel oder unabhängig voneinander ab.
```

---

**Beispiel: Login prüfen**

Aufgabenstellung:

```text
Ein Benutzer gibt Login-Daten ein.
Die LoginGUI ruft den LoginService auf.
Der LoginService fragt das UserRepository ab.
Danach werden Dashboarddaten und Benutzerkontext parallel geladen.
Zum Schluss wird die Startseite angezeigt.
```

Mögliche Lösung:

```text
Teilnehmer:
Benutzer
loginGUI:LoginGUI
loginService:LoginService
userRepository:UserRepository
dashboard:Dashboard
```

Ablauf:

```text
Benutzer → loginGUI: loginDatenEingeben(name, passwort)
loginGUI → loginService: pruefeLogin(name, passwort)
loginService → userRepository: findeBenutzer(name)
userRepository --> loginService: benutzer
loginService --> loginGUI: loginStatus
```

Parallelbereich:

```text
Prozess A:
loginGUI → dashboard: ladeDashboard()
dashboard --> loginGUI: dashboardDaten

Prozess B:
loginGUI → loginService: ladeBenutzerKontext()
loginService --> loginGUI: benutzerKontext
```

Abschluss:

```text
loginGUI → Benutzer: startseiteAnzeigen()
```

---

**Nachricht oder Rückgabe?**

| Darstellung | Bedeutung |
|---|---|
| **durchgezogener Pfeil** | Aufruf / Nachricht |
| **gestrichelter Pfeil** | Rückgabe / Antwort |
| **senkrechte gestrichelte Linie** | Lebenslinie |
| **schmaler Balken auf Lebenslinie** | Aktivierungsbalken |
| **zwei parallele Linien** | paralleler Ablaufbereich |

---

**Teilnehmer richtig benennen**

Ein Teilnehmer kann ein Akteur oder ein Objekt sein.

Beispiele:

```text
Benutzer
loginGUI:LoginGUI
loginService:LoginService
userRepository:UserRepository
dashboard:Dashboard
```

Wichtig:

```text
Benutzer = Akteur
loginGUI:LoginGUI = Objekt / Instanz mit Klasse
```

---

**Warum steht die Zeit von oben nach unten?**

Ein Sequenzdiagramm wird vertikal gelesen.

```text
oben = früher
unten = später
```

Das bedeutet:

```text
Die erste Nachricht steht oben.
Spätere Nachrichten stehen weiter unten.
```

---

**Typische Fehler im Sequenzdiagramm**

| Fehler | Warum falsch? |
|---|---|
| Teilnehmer fehlen | unklar, wer beteiligt ist |
| Lebenslinien fehlen | Ablauf ist nicht als Sequenzdiagramm erkennbar |
| Rückgaben als normale Nachrichten gezeichnet | Antwort wirkt wie neuer Aufruf |
| Nachrichten in falscher Reihenfolge | Ablauf wird fachlich falsch |
| Pfeile überlagern sich | Diagramm ist schlecht lesbar |
| paralleler Bereich nicht markiert | Gleichzeitigkeit wird nicht sichtbar |
| zu lange Texte auf Pfeilen | Diagramm wird unübersichtlich |
| Klassen statt konkreter Teilnehmer falsch verwendet | Sequenzdiagramm zeigt konkrete Kommunikation |

---

**Mini-Testfragen**

<details>
<summary><strong>1. Wofür verwendet man ein UML-Sequenzdiagramm?</strong></summary>

Ein Sequenzdiagramm zeigt den zeitlichen Nachrichtenaustausch zwischen Teilnehmern oder Objekten.

Merksatz:

```text
Wer ruft wen wann auf?
```

</details>

<details>
<summary><strong>2. Wie liest man ein Sequenzdiagramm?</strong></summary>

Von oben nach unten.

```text
oben = früher
unten = später
```

</details>

<details>
<summary><strong>3. Was ist eine Lebenslinie?</strong></summary>

Eine Lebenslinie ist die gestrichelte senkrechte Linie unter einem Teilnehmer.

Sie zeigt, dass der Teilnehmer während des Ablaufs existiert.

</details>

<details>
<summary><strong>4. Wie wird eine normale Nachricht dargestellt?</strong></summary>

Als durchgezogener Pfeil zwischen zwei Teilnehmern.

Beispiel:

```text
loginGUI → loginService: pruefeLogin()
```

</details>

<details>
<summary><strong>5. Wie wird eine Rückgabe dargestellt?</strong></summary>

Als gestrichelter Pfeil zurück.

Beispiel:

```text
loginService --> loginGUI: loginStatus
```

</details>

<details>
<summary><strong>6. Was zeigt ein Aktivierungsbalken?</strong></summary>

Ein Aktivierungsbalken zeigt, dass ein Teilnehmer gerade aktiv ist oder etwas verarbeitet.

</details>

<details>
<summary><strong>7. Was bedeuten zwei parallele Linien in unserem Trainer?</strong></summary>

Sie markieren einen parallelen Ablaufbereich.

Das bedeutet:

```text
Mehrere Prozesse können parallel oder unabhängig voneinander ablaufen.
```

</details>

<details>
<summary><strong>8. Was ist der Unterschied zwischen Nachricht und Rückgabe?</strong></summary>

Eine Nachricht ruft etwas auf.

Eine Rückgabe liefert ein Ergebnis zurück.

```text
Nachricht = Aufruf
Rückgabe = Antwort / Ergebnis
```

</details>

<details>
<summary><strong>9. Warum dürfen Pfeile und Texte nicht überlappen?</strong></summary>

Weil sonst unklar wird, welcher Pfeil zu welcher Nachricht gehört.

Ein Sequenzdiagramm muss sauber lesbar bleiben.

</details>

<details>
<summary><strong>10. Was ist ein typischer IHK-Fehler?</strong></summary>

Ein häufiger Fehler ist, die zeitliche Reihenfolge falsch darzustellen.

Wichtig:

```text
Die Reihenfolge ergibt sich von oben nach unten.
```

</details>

---

**Nächste Seite**

Danach geht es weiter mit:

```text
Mock-up / Benutzeroberflächen-Entwurf
```