概述

UML状态图主要用于描述对象具有的各种状态、状态之间的转换过程以及触发状态转换的各种事件和条件。

UML 状态图的目的:

UML 状态图可以捕获对象、子系统和系统的生命周期,可以告知一个对象可以拥有的状态,并且事件(如消息的接收,时间的流逝、错误、条件为真等)会怎样随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标志状态和复杂行为的类;该图可以确定类的行为以及该行为如何根据当前的状态而变化,也可以展示哪些事件将会改变类的对象的状态。

UML 状态图怎么画

状态图是用来描述不同的对象在其生命周期的状态。因此,强调的是一些内部或外部事件的状态发生变化时,这些对象的状态要重要的分析和准确的贯彻落实。

状态图描述的状态是非常重要的。对象的状况,当发生特定事件时,可以被确定为状态。

绘制状态图之前,我们必须明确以下几点:

  • 识别对象,以进行分析。

  • 识别状态。

  • 识别的事件。

一个状态图(Statechart Diagram)本质上就是一个状态机,或者是状态机的特殊情况,它基本上是一个状态机中元素的一个投影,这也就意味着状态图包括状态机的所有特征。

状态图描述了一个实体基于事件反映的动态行为,显示了该实体是如何根据当前所处的状态对不同的事件作出反应的。

在UML中,状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。状态的转换由事件触发,状态和状态之间由转换箭头连接。每一个状态图都有一个初始状态(实心圆),用来表示状态机的开始。还有一个中止状态(半实心圆),用来表示状态机的终止。状态图主要由元素状态、转换、初始状态、中止状态和判定等组成,一个简单的状态图如下:

1.状态:状态用于对实体在其生命周期中的各种状况进行建模,一个实体总是在有限的一段时间内保持一个状态。

2.转换:在UML的状态建模机制中,转换用带箭头的直线表示,一端连接源状态,箭头指向目标状态。转换还可以标注与此转换相关的选项,如事件、监护条件和动作等,如下图所示。注意:如果转换上没有标注触发转换的事件,则表示此转换自动进行。

在状态转换机制中需要注意的五个概念如下:

  • 状态源(Source State):指的是激活转换之间对象处于的状态。如果一个一个状态处于源状态,当它接收到转换的触发事件或满足监护条件时,就激活了一个离开的转换。
  • 目标状态(Event State):指的是转换完成后对象所处的状态。
  • 事件触发器(Event Trigger):指的是引起源状态转换的事件。事件不是持续发生的,它只发生在时间的一点上,对象接收到事件,导致源状态发生变化,激活转换并使监护条件得到满足。
  • 监护条件(Guard Condition):是一个布尔表达式。当接收到触发事件要触发转换时,要对该表达式求值。如果表达式为真,则激活转换:如果表达式为假,则不激活转换,所接收到的触发事件丢失。
  • 动作(Action):是一个可执行的原子计算。

3.初始状态:每个状态图都应该有一个初始状态,它代表状态图的起始位置。初始状态是一个伪状态(一个和普通状态有连接的假状态),对象不可能保持在初始状态,必须要有一个输出的无触发转换(没有事件触发器的转换)。通常初始状态上的转换是无监护条件的,并且初始状态只能作为转换的源,而不能作为转换的目标。在UML中,一个状态图只能有一个初始状态,用一个实心圆表示。

4.终止状态:终止状态是一个状态图的终点,一个状态图可以拥有一个或者多个终止状态。对象可以保持在终止状态,但是终止状态不可能有任何形式的和触发转换,它的目的就是为了激发封装状态上的转换过程的结束。因此,终止状态只能作为转换的目标而不能作为转换的源,在UML中,终止状态用一个含有实心圆的空心圆表示

5.判定:活动图和状态图中都有需要根据给定条件进行判断,然后根据不同的判断结果进行不同转换的情况。实际就是工作流在此处按监护条件的取值发生分支,在UML中,判定用空心菱形表示

状态图的作用

状态图的作用主要体现在以下几个方面。

  • 状态图清晰地描述了状态之间的转换顺序,通过状态的转换顺序也就可以清晰地看出事件的执行顺序。如果没有状态图我们就不可避免地要使用大量文字来描述外部事件的合法顺序。
  • 清晰的事件顺序有利于程序员在开发程序时避免出现事件顺序错误的情况。例如,对于一个网上销售系统,在用户处于登录状态前是不允许购买商品的,这就需要程序员开发程序的过程中加以限制。
  • 状态图清晰地描述了状态转换时所必需的触发事件、监护条件和动作等影响转换的因素,有利于程序员避免程序中非法事件的进入。例如,飞机起飞前半小时不允许售票,在状态图中就可以清晰地看到,可以提醒程序员不要遗漏这些限制条件。
  • 状态图通过判定可以更好地描述工作流因为不同的条件发生的分支。例如,当一个班的人数少于10人的时候需要和其他班合为一班上课,大于10人则单独上课,在状态图中就可以很明确地表达出来。

