【UML】第15篇 状态机图

目录

一、状态机图的定义

二、应用场景

三、绘图符号的说明

四、语法

五、例图


一、状态机图的定义

状态机图(State Machine Diagram)是UML中的一种行为图,它描述了一个对象在其生命周期内的状态变化。状态机图通过展示对象在不同状态下的行为以及从一个状态转移到另一个状态的条件,来帮助开发人员理解系统的动态行为。

二、应用场景

状态机图在以下场景中特别有用:

  1. 描述复杂系统的行为:当系统在不同状态下表现出不同的行为时,状态机图可以有效地描述这些行为。
  2. 分析和设计模式识别:状态机图可以帮助识别和设计模式,如状态模式和策略模式。
  3. 并发和分布式系统:在并发和分布式系统中,状态机图可以清晰地表示不同组件之间的交互和状态转换。
  4. 通信协议:状态机图常用于描述通信协议中的状态转换和消息序列。
  5. 用户界面设计:状态机图可以描述用户界面的不同状态和用户交互。

三、绘图符号的说明

状态机图包括以下主要元素和符号:

  • 状态(State):表示对象在其生命周期中的某个阶段。状态用矩形表示,矩形内部包含状态的名称。
  • 转换(Transition):表示从一个状态到另一个状态的改变。转换用带箭头的线表示,线上标有触发转换的事件或条件。
  • 初始状态(Initial State):表示对象创建时的状态。初始状态用一个实心圆表示。
  • 最终状态(Final State):表示对象销毁或生命周期结束时的状态。最终状态用一个带有内圆圈的空心圆表示。
  • 历史状态(History State):表示对象返回到其先前的某个状态。历史状态用带有“H”标记的矩形表示。
  • 复合状态(Composite State):表示包含其他子状态的状态。复合状态用带有子状态划分的矩形表示。

四、语法

状态机图的语法主要包括状态和转换的定义。在UML中,状态机图通常使用以下语法元素:

  • 状态语法stateName [entryAction/doActivity/exitAction]
    • stateName:状态的名称。
    • entryAction:进入状态时执行的动作。
    • doActivity:在状态内部持续执行的活动。
    • exitAction:退出状态时执行的动作。
  • 转换语法sourceState -[eventGuard/action]-> targetState
    • sourceState:转换的起始状态。
    • eventGuard:触发转换的事件和条件。
    • action:执行转换时执行的动作。
    • targetState:转换的目标状态。

这些语法元素在UML工具中通常通过图形界面进行绘制和编辑,但也可以使用文本表示法进行描述。

五、例图

(后续会更多详细的场景应用阐释,编辑更新本文章) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/299619.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

技术学习|CDA level I 描述性统计分析(数据的描述性统计分析)

技术学习|CDA level I 描述性统计分析(数据的描述性统计分析) 数据的描述性统计分析常从数据的集中趋势、离散程度和分布形态3个方面进行。 一、集中趋势 集中趋势是指数据向其中心值靠拢的趋势。测量数据的集中趋势,主要是寻找其中心值。…

跨站脚本攻击漏洞XSS绕过22种方式总结

XSS漏洞简介 跨站脚本攻击在目前这个时间节点还是属于一个排位比较高的漏洞,在OWASP TOP10 2021中隶属于注入型漏洞,高居TOP3的排位,可见这个漏洞的普遍性。跨站脚本攻击的学习中我们主要需要明白的是跨站的含义,以及XSS的核心。…

Vue3-39-路由-导航异常的检测 afterEatch 与 编程式导航之后的订阅动作

说明 本文主要是介绍一下 路由的后置守卫 afterEatch 的一个重要的作用 : 就是检测路由异常信息。 它的实现方式是 通过第三个参数来返回的。 而且,它的异常检测是全局的。导航的异常有以下三种类型: aborted : 在导航守卫中 被拦截并返回了…

1月最新阿里云服务器租用价格表_轻量61元_ECS99元一年

2024年1月最新阿里云服务器租用价格表,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、轻量应用服务器2核2G3M带宽轻量服务器一年61元,2核4G4M带宽轻量服务器一年165元12个月、2核4G服务器30元3个月,云服务器ECS可以选择经济型e实例、通用…

学习笔记——C++运算符之算术运算符

C中运算符包含诸多种类,其中有:算术运算符,赋值运算符,比较运算符和逻辑运算符 每一种运算符及其作用如下表所示: 一,算术运算符1,加减乘除 其中,“”,“-”运算符既可…

QT上位机开发(数据库sqlite编程)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 编写软件的时候,如果用户的数据比较少,那么用json保存是非常方便的。但是一旦数据量大了之后,建议还是用数据库…

