52
Zustandsdiagramme: Modellierung und Implementation OOPM, Ralf Lämmel

Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

Embed Size (px)

Citation preview

Page 1: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

Zustandsdiagramme: Modellierung und ImplementationOOPM, Ralf Lämmel

Page 2: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

UML: Unified Modeling Language

2

★ UML ist eine Modellierungssprache. ★ UML dient der Anforderungsbeschreibung

für Organisationssysteme undSoftwaresysteme.

★ UML ermöglicht die Beschreibung von Strukturund Verhalten (Abläufe).

Page 3: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

UML: Unified Modeling Language

3

★ Benutzer SoftwareentwicklerSystemanalytiker Systemarchitekten

★ Anwendungsbereiche InformatikProzessmanagementInformationsmanagement

Page 4: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

UML: Unified Modeling Language

4

★ Wichtige Ziele des UML-Sprachentwurfs:Höhere AbstraktionsformVerständlichkeit❖ durch die Verwendung der Diagrammform❖ Lesbarkeit für diese Zielgruppen:‣ Manager ‣ Benutzer

Ausführbarkeit (z.B. Code-Generierung)

Page 5: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

UML: Unified Modeling Language

★ Strukturdiagramme

Klassendiagramme

Kompositionsstrukturdiagramme

Komponentendiagramme

Objektdiagramme

Paketdiagramme

Verteilungsdiagramme

★ Verhaltensdiagramme

Aktivitätsdiagramme

Anwendungsfalldiagramme

Interaktionsübersichtsdiagramme

Kommunikationsdiagramme

Sequenzdiagramme

Zeitverlaufsdiagramme

Zustandsdiagramme

Page 6: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

UML: Unified Modeling Language

★ Strukturdiagramme

Klassendiagramme

Kompositionsstrukturdiagramme

Komponentendiagramme

Objektdiagramme

Paketdiagramme

Verteilungsdiagramme

★ Verhaltensdiagramme

Aktivitätsdiagramme

Anwendungsfalldiagramme

Interaktionsübersichtsdiagramme

Kommunikationsdiagramme

Sequenzdiagramme

Zeitverlaufsdiagramme

Zustandsdiagramme

Basis der Modellierung im Allgemeinen.Basis der Verhaltensmodellierung im Speziellen.

Page 7: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Beispiel eines Anwendungsfalldiagramms

7

Ein Modell von Anwendungsfällen ist eine Sicht auf das System welches das Systemverhalten aus externer Sicht (oder aus Nutzersicht) betont.

Page 8: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau 8(C) OMG TUTORIAL SERIES

Siehe Verwendung von

Constraints

Weiteres Beispiel

Page 9: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Modellierungsphilosophien

Anwendungsfälle zuerstBeginne mit AnwendungsfällenLeite Struktur- und Verhaltensmodelle ab

Nicht Anwendungsfall-getriebenRegelmäßige Konsistenzkontrolle zwischen‣ Anwendungsfallmodellen und‣ allen anderen Modellen

9

Page 10: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

UML: Unified Modeling Language

★ Strukturdiagramme

Klassendiagramme

Kompositionsstrukturdiagramme

Komponentendiagramme

Objektdiagramme

Paketdiagramme

Verteilungsdiagramme

★ Verhaltensdiagramme

Aktivitätsdiagramme

Anwendungsfalldiagramme

Interaktionsübersichtsdiagramme

Kommunikationsdiagramme

Sequenzdiagramme

Zeitverlaufsdiagramme

ZustandsdiagrammeZur Darstellung von Szenarien = Instanzen eines

Anwendungsfalles im Sinne eines typischen Beispiels seiner Ausführung

Page 11: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Ein Sequenzdiagramm für den Kauf am Telefon

11

Objekt

Nachricht

Objekt

Rückkehr

Nachricht

Rückkehr

Merke: Instanzen (Objekte) müssen nicht zwangsläufig zu implementierten Objekten korrespondieren. Es können z.B. auch Systemnutzer sein.

Page 12: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Zum Vergleich: Ein Anwendungsfalldiagramm

12

Page 13: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau 13

Ein größeres Beispiel

Weitere Aspekte

Kreieren von Objekten

Zerstören von Objekten

Asynchrone Aufrufe

Constraints bei Nachrichten

...

Page 14: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

UML: Unified Modeling Language

★ Strukturdiagramme

Klassendiagramme

Kompositionsstrukturdiagramme

Komponentendiagramme

Objektdiagramme

Paketdiagramme

Verteilungsdiagramme

★ Verhaltensdiagramme

