# Sequenz Diagramme
gehören in die Kategorie der Verhaltensdiagramme in UML

Beispiel:

![image_111.png](image_111.png)

## Time
- Zeit läuft von oben nach unten
  - Abstand zwischen den einzelnen Elementen hat nichts mit der Dauer derer zu tun

## Participants
- Repräsentieren den Teil des Systems, welcher miteinander interagiert
- Jeder Teilnehmer hat eine lifeline

### Participant Names
- Format: _role [selector] : class_name_
- bspw.: 
  - admin - wird admin genannt, muss aber nicht einer Klasse zugeschrieben werden
  - : ContentManagementSystem - Klasse ist bekannt, muss aber keinen Namen haben
  - admin : Administrator - Klasse und Name sind bekannt
  - eventHandlers[2] : EventHandler - Teil innerhalb Array und bekannte Klasse

## Messages
- Mit einem Pfeil spezifiziert
- ![image_112.png](image_112.png)

### Message Signatures
- Format für eine Signatur:
  - _attribute = sinal_or_message_name (arguments) : return_type_
  - abhängig von den Informationen die bekannt sind, ggf auch kürzer

## Activation Bars
Indizieren, dass ein [Teilnehmer](UMLSequenzDiagramme.md#participants) aktiv ist

![image_113.png](image_113.png)

## Nested Messages
- [Nachricht](#messages) von einem [Teilnehmer](#participants) resultiert in weitere Nachrichten, welcher der Empfänger schickt
  - Diese neuen Nachrichten werden als "nested" innerhalb der triggernden Nachricht bezeichnet
- ![image_114.png](image_114.png)
- Bspw.:
  - participant1 sends initialMessage() to p2
  - When p2 receives initialMessage(), p2 becomes active, sends two nested messages to p3

## Message Types
### Message Arrows
![image_115.png](image_115.png)

#### Creation and Destruction
- Nicht alle Teilnehmer leben während der gesamten Sequenz

![image_116.png](image_116.png)

### Creation of Participants
- create() Nachricht zu der Lebenslinie
- **Nutzung der "dropped participant box"** 
  - macht es klar, dass der Teilnehmer vorher nicht existiert

### Destruction of Participants
- Beendung der Lebenslinie mit dem Löschen-Kreuz

### Synchronous Messages
- Default
- Nachrichtensender wartet auf Antwort von Empfänger 

### Return Message
- Zeigt, dass die Kontroller der Aktivierung wieder zum Empfänger zurückgeht

### Asynchronous Message
- _wird von uns nicht innerhalb des Systems genutzt_
  - _nur von Mensch zu System_
- Sender wartet nicht bis der Empfänger fertig ist
- Implementierung bspw. durch Threads

## Möglicher Spicker
![image_253.png](image_253.png)