软件工程-UML-状态图
状态图是描述单个对象生命周期内所有状态及触发状态转移的事件、动作的 UML 动态视图,通过初态、终态、普通状态与带条件的转移清晰展示对象行为变化。
stateDiagram-v2
[*] --> 可出借 : 图书入库
可出借 --> 预约 : 预定
预约 --> 可出借 : 取消预定/预定过期
可出借 --> 借出 : 借出
借出 --> 可出借 : 归还
可出借 --> 下架 : 破损/丢失
下架 --> [*] : 出库
📌 状态图核心概念
状态图是UML中用于描述单个对象在其生命周期内的所有可能状态,以及引发状态转移的事件、动作和活动的动态视图。
- 核心组成:状态、转移、事件、活动
- 状态分类:
- 初态:对象生命周期的起点,用空心圆表示
- 终态:对象生命周期的终点,用实心圆套空心圆表示
- 普通状态:对象在生命周期中所处的条件/情况,用圆角矩形表示
- 状态表示:
- 简略形式:仅显示状态名称
- 完整形式:包含状态名称和内部活动
📌 状态转移语法
状态转移的完整描述格式为:源状态 --[触发事件][监护条件]/动作--> 目标状态
示例:Off --[turnOn][有水]/烧水--> On
- 源状态:
Off(关闭) - 触发事件:
turnOn(打开) - 监护条件:
有水(满足条件才会转移) - 动作:
烧水(转移时执行的操作) - 目标状态:
On(运行)
📌 状态图建模步骤
- 确定建模对象:找出适合用状态图描述行为的类/对象
- 识别状态:列出对象所有可能存在的稳定状态
- 定义事件:确定会触发状态变化的外部/内部事件
- 设计转移:为状态间的变化添加转移条件和执行动作
- 精化模型:优化状态粒度、补充细节,确保逻辑完整
📌 示例解读(图书管理对象)
- 可出借状态:图书入库后的初始状态
- 预约状态:被用户预定后进入的状态,可通过“预定”事件触发
- 借出状态:被用户取走后进入的状态,可通过“借出”事件触发
- 下架状态:因破损/丢失等原因无法出借,可通过“破损或丢失”事件触发
- 状态转移:
- 可出借 → 预约:预定事件
- 预约 → 可出借:预定过期/取消预定事件
- 可出借 → 借出:借出事件
- 借出 → 可出借:归还事件
- 可出借 → 下架:破损或丢失事件
- 下架 → 终态:出库事件
💡 关键特点
- 聚焦单个对象:只描述一个特定对象的行为,不涉及多个对象交互
- 强调行为结果:关注对象在不同状态下对事件的响应
- 可视化生命周期:清晰展示对象从创建到消亡的完整状态变化流程