# 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) ## Möglicher Spicker ![image_270.png](image_270.png)