状态图的关系类型有哪些?各类型如何表示?
状态图中的关系类型与表示方法
状态图(UML状态机图)里的核心关系主要有以下几种,每种都有明确的UML规范表示方式:
状态转换(Transition)
这是状态图最基础的关系,描述对象在不同状态间的切换逻辑。- 表示:用带箭头的实线连接源状态和目标状态,箭头指向切换后的目标状态。箭头上可标注触发事件、监护条件和执行动作,格式为
事件[监护条件]/执行动作,比如提交表单[表单验证通过]/保存数据。
- 表示:用带箭头的实线连接源状态和目标状态,箭头指向切换后的目标状态。箭头上可标注触发事件、监护条件和执行动作,格式为
初始伪状态关联
定义状态机的起始点,指定对象创建后的初始活跃状态。- 表示:用实心小圆点作为初始伪状态,通过一条带箭头的实线指向第一个进入的状态,无需额外标注事件或条件。
终止伪状态关联
标记状态机的结束,对象进入此状态后,状态机停止运行。- 表示:用内部包含实心圆的空心圆作为终止伪状态,通过带箭头的实线从任意结束状态指向它,通常不需要标注额外内容。
历史状态关联
用于记录复合状态的最后活跃子状态,当复合状态再次被激活时,直接恢复到该子状态,避免重复初始化。- 表示:用**圆圈内标注H(浅历史)或H*(深历史)**表示历史状态,通过带箭头的实线连接到对应的复合状态或其子状态。浅历史仅记录复合状态的直接子状态,深历史会追溯到嵌套层级的最后活跃子状态。
复合状态的嵌套/并行关系
复合状态是包含多个子状态的容器,子状态分为互斥(顺序)和并行两种类型。- 表示:用大矩形框嵌套小矩形/圆角矩形表示顺序复合状态,内部子状态的转换按常规状态转换绘制;如果是并行复合状态,用虚线将大框划分为多个独立区域,每个区域对应一个并行运行的子状态机,各子状态机的转换独立进行。
状态的入口/出口动作关联
绑定状态进入或离开时自动执行的操作,属于状态与动作的关联逻辑。- 表示:在状态内部的文本区域标注
entry/动作内容(进入状态时执行)或exit/动作内容(离开状态时执行),比如在“已登录”状态内标注entry/加载用户个人配置。
- 表示:在状态内部的文本区域标注
内容的提问来源于stack exchange,提问作者serhiyiv
相关产品推荐
相关产品推荐

