什么是状态:
1.一个对象的状态空间…
2.具体的状态与抽象状态.
所有对象都有”状态”,即:存在或不存在,不存在也是一种状态。
如对象存在,则具有相应表示其属性的值,每一种状态表示一种可能的属性赋值:
例如:栈
UML状态图中的状态
一个状态表示在某个时间段内
关于对象的属性取值的陈述是正确的
某个动作正在执行或者在某个时间等待触发
- 检查订单商品的存货
- 等待缺货产品到货
状态相关的活动类型
do/activity
- 只要处于这个状态,某个活动就会一直执行,知道离开这个状态
entry/action & exit/action
当进入(/离开)某个状态时执行的动作
迁移包括五部分:
- 源状态 source state
- 触发时间 event trigger
- 警戒条件 guard condition
- 动作 action
- 目标状态 target state
状态迁移的发生,当且仅当迁移条件满足时才能触发状态条件
- 每个状态迁移都对应一个触发事件,同时满足一定都警戒条件
- 当触发事件发生,或满足相关禁戒条件满足时,进行相应当状态迁移
- 状态迁移当过程会伴随相关当对象操作
对于给定当状态,最终只能产生一个迁移,因此从相同当源状态、触发事件相同当几个迁移之间当条件应该是互斥当。
UML状态图中事件(events)
- 事件的意义在于系统需要了解正在发生什么
- 状态图中,事件仅需和系统或当前建模的对象相关
- 从系统角度触发,事件必须建模成一个瞬间即可完成的动作
- 在OOD中通过传递消息的方式实现事件
- 在UML中有四种类型的事件
- 变更事件
当给定条件成立时就会发生变更事件 - 调用事件
当给定对象当操作被调用执行时会发生调用事件 - 时间事件
表明时间段过去,或某个特殊事件点的触发 - 信号事件
当给定对象收到某实时信号
- 变更事件
UML状态图中当动作(action)
- 动作是在状态内部或者状态间迁移时执行时的原子操作
- 两张特殊的动作: 入口动作(entry action)和出口动作(exit action)
- 入口动作:进入状态时执行的活动,格式如:
Entry/action-expression - 出口动作: 推出状态时执行的活动,格式如:
Exit/action-expression
(其中action-expression)可以引用对象本身的属性和输入事件的参数。
- 入口动作:进入状态时执行的活动,格式如:
状态图建模步骤
- 找出适合用模型描述其行为的类
- 确定对象可能存在的状态
- 确定引起状态迁移的事件
- 确定迁移进行时对象执行的相应动作
- 对建模的结果进行相应的惊喜和细化
状态图的作用
- 描述了状态转换时所必须触发的条件、监护条件和动作,避免程序员在程序中引入非法事件
- 描述了状态之间的转换顺序,可以清晰的看出事件的执行顺序
- 清晰的事件顺序可以避免程序员在开发程序时出现事件错误顺序的情况
- 通过判定可以更好地描述工作流因为不同的条件发生的分支