State Diagram
Determines the state of objects of an application
For only objects of those classes who have important temporal behaviour
Syntax
Shape | Purpose |
---|---|
Rounded Rectangle | Contains State Name |
Arrow Lines | Connection btw states |
Rectangle | Boundary |
Pentagonal tag | Represents Class Name |
Brackets | Guard Statement |
Filled Dot | Entry Point |
Encircled Filled Dot | Exit Point |
event/{ description } | activities within state |
Vertical line - another diagram | Concurrent states |
Syntactical Rules
- State names are adverb (very common to end with
ing
) - Events cause transition from one state to another
- Event names are written on top of the arrow lines (lower camel case italics)
- There can be multiple exit points, like on multiple signal triggers
- Unlabelled transition is a completion transition (from end to start)
- Activities can be performed within the states such as
enter
,do
,exit
.- We can define common and constant tasks in these activities
Info
- States represent Intervals of time
- Events represent Point in Time
Types of Events
Following are the types of events:
Signal Events
- Purpose : Change state
- Can be Guarded
- Only change the state on that external signal if condition is satisfied
- Example would be to change state to
FULL
whencurrentSeats >= maxSeats
- The guard statement will be in Regular Font but signal name will be italics.
Change Events
- keyword : when (…)
Time Events
- Absolute
- keyword : when (…)
- Relative
- keyword : after (…)
Types of SD
Following are the types of State Diagrams:
One-Shot
- Distinct time for object to be created and destroyed (start and end)
Continuous
- No start or end (continuous existence)
Nested States
State diagram within state diagram
Can be used used to demonstrate sub abstract state within a state diagram
It needs to have its explicit entry point if no arrow points to one of its state
Convention: Rounded Rectangle same as a state
State Machine
Further elaborates a state
Can be used to define activities and sub states within a state
Convention:{StateName} : {MachineName}
Concurrent States
Determine states that are triggered at the same time
For Concurrent tasks
Convention: {Vertical line connecting each state within a circular rectangle boundary}
Each concurrent task should be separated by a horizontal dashed line