状态图描述一个实体基于事件反应的动态行为,显示该实体如何根据当前的状态对不同的事件作出反应的,为了研究类、角色、子系统或组件的行为。
状态图的核心元素包括:
- 起点
【作用】描述活动图的开始状态
【表示方式】黑的实心圆
- 终止点
【作用】描述活动图的终止状态
【表示方式】实心圆的空心圆
- 状态(State):对象所处的某个具体时刻的条件或者情况。
【作用】活动的所处状态
【表示方式】椭圆矩形
- 转换(Transition):对象从一个状态变化到另一个状态的过程。
【作用】描述一个活动转向另一个活动
【表示方式】带箭头的实线段,指向转向的活动
- 事件(Event):导致状态转换的一个外部的或者内部的发生。
- 动作(Action):在进行状态转换时执行的活动。
【作用】可以是手动也可以自动的执行任务
【表示方式】圆角矩形
举例来说,考虑一个在线购物系统中的订单对象,其状态图可能包括“新建订单”、“待付款”、“已付款”、“已发货”和“已完成”等状态,以及触发状态转换的事件如“提交订单”、“支付完成”、“卖家发货”等。
•最为核心的元素无外乎是两个:一个是用圆角矩形表示的状态(初态和终态例外);另一个则是在状态之间的、包含一些文字描述的有向箭头线,这些箭头线称为转换
转换的五要素
示例:在订单处理的过程中,会员可以点击“取消订单”取消该订单。如果支付失败,该订单将被标记为挂起状态,可后续重新支付,如果挂起超时30分钟未支付,系统将自动取消该订单。订单支付成功后,系统判断订单类型:
(1)对于常规订单,标记为备货状态,订单信息发送到货运部,完成打包后交付快递发货。
(2)对于定制订单,会自动进入定制状态,定制完成后交付快递发货。会员在系统中点击“收货”按钮变为收货状态,结束整个订单的处理流程。
区分状态图和活动图的特点
状态图,强调的是类对象具有的状态;活动图,主要强调处理流程和数据流转,各种执行流程。
选择题
-
状态图中,以下哪一项是描述状态之间转换的触发因素? A. 状态 B. 转换 C. 事件 D. 动作
- 在状态图中,当对象从一个状态转移到另一个状态,这个过程称为什么? A. 事件 B. 转换 C. 动作 D. 状态
- 下列哪一项不是状态图的核心元素? A. 对象 B. 状态 C. 转换 D. 事件
- 在状态图中,状态是指? A. 对象所处的具体时刻的条件或情况 B. 触发状态变化的外部或内部发生 C. 在进行状态转换时执行的活动 D. 从一个状态到另一个状态的过程
- 哪一项活动不是由状态图直接表示的? A. 状态的变化 B. 事件的发生 C. 动作的执行 D. 代码的编写
- 对于在线购物系统中的订单对象,以下哪一状态不可能出现在其状态图中? A. 待付款 B. 已发货 C. 购物车 D. 已完成
- “支付完成”在订单状态图中属于什么? A. 状态 B. 转换 C. 事件 D. 动作
- 动作在状态图中的作用是什么? A. 描述状态 B. 触发转换 C. 执行在状态转换时的活动 D. 描述对象
- 状态图主要用于显示什么? A. 对象的代码实现 B. 对象在其生命周期内的状态序列 C. 事件的具体代码 D. 系统的物理结构
- 在状态图中,“卖家发货”最可能导致什么状态转换? A. 从“已完成”到“已发货” B. 从“已付款”到“已发货” C. 从“已发货”到“已完成” D. 从“待付款”到“已付款”
答案和解析
- 答案:C。 事件是描述状态之间转换的触发因素,是导致状态转换发生的外部或内部条件。
- 答案:B。 转换是对象从一个状态到另一个状态的过程,是状态图中描述状态变化的关键元素。
- 答案:A。 对象不是状态图的核心元素。状态图的核心元素包括状态、转换和事件。
- 答案:A。 状态指的是对象所处的具体时刻的条件或情况,反映了对象在特定时间点的属性值。
- 答案:D。 代码的编写不是由状态图直接表示的活动。状态图主要描述状态的变化、事件的发生和动作的执行。
- 答案:C。 “购物车”不是订单对象的一个状态,而是在线购物系统中另一种对象的状态或功能。
- 答案:C。 “支付完成”是一个事件,它触发了订单状态的转换,如从“待付款”到“已付款”。
- 答案:C。 动作执行在状态转换时的活动,是对转换过程中发生的具体操作的描述。
- 答案:B。 状态图主要用于显示对象在其生命周期内的状态序列,帮助理解对象的行为特性。
- 答案:B。 “卖家发货”事件最可能导致状态从“已付款”转换到“已发货”,表示订单处理流程中的一步。