一、状态图的核心概念
- 定义
状态图(State Diagram)是UML中用于描述对象在其生命周期内状态变化的图形化工具,通过状态、事件、转换和动作等元素,展现对象的动态行为。 - 适用场景
- 对象具有三个及以上潜在状态(如订单的“未支付”“已发货”“已完成”)
- 需明确状态间的转换规则(如电梯的运行状态)
- 核心元素
- 状态:圆角矩形表示(如
未选课
、已满
),分初态(实心圆)、终态(双圆环)和中间状态。 - 转换:带箭头的实线,标注触发事件和动作(如
选课操作/课程数+1
) - 事件:引起状态变化的动作(如用户点击按钮、系统超时)
- 决策节点:菱形表示条件分支(如库存是否充足)
- 状态:圆角矩形表示(如
二、状态图绘制步骤
- 确定建模对象
- 选择具有复杂状态变化的实体(如用户、订单、设备)
- 示例:选课系统中的“学生选课状态”
- 识别状态与转换
- 列出所有可能状态(如
未选课
、选课中
、已满
) - 定义触发转换的事件(如
选课操作
、删除课程
)
- 列出所有可能状态(如
- 优化逻辑结构
- 合并冗余状态:将相似状态合并(如“待审核”和“审核中”)
- 层次化设计:使用子状态管理复杂流程(如电商订单的“物流子状态”)
三、设计技巧与注意事项
- 最佳实践
- 精简状态数量:避免过度细化(如不区分“选课中1”和“选课中2”)
- 明确转换条件:标注警戒条件和动作(如
[库存>0]/生成订单
) - 标注活动与动作:在状态内描述进入/退出时的操作(如
进入时检查权限
)
- 常见错误规避
- 遗漏终态:需明确终止条件(如订单终态为“已完成”或“已取消”)
- 循环转换未处理:确保每个转换都有明确的退出路径