Aktivitätsdiagramme

Anwendungsfalldiagramme

Interaktionsübersichtsdiagramme

Kommunikationsdiagramme

Sequenzdiagramme

Zeitverlaufsdiagramme

Zustandsdiagramme

Verallgemeinerte Programmflusspläne

Page 15: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Ein Aktivitätsdiagramm zum Besuch einer Vorlesung

15

Startzustand

Endzustand

AktivitätEntscheidung

Page 16: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Strukturelle Modellierung vs. Verhaltensmodellierung

16

Klassendiagrammfür die Modellierung

einer Universität

Aktivitätsdiagramm für die Modellierung eines

Vorlesungsbesuches

Page 17: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Parallelität und Datenfluss am Beispiel

17

Nebenläufigkeit beginnt: “fork”

Nebenläufigkeit endet: “join”

Fluss-Objekt

Fluss-Objekt

Weitere (nicht illustrierte) AusdrucksmittelUnterbrechungenSignale (Eingabe/Ausgabe)...

Page 18: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

UML: Unified Modeling Language

★ Strukturdiagramme

Klassendiagramme

Kompositionsstrukturdiagramme

Komponentendiagramme

Objektdiagramme

Paketdiagramme

Verteilungsdiagramme

★ Verhaltensdiagramme

Aktivitätsdiagramme

Anwendungsfalldiagramme

Interaktionsübersichtsdiagramme

Kommunikationsdiagramme

Sequenzdiagramme

Zeitverlaufsdiagramme

Zustandsdiagramme

Zustandsänderung von Objekten bei Ereignissen

Page 19: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Modellierung der Struktur eines U-Bahn-Systems

19

Das Verhalten ist offensichtlich unterspezifiziert.

Page 20: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Ein Zustandsdiagramm für die Drehtür

20

Anfangszustand

Zustand der Drehtür

Zustand der Drehtür

Ereignis Aktion

EreignisTransition

Page 21: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Eigenschaften von Zustandsdiagrammen

Vollständigkeit

Ist das Verhalten für jedes mögliche Ereignis in jedem möglichen Zustand definiert?

Terminierung

Gibt es Folgen von Zustandsübergängen die irgendwann zu einem Endzustand führen?

Determinismus

Ist der Folgestand in jedem Zustand durch das eintreffende Ereignis determiniert?

21

Im Beispiel:Nein!

Im Beispiel:Nein!

Im Beispiel:Ja!

Page 22: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Ergänztes Zustandsdiagramm

22

Der Versuch des Passierens der Drehtür im blockierten Zustand führt zu einem Alarm.

Das Einfügen eines Tickets im unblockierten Zustand impliziert das Auswerfen des Tickets.

Page 23: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Talking to a finite state machine?

23

Locked > Pass?

Alarm!

Locked > Ticket?

Collect!

Unlocked > Pass?

Locked > …

Page 24: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Weiter ergänztes Zustandsdiagramm

24

Page 25: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Nebenbemerkung/Übung: Der Lebenszyklus eines Objektes kann auch

als ein Zustandsdiagramm verstanden werden.

1. Konstruktion

a) Stempeln

b) Initialisieren

c) Assoziieren

2.Mitarbeit

a) Nachrichten verarbeiten

b) Nachrichten versenden

c) Zustand anpassen

3. Persistieren (optional)

4. Dekonstruktion

a) Aufgeben

b) Abschließen

c) Vergehen

5. Auferstehen (optional)

Page 26: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Implementation von Zustandsdiagrammen

Zweck der Übung?

Demonstration der Ausführbarkeit von Objekten

Illustration des Abstandes zwischen

Modell und

Implementation.

Illustration stark unterschiedlicher Optionen.

Illustration von Programmiertechniken.

26

Page 27: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Optionen der Implementation von Zustandsdiagrammen

SwitchCase -- Überführung mittels switch-case-Anweisung

MethodDispatch -- Überführung mittels dynamischer Bindung

TableDriven -- Überführung mittels Datenstruktur

27

https://svn.code.sf.net/p/developers/code/repository/oopm/eclipse/chrestomathy/uml/state/

Page 28: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Optionen der Implementation von Zustandsdiagrammen

SwitchCase -- Überführung mittels switch-case-Anweisung

MethodDispatch -- Überführung mittels dynamischer Bindung

TableDriven -- Überführung mittels Datenstruktur

28

Page 29: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

SwitchCase: Aufzählungstyp für Zustände

29

public enum State {Locked,Unlocked

}

