Lecture 10 Statediagrams
Lecture 10 Statediagrams
Software Engineering
Lecture 10
UML State Diagrams
Reading:
UML Distilled, Ch. 10, M. Fowler
initial State
event
transition
2
State diagram example 2
– removing candle reveals lock, which you can open using
key
– Otherwise get devoured by a killer rabbit
3
When to develop a state
chart?
• Model objects that have change state in interesting
ways:
– Devices (microwave oven, Ipod)
– Complex user interfaces (e.g., menus)
– Transactions (databases, banks, etc.)
– Stateful sessions (server-side objects)
– Controllers for other objects
– large, complex objects with a long lifespan
4
States
• state: conceptual description of the data in the object
– represented by object's field values
– E.g If Lock class has an isWaiting field
and it is set to true – we can say we are
in Waiting state.
6
Internal activities
• internal activity: events that the
central object takes on itself
– sometimes drawn as self-transitions
(events that stay in same state)
• entry/exit activities
– reasons to start/stop being in that state
7
User account management
State diagram example
8
Exercise
• Draw a state diagram for an order object.
9
Super/substates
• If there are states share common transitions and
internal activities
– You can make them substates
• Caution: Don't over-use this feature.
– easy to confuse separate states for sub-states within one
state
10
ATM software states at a bank
State diagram example
11
State diagram example
Java thread states
12
Implementing states
• What are some ways to write
code to match a state diagram?
– state tables (pseudo-code)
– nested if/else
– switch statements
– state enums
– State design pattern
13
State pattern
• state pattern: An object whose sole purpose is to represent
the current "state" or configuration of another larger object.
–A behavioral pattern (more on Design Patterns course).
–Often implemented with an enum type for the states.
–Each object represents one specific state for the larger object.
–The larger object sets its state in response to various mutations.
–Allows various observers and interested parties to quickly and
accurately know what is going on with the larger object's status.
14
State enum example
/** Represents states for a poker game. */
public enum GameState {
NOT_STARTED, IN_PROGRESS, WAITING_FOR_BETS,
DEALING, GAME_OVER;
}