软考-软件设计师:面向对象技术-UML:状态图

状态图

展现了一个状态机,由状态、转换、事件和活动组成

它对于接口、类或协作的行为建模尤为重要,而且它强调事件导致的对象行为,这非常有助于对反应式系统建模。

适用场景

当对系统、类或用例的动态方面建模时,通常是对 反应型对象(有多种状态) 建模。

书中例子

例子

解释

构成

  • 起始状态:实心圆,只能有一个初态
  • 终止状态:实心圆外套一个圆圈。可以有一个或多个,也可以没有终态
  • 一般状态:圆角矩形
  • 事件:/ 前面表示事件
  • 动作:/ 后面表示动作
  • 监护条件:[ ] 中的判断条件
  • 转换(转移):从一个状态到另一个状态,如:off 转换到 on

转换

两个状态间 的一种关系,表示对象将在当前状态中 执行动作,并在 事件发生条件满足 时进入后继状态。

格式:事件(参数)【条件】/动作(不是都有)

事件类型

  • 信号事件:对象之间发送信号和接收信号实现通信,如:鼠标

  • 调用事件:一个对象请求调用另一个对象的操作,如:方法调用

  • 变换事件:when 后面接 布尔表达式,如 when(A>100)

  • 时间事件:到达某一时间或经过某一个时间段,用 whenafter 表示

状态组成部分

  • 状态名(name)
  • 进入/退出动作(entry action/exit action)
  • 内部转移(internal transition)
  • 子状态(substate)
  • 延迟事件(deferred event)

组合状态

状态还有 子状态 组成

顺序子状态(串行)

多个子状态之间是互斥的,不能同时存在。整体状态完成,需要A1和A2都完成

如下图:

状态A 为组合状态,其中 A1A2A 的子状态:

并发子状态(并行)

并发子状态某个时刻可以 同时达到多个子状态,并且状态内部可以 并发进行

如下图:

称该A状态为并发状态,其中A1、A2、A3和A4都为其并发子状态。

如下所示的UML状态图中,()时,不一定会离开状态B。

A、状态B中的两个结束状态均达到
B、在当前状态为B2时,事件e2发生
C、事件e2发生
D、事件e1发生

分析

A错误:一定离开B,转移到 C2

B错误:状态B 转移 到 状态 C3

C正确:如果没处于 B2 状态,发生事件 e2,也不会离开B

D错误:e1发生,状态转移到 C1


原文出处:http://malaoshi.top/show_1GW103DJtjlm.html