状态机图(Statechart Diagram)

一、定义

状态机图是一种动态图 。描述一个特定对象的所有可能的状态以及引起状态转换的事件。

二、构成

状态机由状态、转移、事件和动作等组成。

1、状态

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

如图书馆的一本书籍可能有:“在架”、“借出”、“被预借”等状态。

(1)标准状态

在UML中,状态使用圆角矩形表示,一个状态有自己的状态名称,状态中包含该状态下将执行的动作事件

image.png

  • entry为进入状态时的动作,当进入该状态时要执行的动作;
  • do为处于该状态下执行的动作。
  • exit为退出动作,当离开当前状态时要执行的动作。
  • event为在该状态下定义相应的事件动作。
(2) 初始状态

初始状态代表状态机图的开始,使用实心圆表示。一个状态机图只有一个初始状态。

(3)结束状态

结束状态表示一个状态机图的结束,使用实心的圆环表示。一个状态机图可以有多个结束状态。
image.png

(4)组合状态

组合状态是状态内部嵌套有子状态的状态。一个组合状态包含一系列子状态。
而没有嵌套的状态称之为简单状态。

(5)子状态

嵌套在一个状态内部的状态为子状态。可以根据状态是否同时存在,可以再细分为顺序子状态和并发子状态。

顺序子状态 :在组合状态的生命周期中,任何时刻只能处于一个子状态,即多个子状态之间是互斥的关系,不能同时存在。
image.png
并发子状态 :多个顺序的子状态可以同时存在。
image.png

(6)历史状态

历史状态是一种伪状态,它表示在状态再次转移到该组合状态时,应处于上一次退出时的一个子状态。
一个音乐播放器的一个状态机图。其中“播放”标记为历史状态。其含义是在播放状态转移到暂停状态,当由暂停再进入播放状态时,其应进入“播放”状态退出时的一个子状态,它可能在退出时是“顺序播放”状态,也可能是“随机播放”状态,也可能是“倒序播放”状态,但必须是退出“播放”状态时所处的一个历史状态。

image.png

2、转移

转移(Transition)指的是两个不同状态之间的一种关系,是对象在满足一定条件或发生某个事件时,从一种状态迁移到另外一种状态。

(1)转移五要素 :
  1. 源状态:即受转换影响的状态。
  2. 目标状态:当转换完成后对象的状态
  3. 触发事件:当源状态的对象接收到事件时转移才有可能被激活。触发事件有自己的名称,也可以有自己的参数。
  4. 监护条件:布尔表达式,决定是否激活转换
  5. 动作:转换激活时的操作

image.png

(2)转移分类:
分类说明
外部转移是一种改变状态的转移,是状态机中常见的一种转移。主要出现在两个不同的状态之间。
内部转移是指不会导致状态改变的转换。有时,我们需要在该状态下处理一些无需离开状态的事件,这时可以定义一个内部转移。如“借阅图书”这个状态中event。image.png
自转移如果源状态与目的状态是同一状态,image.png

3、事件

事件(Event)是指在特定时间或空间内出现,并能够导致状态转移的信号、超时、条件改变、时间段等。
主要包括信号事件、时间事件、改变事件和调用事件等。

(1)信号事件

信号事件(signal event)是指一个对象接收到信号的事件,该接收信号的事件会导致其状态的转换。
image.png

(2)时间事件

时间事件(time event)代表时间的流逝。当时间条件被满足时可能要触发某个事件。时间可以是相对的也可以绝对的。如:after(9:00)。
image.png

(3)改变事件

改变事件(change event)是指依赖特定属性值的逻辑表达式所表示的条件满足时,事件发生。
image.png

(4)调用事件

调用事件(call event)表示一个对象接收到一个对调用的请求,这个对象用状态的转移而非特定的处理过程来实现操作。操作的参数即是事件的参数。调用结束时,被调用者将返回结果给调用者,调用者可以继续执行。
image.png

4、动作

动作通常是一个简短的计算处理过程,如赋值操作或算术运算。动作也可以是一个动作序列,包括给另外一个对象发送消息、调用一个操作、设置返回值、创建或销毁对象。
动作具有原子性。

三、示例

image.png

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值