总之一个简洁完整的状态图可以帮助一个设计者不遗漏任何事情,最大程度地避免程序中错误的发生。

UML状态图 2021.07.18相关推荐

  1. 【Doris Weekly FAQ】2021.07.05~2021.07.18

    观众朋友们: 晚上好! 欢迎收看[ Doris 近日要闻]~本次为您带来的是 2021年07月15日 - 2021年07月18日 的双周总结. Doris 社区周报每期会包含 FAQ 环节.我们会在社 ...

  2. Doris Weekly FAQ】2021.07.19~2021.08.01

    观众朋友们: 晚上好! 欢迎收看[ Doris 近日要闻]~本次为您带来的是 2021年07月19日 - 2021年08月01日 的双周总结. Doris 社区周报每期会包含 FAQ 环节.我们会在社 ...

  3. 2021年 第12届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2021.04.18】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[题目下载.2013年(第4届)~2020年(第11届)] CSDN 蓝桥杯 专栏 2013年 第04届 蓝桥杯 Java B组 省赛真题详解及小结 ...

  4. 实战:怎样把间隔的几个commit整理成1个?-2021.11.18

    实战:怎样把间隔的几个commit整理成1个?-2021.11.18 目录 文章目录 实战:怎样把间隔的几个commit整理成1个?-2021.11.18 目录 文档来源 实验环境 实验软件(无) 1 ...

  5. Neovim开发环境搭建(2021.07.01)

    Neovim开发环境搭建(2021.07.01) 一.搭建环境 Ubuntu 21.04 Neovim 0.4.4 二.Neovim安装 # 下载 neovim,如遇网络问题可以采用 https:// ...

  6. 【转】超详细的UML状态图符号,初学者也能轻松看懂状态图

    UML状态图,用于显示状态机,即描述一个对象所处的可能状态以及状态之间的转移.用状态图建模可以帮助开发人员分析复杂对象的各种状态的转换,以及对象何时执行怎样的动作.那状态图又是怎样表示这些信息的呢?要 ...

  7. 哔哩哔哩“2021.07.13 我们是这样崩的”报告的学习-1

    哔哩哔哩"2021.07.13 我们是这样崩的"报告的学习-1 这份报告是我学计算机两年来第一次真实看到大厂的员工到底在干什么.出现了很多专有名词,以及当前最先进的互联网企业的应用 ...

  8. 2021.07.22禾赛提前批一面面经

    2021.07.22禾赛提前批一面面经 1.LUTRAM的意思 2.LUTRAM和block RAM的区别 3.时序约束和时序优化 4.跨时钟域 5.为什么不能多bit采用同步寄存器打两拍(就这个问题 ...

  9. 2021.07.07 宇信科技

    2021.07.07 宇信科技 宇信科技          晚上电话面 问了一堆java基础,离谱,jd上也没要求java:简历筛选扣工资! java小白,凭借c语言基础简单回答了一哈,面试官估计在电 ...

最新文章

  1. CSUOJ 1341 String and Arrays
  2. WPF 3D:使用GeometryModel3D的BackMaterial
  3. 使用多种MIME类型测试REST
  4. HTML5边玩边学(9):俄罗斯方块就是这么简单 之 数据模型篇
  5. matlab第七讲,matlab第七讲教案
  6. flash 基础语法
  7. Java Web-网页基础-HTML-URL
  8. VC dimension(Vapnik-Chervonenkis dimension)
  9. Ubuntu20系统添加右键菜单:新建文档
  10. PX4从放弃到精通(十八):参数
  11. 阿里、京东、拼多多电商三巨头财报大比拼:拼多多用户数上拼了 京东营收超过阿里...
  12. 介绍2个免费图片视频素材网站
  13. WordPress网站配置腾讯云cdn缓存!
  14. 记win10家庭版系统C:\Users用户名中文改英文 详细教程
  15. Linux基础PHP网站搭建
  16. SZTUOJ 1008.盒子游戏
  17. 磨金石教育摄影技能干货分享|有哪些风格独特的摄影作品
  18. js 购物车数量增减,总价格联动变化
  19. 今日头条怎么做发布,如何用今日头条号进行宣传推广?
  20. WIN7远程桌面连接方法!远程控制教程!XP远程桌面连接教程!如何设置远程桌面连接?远程桌面连接设置!

热门文章

  1. 3年级计算机教案,3年级计算机教案.doc
  2. 医学影像坐标系问题(世界坐标系、解剖坐标系和图像坐标系)
  3. 51单片机开发环境配置(使用VScode开发)
  4. cosmic翻译_cosmic
  5. html+css布局实例:制作的淘宝小图标的显示
  6. 钢材行业供应链协同管理系统提升企业上下游密切度,精细化企业内部管理
  7. 工程未编译怎么解决_沈阳建筑工程律师:拖欠工程款—工程款被恶意拖欠怎么解决...
  8. 凌云仓库管理系统——好用的仓库管理系统
  9. python菜鸟入门_值得收藏|菜鸟学Python【入门文章大全】
  10. 隐私计算技术|私有信息检索(PIR)及其应用场景