UML之状态图

 1、概念

  状态:是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况。

  状态机:记录下给定时刻状态下的设备,他可以根据不同的输入对每个给定的变化而改变其状态或引发一个动作。

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

 2、状态图

 状态

 状态的组成部分

名称(Name)

将一个状态与其他状态分开的字符串;状态也可能是匿名的,这表示它没有名称

进入和退出动作(Entry/Exit Action)

在进入和退出时执行的操作

内部转移(Internal Transition)

对事件做出响应,执行一定的动作,但不会发生状态的转换

子状态(substage)

当状态是复合状态时

延迟事件(Deferred Event)

未在本状态中处理,但不被丢弃,而是延迟到其他状态中处理的事件

转换

 用于表示一个状态机的两个状态之间的一种关系,即一个在某初始状态的对象通过执行指定的动作并符合一定的条件下进入第二种状态。

五要素

源状态

转移所影响的状态;如果对象处于源状态,当对象收到转移的触发事件并且满足警戒条件(如果有)时,就可能会触发输出转移。

事件触发器

使转移满足触发条件的事件。当处于源状态的对象收到该事件时(假设已满足其警戒条件),就可能会触发转移。

警戒条件

使转移满足触发条件的事件。当处于源状态的对象收到该事件时(假设已满足其警戒条件),就可能会触发转移。

操作

可执行的、不可分割的计算过程,该计算可能直接作用于拥有状态机的对象,也可能间接作用于该对象可见的其他对象。

目标状态

在完成转移后被激活的状态。

类型 

转换类型

描述

语法

外部转换

对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转换

事件 ( 参数 )[ 监护条件 ]/ 动作

内部转换

对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换、离开转换

事件 ( 参数 )[ 监护条件 ]/ 动作

进入转换

当进入某一状态时,执行相应活动

entry/ 活动

退出转换

当离开某一状态时,执行相应活动

exit/活动

  还有一种状态行为:DO/活动,当对象处于一个状态时,它一般是空闲的,在等待一个事件的发生。但是某些时间,你可能希望描述个正在进行的活动。在处于一个状态的同时,对象做着某些工作,并一直继续到被某个事件中断。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 限制字符串输入——正则表达式(VB.NET)

    在做机房收费系统的时候,几乎所有的窗体上都存在着文本框或者组合框,当用户进行操作的时候,首先要判断是否为空,然后再对各种属性进行判断,比如;卡号、学号、金额等...

    令仔很忙
  • 知识扩展----404错误页面那些事

         对这个东西,貌似有点印象,之前浏览网页的时候,也是经常出现的事,只不过弹出的页面不同罢了。举个例子:

    令仔很忙
  • Mybatis深入了解(七)----延迟加载

    resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备...

    令仔很忙
  • 可扩展伸缩架构中的状态

    提到状态,我们总是伴随着可变的、并发、隔离和作用域等词语,精确定义如下:状态是有关存储信息的技术名词,任何一个时间程序能够立即访问到。简单地说,状态是一种可能被...

    物流IT圈
  • g++: error trying to exec 'cc1plus': execvp: 没有那个文件或目录

    这个错误是gcc和g++版本不兼容导致的,也有可能是安装完gcc没有安装g++ 首先安装gcc和g++及一些依赖包 sudo apt-get install b...

    cloudskyme
  • View详解(7)

    前几篇中我们学习过了一些规则及不规则图形的绘制技巧,不知道大家理解是否到位,这篇文章中将继续前文主题,研究Path的基本应用,前文中我们已经基本了解了Path的...

    小海编码日记
  • 高效 Bash 使用技巧

    我们在日常使用中,难免会使用到一些历史命令或者有时需要对历史命令进行更正,那么如何更加高效的来完成这些操作呢?

    Jintao Zhang
  • Android GPU呈现模式原理及卡顿掉帧浅析

    APP开发中,卡顿绝对优化的大头,Google为了帮助开发者更好的定位问题,提供了不少工具,如Systrace、GPU呈现模式分析工具、Android Stud...

    看书的小蜗牛
  • SAP Cloud for Customer Oberon视图里的Ruby Scrip

    In C4C Oberon views developed by UI Designer it is allowed to write Ruby script ...

    Jerry Wang
  • Css3 Animation 动画原则十

    夸张手法在漫画中是最常用来为某些动作刻画吸引力和增加戏剧性的,比如一只狼试图把自己的喉咙张得更开地去咬东西可能会表现出更恐怖或者幽默的效果。

    grain先森

扫码关注云+社区

领取腾讯云代金券