有限状态机的组件和示例
1 简介
状态机图用于表示系统或系统的一部分在有限时间实例下的状况。
它是一个行为图,它使用有限状态转换来表示行为。
这里解释什么是状态机图、状态机图的组件和用例。
状态机图是一种 UML 图,用于表示系统或系统的一部分在有限时间实例下的状况。它是一个行为图,它使用有限状态转换来表示行为。
状态机图也称为状态图或有限状态机。这两个术语可以互换使用。
状态机图用于对类响应时间和不断变化的外部刺激(导致系统将其状态从一个状态更改为另一个的事件)的动态行为进行建模。
我们可以说每个类都有一个状态,但我们不会使用状态机图对每个类进行建模。
2 组件和示例
让我们通过帮助用户验证示例来理解状态机图:
上面的状态机图显示了特定系统的验证子系统或类存在的不同状态。
其中状态机图的基本组件和符号:
- 初始状态
我们使用一个黑色实心圆圈来表示 System 或 Class 的初始状态。
- 状态流转
我们使用实线箭头来表示控制从一种状态到另一种状态的转换或更改。箭头标有导致状态更改的事件。
- 状态
我们使用圆角矩形来表示状态。状态表示类的对象在某一时刻的条件或情况。
- 分叉
我们使用一个圆角实心矩形条来表示 Fork 表示法,其中包含来自父状态的传入箭头和指向新创建状态的传出箭头。我们使用 fork 表示法来表示一个 state 分裂成两个或多个并发状态。
- 状态收敛
我们使用圆角实心矩形条来表示 Join 表示法,其中包含来自联接状态的传入箭头和指向公共目标状态的传出箭头。当两个或多个状态在一个或多个事件发生时同时收敛为一个时,我们使用 join 表示法。
- 自我转换
我们使用一个指向 state 本身的实心箭头来表示 self transition。在某些情况下,对象的状态在事件发生时不会更改。我们使用 self transitions 来表示这种情况。
- 复合状态
我们还使用圆角矩形来表示复合状态。我们使用复合状态表示具有内部活动的状态。
- 最终状态
我们在圆表示法中使用实心圆来表示状态机图中的最终状态。
3 在 UML 中绘制状态机图的步骤
以下是如何在 UML 中绘制状态机图的步骤:
- 第 1 步:识别系统:
了解您的图表所代表的内容。
无论是机器、进程还是任何物体,都要知道它可能会经历哪些不同的情况或条件。
- 第 2 步:确定初始状态和最终状态:
弄清楚系统从何处开始 (初始状态) 和结束位置 (最终状态)。
这些就像系统旅程的起点和终点。
- 第 3 步:确定可能的状态:
想想您的系统可能处于的所有不同情况。这些就像它经历的不同阶段或条件。使用边界值来指导您定义这些状态。
- 第 4 步:标签触发事件:
了解导致系统从一种状态变为另一种状态的原因。
这些原因或条件就是事件。用促成它发生的原因标记每个过渡。
- 第 5 步:用适当的符号绘制图表:
现在,获取所有这些信息并将其提取出来。
使用矩形表示状态,使用箭头表示过渡,使用圆形或圆角矩形表示初始和最终状态。
确保以有意义的方式连接所有内容。
我们绘制的 UML 图取决于我们旨在表示的系统。以下是在线订购系统的一个例子:
在收到订单时,我们从初始状态转换为 Unprocessed 订单状态。
然后检查未处理的订单。
如果订单被拒绝,我们将转换为 Rejected Order 状态。
如果订单被接受并且我们有可用的商品,我们将转换为 fulfilled 订单状态。
但是,如果项目不可用,我们将转换为 Pending Order 状态。
订单完成后,我们将过渡到最终状态。在此示例中,我们将两种状态(即 Fulfilled order 和 Rejected order)合并为一个最终状态。
4 小结
以下是状态机图的主要用例:
状态机图对于建模和可视化系统的动态行为非常有用。
它们还用于 UI 设计中,有助于说明界面如何响应用户作而变化,从而帮助设计人员创造更好的使用体验。
在游戏设计中,状态机图可以帮助对角色或对象的行为进行建模,详细说明它们如何根据玩家交互或游戏事件改变状态
UML 中的状态机图就像图片,告诉我们系统中的事情是如何变化的。
它们显示了系统可能处于的不同情况以及它如何在它们之间移动。
这些图表有助于我们了解哪些事件使这些更改发生。
无论是用于设计软件还是解释某物的工作原理,状态机图都类似于视觉指南,可以更轻松地查看和理解系统在不同情况下的行为方式。
- 随机文章
- 热门文章
- 热评文章
- 性格测试你的性格像《局中人》中的谁
- 性格测试 测你的性格像《小娘惹》中的谁
- 测你的性格像《且听凤鸣》中的谁
- 测试性格的心理测试题
- 心理在线测试 测测你有没有能力
- Java 面向对象设计:如何写出高内聚、低耦合的代码?
- 能力在线测试 察言观色的能力
- 个性测试 你的心思细腻程度
- 拖拽式低代码引擎架构——企业级系统研发成本压缩90%