UML-状态机图(状态图)

这篇具有很好参考价值的文章主要介绍了UML-状态机图(状态图)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、状态机图简介

  • 状态机图描述了一个对象在其生命周期内所经历的各种状态,以及引起对象状态变化的原因。
  • 状态机用于对一个模型元素建立行为模型,该模型元素通常是一个类/对象,也可以是一个 Use Case ,甚至是整个系统。
    UML-状态机图(状态图),UML2.0,uml,数据库

1、状态

  • 初始状态:使用一个实心圆表示。
  • 一般状态:使用圆角矩形表示,在标识符内部编辑名称及该状态下的动作。
  • 终止状态:类似于初始状态外加一个圆圈。
    UML-状态机图(状态图),UML2.0,uml,数据库
  • 组合状态的子状态分为两种,顺序子状态和并发子状态。

(1)简单状态

  • 如果一个组合状态的子状态对应的对象在其生命周期内的任何时刻都只能处于一个子状态,也就是说状态机图中多个子状态是互斥的,不能同时存在,这种子状态被称为顺序状态。

(2)并发状态

  • 并发状态用来描述一起进行的状态变化流,并发状态强调时间发生时刻的一致。
  • 由并发状态构成的组合状态被分成不同区域,每个区域包含不同的状态机,各区域内的状态机分别运行。如果并发子状态中有一个子状态比其他并发子状态先到达它的终止状态,那么结束的子状态的控制流将在它的终止状态等待,直到所有的子状态都终止。此时,所有子状态的控制流汇合成以恶控制流,转移到下一个状态。
    UML-状态机图(状态图),UML2.0,uml,数据库

2、转移

  • 转移是两个状态之间的关系,指示处于第一状态的对象将执行某些动作并且当指定事件发生并且满足指定条件时进入第二状态。
    UML-状态机图(状态图),UML2.0,uml,数据库
  • 转移的五个要素(非必须):
    • 源状态 (Source State):受转换影响的状态;如果对象处于源状态,则当对象接收到转换的触发事件并且满足监护条件(如果有)时,可以触发传出转换。
    • 目标状态 (Target State):转移完成后对象处于的状态。
    • 触发事件:一种可以触发源状态以满足监护条件的激励。
    • 监护条件:是原状态向目标状态转移的条件,原状态结束时进行监护条件的判断,只有当监护条件满足时,才能转移到指定的目标状态。
    • 动作:转换激活时的操作。
  • 触发事件和监护条件遵循的规则:
    • 转移时,监护条件在事件发生时计算一次。若转移被重新触发,则监护条件将会被重新计算。
    • 如果监护条件和触发事件放在一起使用,当且仅当触发事件发生且监护条件布尔表达式成立时,状态转移才发生 。
    • 如果只有监护条件,则只要监护条件为真,状态就发生转移。
  • 转移的类型:
    • 自转移:
      • 自转移打断当前状态下的所有活动,使对象退出当前状态,最后又返回该状态。
      • 自转移中,状态转移的源状态和目标状态是同一个状态。
    • 内部转移:
      • 内部转移描述执行响应事件的内部动作或活动,转移只有源状态没有目标状态,内部转移激发的结果并不是改变状态本身。
    • 自动转移:
      • 自动转移又称为完全转移,是当前状态自然结束并引发的转移
    • 复合转移:
      • 复合转移由简单转移组成,这些简单转移通过判定、分叉或汇合组合在一起。

(1)判定决策点

  • 判定决策点是状态转移中的分支,系统的状态在转移时被不同的条件影响,能够在不同的条件下转移到不同的状态,这个条件即为判定决策点。
  • 判定的标识符是一个菱形,控制流通常从菱形的一个顶点进入,从其他顶点输出。
    UML-状态机图(状态图),UML2.0,uml,数据库

(2)同步(分叉与汇合)

  • 同步和判定决策点都能够将状态分流,不同的是,判定决策点是不同条件下的不同状态转移;而同步是可同时进行的状态转移。
  • 使用同步条显示并发的转移,即同时发生的转移,同步条为实心矩形,同步分为两种形式:控制流的分叉和汇合。
    UML-状态机图(状态图),UML2.0,uml,数据库

3、事件

  • 事件是能够引发系统对象状态改变的行为。事件和转移是相伴出现的,事件可以看作是对转移的修饰,描述系统元素状态改变的原因。事件可以有属性和参数,参数放在事件名称后面的括号()内。
  • 事件是一个触发器,有时事件又被称为事件触发器。它触发了状态之间的转移和状态内部转移,接收事件的对象必须了解如何对触发器进行响应。
    UML-状态机图(状态图),UML2.0,uml,数据库

4、动作

  • 动作是不可分隔的行为,是行为最小的单元。动作可以是类对象的操作和属性,一个状态中允许有多个动作。
  • 由于状态图时系统状态间的转移,因此,动作只能表现在状态内部,包括动作类型和名称。
  • 动作的五种基本类型:
    • entry:入口动作,进入状态是发生的动作。
    • exit:出口动作,当前状态结束时发生的动作。
    • do:内部动作,模型元素处于某个状态时执行的动作。
    • include:引用子状态机状态。
    • event:用来指定特定事件触发时发生的动作。
  • 内部动作是模型元素在状态持续过程中执行的动作,执行与该状态相关的行为。内部动作不会改变元素当前状态,在入口动作执行后、出口动作执行前执行。
  • 当内部动作执行完毕时,如果没有完成转移就触发它,否则状态将等待一个显式触发的转移。
  • 如果内部动作正在执行时有一个转移被触发,此时内部动作将被终止,然后执行状态的出口动作。