编程语言的未来:贴近人类、灵活高效与探索无限

编程语言的未来? 在当今的科技潮流中,编程语言是至关重要的一环,更是赋能科技行业的基础工具。我深信,未来的编程语言可能将朝着更贴近人类、灵活高效和面向无限可能的方向发展。 人性化是我预期的第一个趋势。未来的编程语言将…

如何解决找不到mfc100u.dll无法运行程序问题,分享四种靠谱的方法

在日常使用电脑的过程中,我们可能会遇到各种问题,其中之一就是找不到mfc100u.dll的困扰。这个问题主要是因为mfc100u.dll是Microsoft Foundation Class(MFC)库中的一个版本特定的DLL文件,它是Visual Studio 2010及更早…

轻松识别几个小时的长音视频文件

前言 之前的文章绍一个准确率非常高的语音识别框架,但那个只能识别实时的短音频,如果想要识别一个非常长的音频,几十分钟,甚至几个小时,那之前的那个是做不到的所以就有了本文。本文介绍搭建一个长语音识别服务&#…

LeetCode刷题:面试题 02.01. 移除重复节点

题目: 是否独立完成:算是,但是使用自己的办法时间复杂度会超标 解题思路: 1.双循环嵌套,定义快慢节点,双层嵌套循环,如果值一样则剔除,但是时间复杂度为O(n)…

深度卷积生成对抗网络(DCGAN)|完整代码实现

生成对抗网络(GAN)由Ian Goodfellow在2014年提出。GAN通过训练两个神经网络解决了非监督问题。这两个网络一个称为生成网络,一个称为判别网络。 事实上,该网络的训练过程很有趣。我们可以借助一个例子来理解。最初,伪…

强化学习的数学原理学习笔记 - RL基础知识

文章目录 Roadmap🟡基础概念贝尔曼方程(Bellman Equation)基本形式矩阵-向量形式迭代求解状态值 vs. 动作值 🟡贝尔曼最优方程(Bellman Optimality Equation,BOE)基本形式迭代求解 参考资料&…

服务器不稳定是什么意思?有哪些表现

在当今的信息化时代,服务器已经成为企业和组织不可或缺的基础设施。然而,由于各种原因,服务器可能会出现不稳定的情况,给企业和组织带来不必要的损失和风险。那么,什么是服务器不稳定,它又有哪些表现呢&…

35岁的程序员,见到领导就躲,害怕跟领导沟通,你被说中了吗?

35岁的程序员,见到领导就躲,害怕跟领导沟通,你被说中了吗? 35岁的小王是一名项目经验丰富、解决问题能力强的资深程序员,然而却唯独有一个软肋:害怕碰见领导,害怕跟领导沟通。 我们不经要问&a…

西电期末1028.信号解调

一.题目 二.分析与思路 题越来越水了 三.代码实现 #include<bits/stdc.h>//万能头 int main() {int n;int a,b;//坐标for(int i0;i<n;i){scanf("%d%d",&a,&b);if((a-4)*(a-4)(b-4)*(b-4)>(a4)*(a4)(b4)*(b4))printf("2 ");else pri…

STM32 基础知识(探索者开发板)--135讲 ADC转换

ADC定义&#xff1a; ADC即模拟数字转换器&#xff0c;英文详称 Analog-to-digital converter&#xff0c;可以将外部的模拟信号转换 ADC数模转换中一些常用函数&#xff1a; 1. HAL_ADC_Init 函数 HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc); 初始化ADC 形参&…

Redis 持久化——AOF

文章目录 为什么需要AOF?概念持久化查询和设置1. 查询AOF启动状态2. 开启AOF持久化2.1 命令行启动AOF2.2 配置文件启动 AOF 3. 触发持久化3.1 自动触发3.3 手动触发 4. AOF 文件重写4.1 什么是AOF重写&#xff1f;4.2 AOF 重写实现4.3 AOF 重写流程 5. 配置说明6. 数据恢复6.1…

dp--118.杨辉三角/easy 理解度A

118.杨辉三角 1、题目2、题目分析3、解题步骤4、复杂度最优解代码示例5、抽象与扩展 1、题目 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[…

Spring+Vue实战项目环境准备跑通程序

SpringVue 源项目 后端&#xff1a; 首先在GitHub上克隆项目到本地&#xff08;zip包下载/sourcetree拉取/gitbash克隆&#xff09;。 https://github.com/songboriceman/doubao_community_backend 然后下载Lombok安装到你的IDE&#xff08;eclipse&#xff09;。 https://p…