UML之状态图和活动图
1. 状态:是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况。
状态机:记录下给定时刻状态下的设备,他可以根据不同的输入对每个给定的变化而改变其状态或引发一个动作
状态图(statechart Diagram):本质上是一个状态机,或者是状态机的特殊情况,它基本上是状态机中的元素的投影,这也意味着状态图包括状态机的所有特征
2.状态图
1)状态
状态的组成部分:
名称(Name) |
将一个状态与其他状态分开的字符串;状态也可能是匿名的,这表示它没有名称 |
---|---|
进入和退出动作(Entry/Exit Action) |
在进入和退出时执行的操作 |
内部转移(Internal Transition) |
对事件做出响应,执行一定的动作,但不会发生状态的转换 |
|
|
子状态(substage) |
当状态是复合状态时 |
延迟事件(Deferred Event) |
未在本状态中处理,但不被丢弃,而是延迟到其他状态中处理的事件 |
2)转换
用于表示一个状态机的来给你个状态之间的一种关系,即一个在某初始状态的对象通过执行指定的动作并符合一定的条件下进入第二种状态
转换五要素:
源状态 |
转移所影响的状态;如果对象处于源状态,当对象收到转移的触发事件并且满足警戒条件(如果有)时,就可能会触发输出转移。 |
---|---|
事件触发器 |
使转移满足触发条件的事件。当处于源状态的对象收到该事件时(假设已满足其警戒条件),就可能会触发转移。 |
警戒条件 |
使转移满足触发条件的事件。当处于源状态的对象收到该事件时(假设已满足其警戒条件),就可能会触发转移。 |
操作 |
可执行的、不可分割的计算过程,该计算可能直接作用于拥有状态机的对象,也可能间接作用于该对象可见的其他对象。 |
目标状态 |
在完成转移后被**的状态。 |
3)类型
外部转换:对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转换
内部转换:对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换。离开转换
进入转换:当进入某一状态时,执行相应活动
退出转换:当离开某一状态时,执行相应活动
3.活动图
活动图用来描述事物或对象的活动变化流程,是一种表述业务的过程、工作流的技术。
1)活动图的图形表示
2)活动图的组成元素
- 动作状态:指执行的原子的、不可中断的动作,并在此动作完成后通过完成转换转向另一个状态的状态(平滑的圆角矩形表示)
- 活动状态:用于表达状态机中的一个非原子的运行,活动状态可以分解成其他子活动或者动作状态(平滑的圆角矩形表示)
- 动作流:所有动作状态之间的转换流称之为动作流(带箭头的直线表示)
- 分支与合并:分支一般用于表示对象类所具有的条件行为,条件行为用分支和合并表达(空心小菱形表达)
一个分支有一个入转换和两个带条件的出转换,出转换的条件是互斥的,为了保证一条出转换被触发。
一个合并有两个带条件的入转换和一个出转换,合并表示从对应的分支开始的条件行为的结束。
- 分叉与汇合:分叉用于将动作流分为两个或多个并发运行的分支,而汇合用于同步这些并发的分支,已达到共同完成一项事务的目的。
分叉用来描述并发线程,每个分叉可以有一个输入转换和多个输出转换,每个转换都可以是独立的控制流
汇合代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才能继续往下进行。每个汇合可以以有两个或多个输入转换和一个输出转换
分叉和汇合都是用加粗的水平线段表示
- 泳道:将活动图分成若干组,并把每一组指定给负责这组活动的业务组织
1)区分了负责活动的对象
2)每个活动只能明确地属于一个泳道
3)泳道没有顺序
4)泳道用垂直实线绘出,分隔区域即为泳道。
- 对象流(带箭头的虚线表示):是动作状态或者活动状态于对象之间的依赖关系,表示动作使用对象或者动作对对象的影响。
1)如果箭头从活动指向对象,表示活动对对象的创建、修改和撤销等影响
2)如果箭头从对象指向活动,表示该活动将使用所指向的对象。
特点:一个对象可以有多个动作操控;一个动作输出的对象可以给作为另一个动作的输入对象;在活动图中,同一个对象可以多次出现。
3)活动图的建模技术
- 识别要对其工作流描述的类或对象
- 确定的工作流的初始状态和终止状态,明确工作流的边界
- 对动作状态或活动状态建模
- 对工作流建模
- 对对象流建模
- 对建立的模型进行精化和细化。