5、活动

  • 活动是当对象处于一个状态时,它一般是空闲的,在等待一个事件的发生。但是某些时间,人们希望描述正在进行的活动。在处于一个状态的同时,对象做着某些工作,并一直继续到被某个时间中断。

二、总结

  • 状态机图的两种类型应用:
    • 对对象生命周期建模:主要描述对象能够响应的事件、对这些事件的响应及过去对当前行为的影响。
    • 对反应型对象建模:主要描述对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作。
  • 注意:
    • 一个状态机图只针对一个实体描述其状态转换。

文章来源地址https://www.toymoban.com/news/detail-795750.html

到了这里,关于UML-状态机图(状态图)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【UML建模】状态图(State Machine Diagram)

    状态图,又称为状态机图,是一种用于 描述对象的生命周期和状态转换 的UML图示,它是一种 行为图 ,用于描述对象的状态和状态之间的转换。这里的对象大多数情况是指的 类生成的对象 ,但是有时候也会代表 对象、参与者、用例、子系统等 。 通过状态图可以建立 对象状

    2023年04月27日
    浏览(37)
  • Java设计模式之行为型-状态模式(UML类图+案例分析)

    目录 一、基础概念 二、UML类图 三、角色设计 四、案例分析 五、总结 状态模式允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类,状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况,把状态的判断逻辑转移到表示不

    2024年02月16日
    浏览(40)
  • 什么是统一建模语言(UML)UML与UML类图的基本概念

    UML(统一建模语言)是一种通用的建模语言,用于描述软件系统的结构、行为和交互。它提供了一组符号和规则,用于创建可视化的图形模型,帮助开发人员、设计师和利益相关者之间进行沟通和理解。 UML起源于20世纪90年代初,由James Rumbaugh、Grady Booch和Ivar Jacobson等知名软件

    2024年02月16日
    浏览(60)
  • UML箭头汇总+IDEA绘制UML类图详细教程+chatGPT辅助生成UML类图教程

    参考:http://www.cnblogs.com/damsoft/archive/2016/10/24/5993602.html 1.UML简介 Unified Modeling Language (UML)又称统一建模语言或标准建模语言。 各个箭头的含义: 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是他们的主要用途简介: 1.用例图:对系统的使

    2024年02月03日
    浏览(44)
  • 【UML】浅谈为什么要有UML?

    上高中的时候,经常使用一些软件,觉得这些软件挺有意思的,就一直很好奇系统这个东西是怎么构建出来的。直到后来,大学的时候上了一门叫做系统分析与设计的课程,从UML开始再到用Spring Boot和Vue写一个系统,慢慢的有一点点的概念,但是还是感觉迷迷糊糊。研究生的

    2024年02月05日
    浏览(59)
  • kingbase:数据库启动状态

    1  启停KingbaseES数据库 Linux下通过系统服务: root用户执行:   Linux下通过安装用户: 安装用户执行:   2  查看数据库当前进程状态 通过命令 ps –ef |grep kingbase 查看,kingbase进程是否存在,如下图所示,则为正常开启状态,否则不是。蓝色标注为主进程。   3  端口的查看

    2024年02月14日
    浏览(39)
  • 快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图

    一个合格的程序员,要想成长为一个高级工程师,不仅仅需要大量代码的编写,更需要对设计模式具有深入的了解和灵活的应用。从本篇文章开始,我将通过对【尚硅谷设计模式】视频课程的学习总结,尝试以最简单,最通俗易懂的方式完成对设计模式的讲解。 学习设计模式

    2024年02月07日
    浏览(84)
  • Mysql查询数据库连接状态及连接信息

    使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小、字符集、用户等等。下面总结了一些查看数据库相关信息的命令 查看显示所有数据库 查看当前使用的数据库 查看数据库使用端口 查看当前数据库大小 例如,我要查看INVOICE数据库的大小,那么可以通过下面

    2024年02月11日
    浏览(57)
  • 如何监控Linux和Oracle数据库运行状态

    背景: 在生产环境中,一般可能会发生服务器宕机或者数据库宕机的情况,如何准确的把握找准”生产事故“的具体发生时间,其实有很多方法,可以借助第三方的监控软件或者其他收费软件。 但是本人就是穷逼一个,不可能买或者使用盗版的三方软件。所有设计了以下流

    2024年02月16日
    浏览(61)
  • sql server 截断和收缩所有用户数据库日志--用游标循环所有正常状态的用户数据库

    在服务器运维活动中,我们经常需要做一项工具就是将好多年的用户数据库日志文件截断并收缩为最小,以节省大量的磁盘空间。当数据库只有一两个时可以手动操作,但数据库数量众多时,就需要采用sql脚本,批量化执行这个过程。 本人写了一段这样的脚本。并且经过验证

    2024年02月06日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包