Smith’s Aerospace © P. Bailey & K. Vander Linden, 2006 State Behavior Patrick Bailey Keith Vander Linden Calvin College
Smith’s Aerospace © P. Bailey & K. Vander Linden, State Behavior ● Objects can display: – Reactive, state-independent behavior – Discrete, state-dependent behavior – Continuous behavior ● UML models this intra-object behavior using State Machine diagrams.
Smith’s Aerospace © P. Bailey & K. Vander Linden, State Machine Diagrams ● State diagrams can be specified for classes, use cases, or other systems. ● They specify object behavior over a number of use cases. ● Key elements: – States – Transitions
Smith’s Aerospace © P. Bailey & K. Vander Linden, Example: State Machine Diagram Example from August, 2005www.ilogix.com
Smith’s Aerospace © P. Bailey & K. Vander Linden, Outline ● History History ● State Diagrams State Diagrams ● Implementing State Transitions Implementing State Transitions ● Using State Diagrams Using State Diagrams
Smith’s Aerospace © P. Bailey & K. Vander Linden, ● Developed statecharts, a higraph-based amalgam of graphs and Venn diagrams. ● Statecharts are the basis of UML state machine diagrams. David Harel State Charts Image from August, 2005www. Harel’s original digital watch state chart
Smith’s Aerospace © P. Bailey & K. Vander Linden, States ● Use states to represent conditions of objects in time. ● Internal Activities: – On Entry – On Exit – Internal Transition – Do Activities
Smith’s Aerospace © P. Bailey & K. Vander Linden, Transitions ● Transitions indicate movement from one state to another. ● Syntax: event-name ( parameter-list ) [ guard-expression ] / action-list
Smith’s Aerospace © P. Bailey & K. Vander Linden, Transition Events ● Events that can trigger transitions include: – Signal events – Call events – Time events – Change events ● Transitions without events and guards are followed immediately.
Smith’s Aerospace © P. Bailey & K. Vander Linden, Super-States Use super-states to represent sets of states that share common transitions and activities.
Smith’s Aerospace © P. Bailey & K. Vander Linden, Action Execution Order ● Actions are executed in this basic order: – Exit actions – Transition actions – Entry actions ● In the context of super/sub-states, outer actions are executed before inner actions.
Smith’s Aerospace © P. Bailey & K. Vander Linden, And States & Or States ● We’ve already seen Or states. ● And states represent orthogonal state spaces. Example from Fowler, M., UML Distilled, 2004.
Smith’s Aerospace © P. Bailey & K. Vander Linden, Example
Smith’s Aerospace © P. Bailey & K. Vander Linden, Pseudo-States Pseudo-states are state- like constructions that represent a variety of things, including: – Conditions – History – Termination – Branching varieties
Smith’s Aerospace © P. Bailey & K. Vander Linden, Example
Smith’s Aerospace © P. Bailey & K. Vander Linden, Implementing State Diagrams Code generators can implement state behavior in several ways: – Nested switch statements – State pattern – State table
Smith’s Aerospace © P. Bailey & K. Vander Linden, Using State Diagrams ● State diagrams represent intra-object behavior. ● Combine them with other diagrams to represent inter-object behavior. ● Use them only for objects with “interesting” state-based behavior. ● Take care to avoid: – Ambiguous specifications – Race conditions