系列文章

[UML]UML系列——用例图Use Case

[UML]UML系列——用例图中的各种关系(include、extend)

[UML]UML系列——类图Class

[UML]UML系列——类图class的关联关系(聚合、组合)

[UML]UML系列——类图class的依赖关系

[UML]UML系列——类图class的泛化关系

[UML]UML系列——类图class的实现关系Realization

[UML]UML系列——包图Package

[UML]UML系列——活动图activity  diagram

[UML]UML系列——时序图(顺序图)sequence diagram

[UML]UML系列——协作图(通信图)collaboration diagram

引言

[UML]UML系列——状态机图statechart diagram-LMLPHP

实例分析:大学生学籍管理系统

用状态机图描述如下:

[UML]UML系列——状态机图statechart diagram-LMLPHP

结论

部分对象的行为与其所处的状态相关。通过分析对象的状态及引起状态转变的原因,有利于寻找对象所处类的操作。

状态机图的作用:寻找类的操作。

状态机图的概念

一、状态机图的定义

状态机图描述了一个对象在生命周期内所经历的各种状态,以及引起状态变化的事件。

二、状态、事件、动作

[UML]UML系列——状态机图statechart diagram-LMLPHP

1、状态

状态指对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的状况或情况。

人:青年、中年、老年

电话机:通话、闲置

注意:状态本质上就是对象属性的值,状态的变化就是属性值的变化。

2、事件

引起状态变化的事情。状态的转移是由事件触发的。

[UML]UML系列——状态机图statechart diagram-LMLPHP

3、动作的概念

动作说明了当事件发生时发生了什么行为。动作可由对象的操作和属性构成。

[UML]UML系列——状态机图statechart diagram-LMLPHP

状态机图的符号

一、状态

[UML]UML系列——状态机图statechart diagram-LMLPHP

状态还可以添加活动。活动是在该状态时要执行的动作。

活动的格式如下:[Entry|exit|do]/动作

[UML]UML系列——状态机图statechart diagram-LMLPHP

活动有三个标准事件:

entry事件:进入该状态时的特定动作(入口动作)。

exit事件:退出该状态时的特定动作(出口动作)。

二、转移

转移描述对象在两种状态间的转变。当某个特定事件发生并且满足特定的条件,对象操作特定的动作,进入另一个状态。

[UML]UML系列——状态机图statechart diagram-LMLPHP

事件与动作

事件要求对象做某件事情,这个事情被称为动作。动作改变了对象属性的值,导致对象的状态发生变化。

事件与动作既可用于转移中,也可用于单独的状态中。

事件与动作出现的两个位置:

[UML]UML系列——状态机图statechart diagram-LMLPHP

一、事件

1、调用事件

调用事件代表对一个对象的操作的调用。

[UML]UML系列——状态机图statechart diagram-LMLPHP

2、变化事件

变化事件是状态中一个变化或某些条件满足时的事件。使用when标识,其格式为:

when(逻辑表达式)/动作

[UML]UML系列——状态机图statechart diagram-LMLPHP

3、时间事件

时间事件是经过一定的时间或者到达某个时间后发生的事件。时间事件使用after标识,其格式为:

after(时间表达式)/动作

at(时间表达式)/动作

[UML]UML系列——状态机图statechart diagram-LMLPHP

事件实例:时间事件

[UML]UML系列——状态机图statechart diagram-LMLPHP

状态机图:

[UML]UML系列——状态机图statechart diagram-LMLPHP

二、动作

1、动作的概念

动作说明了当事件发生时发生了什么行为。动作由对象的操作和属性组成。

[UML]UML系列——状态机图statechart diagram-LMLPHP

2、基本动作类型

(1)entry(入口动作)

进入状态时最先执行的特定动作,不带条件与参数。格式为:entry/动作

(2)exit(出口动作)

退出该状态时最后执行的特定动作,不带条件与参数。格式为:exit/动作

公用电话的状态机图:

[UML]UML系列——状态机图statechart diagram-LMLPHP

(3)do(内部活动)

用来指定处于某种状态时发生的动作。在入口事件之后,出口事件之前执行的特定动作。

格式为:do/动作

[UML]UML系列——状态机图statechart diagram-LMLPHP

[UML]UML系列——状态机图statechart diagram-LMLPHP

如果内部活动正在进行,有一个转移被触发,此时内部活动会被终止,然后执行活动的出口动作。入口动作和户口动作是不可终止的。

组成状态

[UML]UML系列——状态机图statechart diagram-LMLPHP

[UML]UML系列——状态机图statechart diagram-LMLPHP

简单状态:A
组成状态:B
子状态:    C    D

[UML]UML系列——状态机图statechart diagram-LMLPHP

[UML]UML系列——状态机图statechart diagram-LMLPHP

对象a的全部状态由属性x、y的取值的排列组合形成。

但有时当x取一个值xk时,y的任何取值都没有意义。

[UML]UML系列——状态机图statechart diagram-LMLPHP

[UML]UML系列——状态机图statechart diagram-LMLPHP

一、顺序子状态

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

[UML]UML系列——状态机图statechart diagram-LMLPHP

二、并发子状态

有时组成状态有两个或多个并发的子状态,此时称组成状态的子状态为并发子状态。并发子状态能说明很多事发生在同一个时刻,为了分离不同的活动,组成状态被分解成区域,每个区域都包含一个不同的状态机图,各个状态机图在同一时刻分别运行。

[UML]UML系列——状态机图statechart diagram-LMLPHP

前进和低速    前进和高速

后退和低速     后退和高速

实例分析:主体工程施工和水电工程施工

[UML]UML系列——状态机图statechart diagram-LMLPHP

三、历史状态

有时,当离开一个嵌套状态后,又需要重新进入该嵌套状态,但希望直接进入到上次离开嵌套状态时的最后一个子状态,而不想从该子状态机图的初始状态进入。

历史状态,是一种历史指示器,它允许组成状态记住从该组成状态发出的转移触发之前的最后一个子状态。

实例分析:播放器中“继续播放上次未完成的列表”功能

[UML]UML系列——状态机图statechart diagram-LMLPHP

[UML]UML系列——状态机图statechart diagram-LMLPHP

[UML]UML系列——状态机图statechart diagram-LMLPHP

状态机图的Rose建模

[UML]UML系列——状态机图statechart diagram-LMLPHP

一、新建状态机图

[UML]UML系列——状态机图statechart diagram-LMLPHP

二、重命名状态机图并双击

[UML]UML系列——状态机图statechart diagram-LMLPHP

三、添加状态

[UML]UML系列——状态机图statechart diagram-LMLPHP

四、设置状态的名称

方法:双击状态

[UML]UML系列——状态机图statechart diagram-LMLPHP

五、添加转移

[UML]UML系列——状态机图statechart diagram-LMLPHP

在两个状态之间拖动

六、设置事件、守卫条件、动作

[UML]UML系列——状态机图statechart diagram-LMLPHP

[UML]UML系列——状态机图statechart diagram-LMLPHP

七、设置状态内部的动作

[UML]UML系列——状态机图statechart diagram-LMLPHP

[UML]UML系列——状态机图statechart diagram-LMLPHP

八、增加历史状态

[UML]UML系列——状态机图statechart diagram-LMLPHP

总结

UML中最常见的图就介绍到这里。通过本系列的学习,希望能帮到你。总之,分享是快乐的......

04-24 00:21