【UML用户指南】-26-对高级行为建模-状态图

目录

1、概念

2、组成结构

3、一般用法

4、常用建模技术

4.1、对反应型对象建模


一个状态图显示了一个状态机。在为对象的生命期建模中

活动图展示的是跨过不同的对象从活动到活动的控制流

状态图展示的是单个对象内从状态到状态的控制流。

在UML中,用状态图对一个对象按事件排序的行为建模。

1、概念

状态图 (state diagram)显示了一个状态机,它强调从状态到状态的控制流。

状态机 (state machine)是一个行为,它说明对象在它的生命期中响应事件所经历的状态序列以及它对那些事件的响应。

状态(state)是对象的生命期中的一个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。

事件(event)是对一个有意义的发生的规约,这种发生在时间和空间上占有一定位置。在状态机的语境中,事件是一次激励的发生,激励能够触发状态转移。

转移(transition)是两个状态之间的关系,它指明当特定事件发生而且特定条件满足时,在第一个状态中的对象执行一定的动作并进入第二个状态。

活动 (activity)是状态机中正在进行的执行。

动作 (action)是一个可执行的原子计算,它引起模型状态改变或值的返回。

在图形上,状态图是顶点和弧的集合。
 

2、组成结构

状态图通常包括:

简单状态和组合状态;

转移、事件和动作。

与所有其他图一样,状态图也可以包括注解和约束。

状态图基本上是状态机中的元素的投影。这意味着状态图可以包括分支、分岔、汇合、动作状态、活动状态、对象、初始状态、终止状态和历史状态等。

事实上,状态图可以包括状态机的任何和所有特征。

3、一般用法

反应型(或事件驱动的)对象是这样一种对象,其行为通常是由对来自其语境外部的事件所做出的反应来最佳刻画的。反应型对象在接收到一个事件之前通常处于空闲状态;当它接收到一个事件时,它的反应常常依赖于以前的事件;在这个对象对事件做出反应后,它就又变成空闲状态,等待下一个事件。对于这种对象,将着眼于对象的稳定状态,触发从状态到状态转移的事件,以及当每个状态改变时所发生的动作。

4、常用建模技术

4.1、对反应型对象建模

交互是对共同工作的对象群体的行为建模,

状态图是对一个单独的对象在它的生命期中的行为建模。

活动图是对从活动到活动的控制流建模,状态图是对从事件到事件的控制流建模。

这个对象可能处于的稳定状态、

触发从状态到状态的转移的事件

以及当每个状态改变时发生的动作。

对反应型对象的行为建模还包括对对象的生命期建模,从对象的创建时刻开始,直到它被撤销时结束,强调在其中可能发现的这个对象的稳定状态。

        稳定状态表示一个条件,对象可以在该条件下存在一段可识别的时间。当一个事件发生时,这个对象可能从一个状态转移到另一个状态。这些事件也可能触发自身转移和内部的转移,其中转移的源和目标是同一个状态。在对事件或状态变化的反应中,对象可能要执行一个动作来做出响应。

上图显示了一个状态图,用于分析一个简单的与语境无关的语言,正如在向XML输入或输出消息的系统中可能发现的那样。在这种情况下,该机器被设计得能分析与语法相匹配的字符流:

message: '<' string '>' string ';'

其中,第一个串表示一个标记,第二个串表示该消息体。给定一个字符流,只有遵从这个语法的形式良好的消息才能被接受。

如图所示,这个状态机仅有3个稳定状态:Waiting、GettingToken和GettingBody。这个状态机被设计成有动作附加在转移上的米利机。

在这个状态机中仅有一种感兴趣的事件,即带有实际参数c(一个字符)对put的调用

在Waiting状态下,该机器丢弃任何不是开始标记的字符(通过监护条件来说明)。当接收到一个开始标记时,该对象的状态就改变为GettingToken。在这个状态中,机器保存任何不是结束标记的字符(通过监护条件来说明)。当接收到一个结束标记时,该对象的状态就改变为GettingBody。在这个状态中,机器保存任何不是一个消息体结束标记的字符(通过监护条件来说明)。当接收到一个消息结束标记时,该对象的状态就改变为Waiting,并返回一个值,表示该消息已被分析过(并且机器准备接收另一个消息)。
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tcpdump命令详解及使用实例

1、抓所有网卡数据包&#xff0c;保存到指定路径 tcpdump -i any -w /oemdata/123.pcap&一、tcpdump简介 tcpdump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤&#xff0c;并提供and、or、not等逻辑语句来去掉无用的信…

【Python】已解决:SyntaxError: positional argument follows keyword argument

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;SyntaxError: positional argument follows keyword argument 一、分析问题背景 在Python编程中&#xff0c;当我们在调用函数时混合使用位置参数&#xff08;p…

RabbitMQ进阶篇

文章目录 发送者的可靠性生产者重试机制实现生产者确认 MQ的可靠性数据持久化交换机持久化队列持久化消息持久化 Lazy Queue(可配置~)控制台配置Lazy模式代码配置Lazy模式更新已有队列为lazy模式 消费者的可靠性消费者确认机制失败重试机制失败处理策略 业务幂等性唯一消息ID业…

西部智慧健身小程序+华为运动健康服务

1、 应用介绍 西部智慧健身小程序为用户提供一站式全流程科学健身综合服务。用户通过登录微信小程序&#xff0c;可享用健康筛查、运动风险评估、体质检测评估、运动处方推送、个人运动数据监控与评估等公益服务。 2、 体验介绍西部智慧健身小程序华为运动健康服务核心体验如…

idea xml ctrl+/ 注释格式不对齐

处理前 处理后 解决办法 取消这两个勾选

