大家好,欢迎来到IT知识分享网。
目录
1
.状态图概述
2.
状态图基本符号
3.
状态图组成要素
4.
活动图与状态图比较
1 状态图概述
(State Diagram)
一个对象在其生存期间的动态行为,表现对象响应事件所经历的状态序列以及伴随的动作。
状态机图与交互图的区别:
交互图不显示对象所有可能的动态行为,只显示特定交互(一个具体的用例)中对象的行为。
状态机图可以显示对象所有的动态行为。
状态图与活动图的区别:
状态机图只建模一个对象的行为,活动图可以建模多个对象的活动
活动图中也允许建模特定活动中对象的某个状态
2 状态图的基本符号
3 状态图的基本组成
状态
转换
事件
状态的分类与描述
什么是状态(state)
对象生命期中的某个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。
理解
对象在任何时候都会处于某种状态中,所有对象都有状态。
对象所处的状态决定了它如何响应所检测到的事件或所接收的消息。
通常,事件使对象从一个状态转向另一个状态(即状态的转移)
状态分类
●
初态
●
终态
●
中间状态
●
组合状态
●
历史状态
初态(
start state
)
显示状态图执行的开始。一个状态图只能有一个初态。如果一个状态机用多张图描述,则多张图用同一个初态;嵌套状态中可以使用新的初态;
终态(
End State
)
表示终端状态;
终态数目可以不确定。
一般状态的组成:
状态名(
name
)
进入
/
退出动作(
entry/exit action
)
内部转换(
internal transition
):不导致状态改变的转换,不会执行
entry
和
exit
动作。
子状态(
substate
): 嵌套在另外一状态中的状态
延迟事件(
deferred event
):延迟处理的事件。
延迟事件
一种特殊的事件,它是指该事件不会触发状态的转换,当对象处于该状态时事件不会丢失,但会被延迟执行。
例如,当E-mail程序中正在发送第一封邮件时,用户下达发送第二封邮件执令就会被延迟,但第一封邮件发送完成后,这封邮件就会被发送。这种事件就属于延迟事件
嵌套状态:
含有子状态的状态被称为嵌套状态。
顺序复合状态图(嵌套)
顺序复合状态图(分解指示符)
并发复合状态图
历史状态
一种伪状态。可以存储退出组合状态时所处的子状态,则返回组合状态时可以直接回到到相应的子状态。
状态迁移的触发与描述
迁移 (
transition
)
某个特定事件发生或某些条件满足时,一个源状态下的对象完成一些特定动作,使得对象从源状态迁移到新状态。
格式: 事件[条件]/动作表达式 发送子句
转换的五要素
源状态
目标状态
触发事件
监护条件
动作
触发状态迁移的事件
事件(Event)
对一个时间和空间上占有一定位置的有意义的事情的规格说明。事件触发状态的转移
事件的描述格式: 事件名(参数表)
说明:
事件名:必须引用接收事件的对象类中的一个操
作或信号。
参数表:传送给该事件的形式参数,为任选项。
事件的分类
状态内部事件
1)入(出)口事件
UML标准事件
以关键字entry(exit)说明,进入(退出)时执行
为隐式调用,不能中断执行
入(出口)为进入(退出)状态时最先(后)执行的动作序列,不带条件。
2)do
事件
UML标准事件
以关键字do说明,在入口与出口事件之间执行
do引用嵌套子图的全部动作序列
执行可被中断。
3
)
include
事件
UML标准事件
以关键字include说明,在入口与出口事件之间执行
标识内嵌子图的引用,后动作表达式含该子图名称
4
)自定义事件
消息:调用事件和信号事件
1)调用事件
对象之间,一个对象请求另一个对象的操作,标在迁移线上。
语法格式:事件名(参数表)
可以同步或异步调用
2
)信号事件
用发送/接收信号图符标识信号事件。
发出信号图符表明发出子句,接收信号图符含有事件名称。
时间事件:
1
)
after
事件
时间事件,以“after(时间表达式)/动作” 说明。
括号内条件为真时执行
2
)
defer
事件
延迟事件,格式为“事件名/defer”。
本状态不处理,推迟到另一个状态才处理的事件。
3
)
when
事件
改变事件,格式为“when(逻辑表达式)/动作” 。
条件为真时触发迁移。
引起状态迁移触发的条件
迁移语法格式:
事件[条件] / 动作表达式 发送子句
条件是一个由方括号围起的关系或逻辑表达式。若状态迁移既有事件又有条件,则事件发生且条件成立时触发状态迁移。
触发状态迁移的动作表达式
迁移语法格式:
事件[条件] / 动作表达式 发送子句
动作表达式是一个触发状态迁移时可执行的过程表达式。表达式可引用该状态所表示的对象的属性、操作,或者事件参数。一个状态迁移可有多个动作表达式,但是必须用“/”隔开。动作表达式从左到右执行,不允许嵌套或递归。
例如: [计时器=超时]/下降(第一层)
状态迁移的分类
各种转换之间的区别
进入和退出转换:
当进入一个状态时,执行某个动作;或当退出某个状态时,执行什么动作。这时就可以使用进入和退出转换来表示
内部转换:用来处理一些不离开该状态的事件
状态图之间的通信联系
4 活动图与状态图比较
状态图可以表示一个对象在生存期的行为、所经历的状态序列、引起状态转移的事件以及因状态转移而引发的动作。
活动图用来表示完成一个操作所需要的活动,或者是一个用例实例(场景)的活动。活动图实际上为一个流程图,描述系统从一个活动到另外一个活动的控制流,适合描述动作流和并发处理行为。
相同点
1
)使用相同的图形符号。
2
)可以描述一个系统或对象在生存周期的状态或行为。
3
)可以描述系统或对象在多进程中的同步或异步操作的并发行为。
4
)可以用条件分支来描述系统或对象的行为控制流。
不同点
1
)触发状态(活动)发生迁移的机制不同。
活动状态迁移不需要事件触发,活动执行完毕可以直接进入下一个活动状态。
2
) 描述多个对象共同完成一个操作的机制不同。
活动图置于责任区(泳道)中,责任区将活动按责任目标和组织归属的原则分类。
状态图采用状态嵌套方式描述多对象协作。
小结
活动图和状态图都是对系统行为进行建模技术。
活动图本质上上流程图,但能展示并发和控制分支。
状态图展示的上单个对象在生命周期内不同状态的控制流。
对系统动态方面建模意义重大。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/129634.html