Kurzform für eine abstrakte Klasse State mit zwei Unterklassen Locked und Unlocked.

Page 30: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

SwitchCase: Ereignis “(insert a) ticket”

30

public void ticket() {System.out.println("Someone trying to \"Ticket\".");switch (state) {

case Locked : Collect();state = State.Unlocked;break;

case Unlocked :Eject();break;

}print();

}

Aufruf einer Methodefür die Aktion

Zuweisung desZielzustandes

Aufruf einer Methodefür die Aktion

Abfrage des aktuellen Zustandes (Attribut)

Page 31: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

SwitchCase: Ereignis “pass (the turnstile)”

31

public void pass() {System.out.println("Someone trying to \"Pass\".");switch (state) {

case Locked : Alarm();break;

case Unlocked :state = State.Locked;break;

}print();

}

Page 32: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

SwitchCase: Aktionen

32

protected void alarm() {System.out.println("Alarm!");

}

protected void collect() {System.out.println("Ticket collected.");

}

protected void eject() {System.out.println("Ticket ejected.");

}

Page 33: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

enum State { EXCEPTION, LOCKED, UNDEFINED, UNLOCKED };enum Event { RELEASE, TICKET, MUTE, PASS };

void collect() { }void alarm() { }void nop() { }void eject() { }

enum State next(enum State s, enum Event e) { switch(s) { case EXCEPTION: switch(e) { case RELEASE: nop(); return LOCKED; case TICKET: eject(); return EXCEPTION; case PASS: nop(); return EXCEPTION; case MUTE: nop(); return EXCEPTION; default: return UNDEFINED; } case LOCKED: switch(e) { case TICKET: collect(); return UNLOCKED; case PASS: alarm(); return EXCEPTION; default: return UNDEFINED; } case UNLOCKED: switch(e) { case TICKET: eject(); return UNLOCKED; case PASS: nop(); return LOCKED; default: return UNDEFINED; } default: return UNDEFINED; }}

enum State { EXCEPTION, LOCKED, UNDEFINED, UNLOCKED };enum Event { RELEASE, TICKET, MUTE, PASS };

void collect() { }void alarm() { }void nop() { }void eject() { }

enum State next(enum State s, enum Event e) { switch(s) { case EXCEPTION: switch(e) { case RELEASE: nop(); return LOCKED; case TICKET: eject(); return EXCEPTION; case PASS: nop(); return EXCEPTION; case MUTE: nop(); return EXCEPTION; default: return UNDEFINED; } case LOCKED: switch(e) { case TICKET: collect(); return UNLOCKED; case PASS: alarm(); return EXCEPTION; default: return UNDEFINED; } case UNLOCKED: switch(e) { case TICKET: eject(); return UNLOCKED; case PASS: nop(); return LOCKED; default: return UNDEFINED; } default: return UNDEFINED; }}

Kompakte Variante in C

Online-Lokation mit vollständigem Java-Code:https://svn.code.sf.net/p/developers/code/repository/oopm/eclipse/chrestomathy/uml/state/

Page 34: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Rezept der SwitchCase-Option

Ein Aufzählungstyp zur Modellierung der Zustände.

Ein zentrales Objekt mit Zustand und Ereignisbehandlung.

Eine Methode per Aktion.

Eine Methode per Ereignis.

Eine Switch-Case-Anweisung zur Überführung.

34

Page 35: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Die SwitchCase-Option in UML

35

Sowohl Ereignisse als auch Aktionen

Page 36: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Diskussion der SwitchCase-Option

Pros

Einfachheit des Modells.

Wiederkennbarkeit von Ereignissen und Aktionen.

Cons

Fallunterscheidung basieren auf Low-Level-Code.

Monolithisch im Sinne des zentralen Objektes.

Zustände sind nur Werte (also keine Objekte).

Keine Laufzeitanpassung vorgesehen.

36

Page 37: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Optionen der Implementation von Zustandsdiagrammen

SwitchCase -- Überführung mittels switch-case-Anweisung

MethodDispatch -- Überführung mittels dynamischer Bindung

TableDriven -- Überführung mittels Datenstruktur

37

Page 38: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Die MethodDispatch-Option in UML

38

Page 39: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

MethodDispatch: Die Basisklasse für Zustände

39

public abstract class State {

public abstract void ticket(Turnstile me);

public abstract void pass(Turnstile me);

}Zur zustandsspezifischen

Ereignisbehandlung

Page 40: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

MethodDispatch: Wiederverwendbare Zustände

40

