diff --git a/Writerside/images/image_117.png b/Writerside/images/image_117.png new file mode 100644 index 0000000..af2748d Binary files /dev/null and b/Writerside/images/image_117.png differ diff --git a/Writerside/images/image_118.png b/Writerside/images/image_118.png new file mode 100644 index 0000000..765ab36 Binary files /dev/null and b/Writerside/images/image_118.png differ diff --git a/Writerside/images/image_119.png b/Writerside/images/image_119.png new file mode 100644 index 0000000..2fcc890 Binary files /dev/null and b/Writerside/images/image_119.png differ diff --git a/Writerside/images/image_120.png b/Writerside/images/image_120.png new file mode 100644 index 0000000..7b4656c Binary files /dev/null and b/Writerside/images/image_120.png differ diff --git a/Writerside/images/image_121.png b/Writerside/images/image_121.png new file mode 100644 index 0000000..6517c5f Binary files /dev/null and b/Writerside/images/image_121.png differ diff --git a/Writerside/images/image_122.png b/Writerside/images/image_122.png new file mode 100644 index 0000000..58fd64d Binary files /dev/null and b/Writerside/images/image_122.png differ diff --git a/Writerside/images/image_123.png b/Writerside/images/image_123.png new file mode 100644 index 0000000..0de7f1c Binary files /dev/null and b/Writerside/images/image_123.png differ diff --git a/Writerside/images/image_124.png b/Writerside/images/image_124.png new file mode 100644 index 0000000..e9536fe Binary files /dev/null and b/Writerside/images/image_124.png differ diff --git a/Writerside/images/image_125.png b/Writerside/images/image_125.png new file mode 100644 index 0000000..3ac829a Binary files /dev/null and b/Writerside/images/image_125.png differ diff --git a/Writerside/images/image_126.png b/Writerside/images/image_126.png new file mode 100644 index 0000000..3727161 Binary files /dev/null and b/Writerside/images/image_126.png differ diff --git a/Writerside/images/image_127.png b/Writerside/images/image_127.png new file mode 100644 index 0000000..35b4123 Binary files /dev/null and b/Writerside/images/image_127.png differ diff --git a/Writerside/in.tree b/Writerside/in.tree index f6e1ef0..5236b55 100644 --- a/Writerside/in.tree +++ b/Writerside/in.tree @@ -21,6 +21,7 @@ + diff --git a/Writerside/topics/OOAD/UML.md b/Writerside/topics/OOAD/UML.md index 165d5b5..dee4235 100644 --- a/Writerside/topics/OOAD/UML.md +++ b/Writerside/topics/OOAD/UML.md @@ -15,7 +15,7 @@ - Kann Verhalten detailliert definieren - Bestimmt, wie sich der Zustand eines Elements über Zeit verändert -- **State Machine Diagram** +- **[State Machine Diagram](UMLStateDiagramme.md)** - **Use Case Diagram** - Activity Diagram - Interaction Diagram diff --git a/Writerside/topics/OOAD/UMLStateDiagramme.md b/Writerside/topics/OOAD/UMLStateDiagramme.md new file mode 100644 index 0000000..e03a81b --- /dev/null +++ b/Writerside/topics/OOAD/UMLStateDiagramme.md @@ -0,0 +1,96 @@ +# State Machine Diagrams +## Introduction +- Beschreiben den Zustand von Objekten oder des Systems + +### Introduction Example +- Light can be on / off +- ![image_117.png](image_117.png) + +## States +- Diskretes, durchgehendes Segment von Zeit, während der das Verhalten des Objekts stabil ist +- Kann eine passive Qualität haben + - _Licht an / aus_ +- Kann auch eine aktive Qualität haben / Was das Objekt tut + - _Kaffeemaschine mahlt Kaffee_ +- Objekt bleibt in dem Zustand bis es von einem Event stimuliert wird + +- States sind **nicht**: + - Objekte oder Komponenten des Systems + - Aktivitäten des Systems + +### Internal Activities of States +![image_118.png](image_118.png) +- 3 Aktivitäten die an einem definierten Moment ausgeführt werden + - **entry behavior** + - **do-activity behavior** + - kann unterbrochen werden + - **exit behavior** +- entry- und exit behavior können nicht unterbrochen werden + +#### Activities Example +![image_119.png](image_119.png) + +### Internal Pseudostate +![image_121.png](image_121.png) +- **nur einmalig** +- Markieren den Start eines Maschinen-Diagramms +- Keine eingehenden Pfeile +- Ein ausgehender Pfeil zum ersten _richtigen_ Zustand + - ohne Events + +### Final State +![image_120.png](image_120.png) +- **können mehrere existieren** +- Objekte können permanent in einem End-Status sein + + +## State Transitions +### External Transitions +![image_122.png](image_122.png) +- Repräsentiert eine Änderung des Zustands von einem Ursprungs-Zustand zu einem Ziel-Zustand +- Eine Transition braucht keine Zeit + - Das System ist immer in einem Zustand, nie in einer Transition + +![image_123.png](image_123.png) + +#### Syntax of Description: trigger[guard] / behavior +- Alles **optional**: + - **Trigger** (Event), dass eine [Transition](#state-transitions) hervorruft + - **Guard** (Condition), welche die Ausführung der Transition aktiviert + - Sobald das Event stattfindet, muss der Guard erfüllt werden + - Falls dasselbe Event mehrere Transitions eines einzigen States hervorruft + - Die Guards müssen sich gegenseitig ausschließen + - Falls nicht: EIne Transition wird zufällig ausgesucht + - **Behavior** (Effects) wird während der Transition ausgeführt + +### Internal Transition +- Handhaben Events innerhalb eines States +- ![image_124.png](image_124.png) + +### Types of Events +#### Call Events +- Operation calls inklusive der Parameter + - _occupy(user, LectureHall)_ + +#### Time Events +- Zeitbasierter Zustandsübergang (relativ / absolut) + - _relative: after(5 sec)_ + - _absolute: when(time == 16:00)_ + +#### Change Events +- Permanente Überwachung, ob eine Bedingung wahr wird + - _when (registration == numberOfSeats)_ + +#### Any Receive Events +- Zur Spezifikation einen Typ eines _else_ Übergangs +- Falls ein Event auftritt, welches keine Übergänge für den aktiven Zustand auslöst + - _the object transitions to S4 without any event that is not e1 or e2_ + +#### Completion Events +- Falls alle Verhaltensweisen eines States vollständig sind + - _once A1 is completed completion event triggers transition to S2_ + +### State Transition Examples +- ![image_125.png](image_125.png) +- ![image_126.png](image_126.png) +- ![image_127.png](image_127.png) \ No newline at end of file