核方法总结(三)———核主成分(kernel PCA)学习笔记

一、核主成分 1.1 和PCA的区别 PCA &#xff08;主成分分析&#xff09;对应一个线性高斯模型&#xff08;参考书的第二章&#xff09;&#xff0c;其基本假设是数据由一个符合正态分布的隐变量通过一个线性映射得到&#xff0c;因此可很好描述符合高斯分布的数据。然而在很多实…

ViewBinding的使用(因为kotlin-android-extensions插件的淘汰)

书籍&#xff1a; 《第一行代码 Android》第三版 开发环境&#xff1a; Android Studio Jellyfish | 2023.3.1 问题&#xff1a; 3.2.4在Activity中使用Toast章节中使用到了kotlin-android-extensions插件,但是该插件已经淘汰,根据网上了解,目前使用了新的技术VewBinding替…

UE4_材质_材质节点_DepthFade

一、DepthFade参数 DepthFade&#xff08;深度消退&#xff09;表达式用来隐藏半透明对象与不透明对象相交时出现的不美观接缝。 项目说明属性消退距离&#xff08;Fade Distance&#xff09;这是应该发生消退的全局空间距离。未连接 FadeDistance&#xff08;FadeDistance&a…

光照老化试验箱:材料耐久性的“时间加速器”

光照老化试验箱&#xff1a;材料耐久性的“时间加速器”概述 光照老化试验箱是一种模拟自然光照条件下材料老化过程的设备&#xff0c;广泛应用于材料科学领域的耐久性能评估。通过模拟日光中的紫外线、热辐射等环境因素&#xff0c;加速材料老化过程&#xff0c;以此来验证材…

redhawk:tech file与lefdef layer name不匹配问题

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 一些工艺厂商给的redhawk tech file是加密的&#xff0c;读完tech file再读lef/def会报错&#xff0c;根本不知道问题在哪&#xff0c;他们一般会搭配给一个layer map&#xff…

分解+降维+预测!多重创新!直接写核心!EMD-KPCA-Transformer多变量时间序列光伏功率预测

分解降维预测&#xff01;多重创新&#xff01;直接写核心&#xff01;EMD-KPCA-Transformer多变量时间序列光伏功率预测 目录 分解降维预测&#xff01;多重创新&#xff01;直接写核心&#xff01;EMD-KPCA-Transformer多变量时间序列光伏功率预测效果一览基本介绍程序设计参…

【简单讲解神经网络训练中batch的作用】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

STM32第十五课:LCD屏幕及应用

文章目录 需求一、LCD显示屏二、全屏图片三、数据显示1.显示欢迎词2.显示温湿度3.显示当前时间 四、需求实现代码 需求 1.在LCD屏上显示一张全屏图片。 2.在LCD屏上显示当前时间&#xff0c;温度&#xff0c;湿度。 一、LCD显示屏 液晶显示器&#xff0c;简称 LCD(Liquid Cry…

【Windows】Visual Studio Installer下载缓慢解决办法

【Windows】Visual Studio Installer下载缓慢解决办法 1.背景2.分析3.结果 1.背景 使用visual studio在线安装包进行IDE安装&#xff0c;发现下载几乎停滞&#xff0c;网速几乎为零。 经过排查并不是因为实际网络带宽导致。 这里涉及DNS知识&#xff1b; DNS&#xff08;Dom…

消防认证-防火卷帘

一、消防认证 消防认证是指消防产品符合国家相关技术要求和标准&#xff0c;且通过了国家认证认可监督管理委员会审批&#xff0c;获得消防认证资质的认证机构颁发的证书&#xff0c;消防产品具有完好的防火功能&#xff0c;是住房和城乡建设领域验收的重要指标。 二、认证依据…

最快33天录用!一投就中的医学4区SCI,几乎不退稿~

【SciencePub学术】今天小编给大家推荐2本生物医学领域的SCI&#xff0c;此期刊为我处目前合作的重点期刊&#xff01;影响因子0-3.0之间&#xff0c;最重要的是审稿周期较短&#xff0c;对急投的学者较为友好&#xff01; 医学医药类SCI 01 / 期刊概况 【期刊简介】IF&…

那些好用的 Vue3 的工具搭子!!【送源码】

2020 年 9 月 18 日 Vue3 的正式发布已经过去了大约 3 年 9 个月左右&#xff01;&#xff01;&#xff01; 随着 Vue3 版本的逐渐成熟&#xff0c;我们的前端世界也迎来了一系列令人振奋的更新和工具。Vue 生态圈的持续扩大&#xff0c;无疑为前端开发人员带来了前所未有的便…

通过pycharm使用git和github的步骤

一、在Pycharm工具中配置集成Git和GitHub。 1.集成Git。 打开Pycharm, 点击File-->Settins-->Version Control-->Git 然后在 Path to Git executable中选择本地的git.exe路径。如下图&#xff1a; 2.集成GitHub 打开Pycharm, 点击File-->Settins-->Version…

探索未来远程调试新纪元——《串口网口远程调试软件》:无缝连接,高效调试

文章目录 前言一、无缝连接&#xff0c;突破距离限制二、高效调试&#xff0c;提升工作效率三、安全可靠&#xff0c;保护数据安全四、用户友好&#xff0c;简化操作流程五、软件地址六、远程调试软件 七、基本操作1、订阅主题2、连接3、串口调试4、网口调试 八、软件地址结束语…

PO模式登录测试

项目实践 登陆项目测试 get_driver import page from selenium import webdriverclass GetDriver:driver Noneclassmethoddef get_driver(cls):if cls.driver is None:cls.driver webdriver.Edge()cls.driver.maximize_window()cls.driver.get(page.url)return cls.drivercl…