public abstract class State {

static protected Locked locked = new Locked();

static protected Unlocked unlocked = new Unlocked();

public abstract void ticket(Turnstile me);

public abstract void pass(Turnstile me);

}

Zur Wiederverwendung von Zuständen

Page 41: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau 41

/** * Behavior of turnstile in the locked state */public class Locked extends State {

public String printState() { return "Locked"; }

/** Event: (Insert a) ticket */public void ticket(Turnstile me) {

super.ticket(me);me.collect();me.state = unlocked;

}

/** Event: Pass (the turnstile) */public void pass(Turnstile me) {

super.pass(me);me.alarm();

}}

Analog für den Zustand Unlocked.

Page 42: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

MethodDispatch: Der Kontext für die Überführungsfunktion

42

public class Turnstile {State state = State.locked;public void alarm() { ... }public void collect() { ... }public void eject() { ... }public void ticket() {

state.ticket(this);}public void pass() {

state.pass(this);}

}

Zustandslokus des Automaten mit Initialisierung

Aktionen des Automaten

Delegation der Ereignisbehandlung an

aktuellen Zustand

Page 43: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Rezept der MethodDispatch-Option

Eine Klassenhierarchie zur Modellierung der Zustände.

Eine abstrakte Klasse

mit einer abstrakten Methode pro Ereignis.

Eine konkrete Klasse pro Zustand

mit einer konkreten Methode pro Ereignis.

Ein Kontext-Objekt

zur Verwaltung des aktuellen Zustands.

43

Page 44: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Pros

Typüberprüfung impliziert Vollständigkeit.

Zustände sind Objekte (Attribute+Verhalten).

Cons

Keine Laufzeitanpassung vorgesehen.

Erweiterbarkeit durch neue Klassen praktisch nicht nutzbar.

44

Diskussion der MethodDispatch-Option

Page 45: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Optionen der Implementation von Zustandsdiagrammen

SwitchCase -- Überführung mittels switch-case-Anweisung

MethodDispatch -- Überführung mittels dynamischer Bindung

TableDriven -- Überführung mittels Datenstruktur

45

Page 46: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

TableDriven

Eine Datenstruktur (“Map”)

Schlüssel: Zustand und Ereignis

Wert: Aktion und Zustand

Ein Wert (eines Aufzählungstyps) per Zustand.

Ein Wert (eines Aufzählungstyps) per Ereignis.

Ein Objekt (mit Methode) per Aktion.

46

(Zustand, Ereignis) → (Aktion, Zustand)

Page 47: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

TableDriven: Ereignisse und Zustände

47

public enum Event {Ticket,Pass

}

public enum State {Locked,Unlocked

}

Page 48: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

TableDriven: Aktionen

48

public abstract class Action {public abstract void execute();

}

public class Alarm extends Action {public static final Alarm singleton = new Alarm();public void execute() {

System.out.println("Alarm!");}

}

Zur Wiederverwendung

Page 49: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

TableDriven: Die Überführungsfunktion als Tabelle

49

private HashMap<State, HashMap<Event, ActionState>> table = new HashMap<State, HashMap<Event,ActionState>>();

public class ActionState {public Action action;public State state;public ActionState(Action a, State s) {

action = a;state = s;

}}

(Zustand, Ereignis) → (Aktion, Zustand)

Page 50: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

TableDriven: Füllen der Überführungsfunktion

50

HashMap<Event, ActionState> atLocked = new HashMap<Event, ActionState>();

atLocked.put(Event.Ticket,new ActionState(

Collect.singleton,State.Unlocked));

atLocked.put(Event.Pass,new ActionState(

Alarm.singleton,State.Locked));

table.put(State.Locked, atLocked);

Page 51: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Pros

Überführungsfunktion ist anpassbar zur Laufzeit.

Cons

Vollständigkeit ist nicht garantiert.

Zustände/Ereignisse sind nur Werte (keine Objekte).

Beschränkte Erweiterbarkeit.

Keine Attribute.

Kein Verhalten.

51

All dies ist leicht zu adressieren.

Diskussion der TableDriven-Option

Page 52: Modellierung und Implementation - userpages.uni-koblenz.desoftlang/oopmcourse/slides/statediagrams.pdf · (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau UML: Unified Modeling

(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau

Zusammenfassung Verhaltensmodellierung

Anwendungsfalldiagramm Nutzersicht auf SystemSequenzdiagramm Darstellung der Ausführung konkreter SzenarienAktivitätsdiagramm Sequentielle, parallele, kommunizierende ProzesseZustandsdiagramm Zustandsänderung von Objekten bei Ereignissen

Ausblick Generics…