状态图与活动图

状态图
状态图用来建模对象是如何改变其状态以响应事件和展示对象从创建到删除的生命周期。状态定义为对象行为在某一个时刻的快照或者转折点。例如,计算机的状态可以定义为开机、启动、工作中、空闲、关机和离线等。状态图的任务就是用来描述一个对象所处的可能状态以及状态之间的转移,并给出状态变化序列的起点与终点。
状态图除了可以用于描述对象接受事件触发时的行为状态外,它还可以用于许多其他情况例如,状态图可以用来说明基于用户输入的屏幕状态改变,也可以用来说明复杂用例的状态进展情况。可建模状态图的对象有:类、用例、子系统、整个系统
在一般系统中,不需对每个类创建状态图。当一个类实例(对象)有多种状态,每种状态中的行为表现又不相同,则可创建状态图。例如,银行账户可以有几种不同的状态,可以打开、关闭或透支。在这些不同状态下,账户的处理功能是不同的。


状态图的符号
状态图由状态、转移和事件组成。联合使用状态和转移可以更好地建模它们,有时需要包含决策点和同步条来显示更高层次的细节信息。
1.状态
1)状态图中共有3种独立的状态标记符,如下图所示
2)基本状态显示为圆角矩形。状态的名称放在矩形中。 这种标记符带包模型中妈祖条件的一个点。例如,诊断机的装填示例可能包含开、关、诊断和空闲等。标准状态的名称只是满足了什么条件,如下图所示。
3)开始状态和结束状态标记符是指示模型的开始和结束状态的特殊标记符。模型中的开始状态是一个实心点,结束状态是带有圆圈的实心点。模型不必同时具有开始和结束状态,因为模型可以总是运行,从不停止
4)状态细节是只当对象处于特定状态时,可能要进行一些活动,例如生成报表、进行计算或向另以对象发送事件。
2.转移
转移用来显示从一个状态到另一个状态的处理流。转移使用一个状态到另一个状态的开放箭头来标记。
3.决策点
决策点在建模状态图时提供了方便,因为它通过在中心位置分组转移到各自的方向,从而提高了状态图的可视性。
4.同步
状态图中使用同步条是为了说明并发工作流的交叉与联合。

状态图的动作和事件
条件用来描述状态转移的前提。事件用来指明什么触发了转移,动作用来说明当转移发生时会产生什么情况。事件、条件和动作是转移的三个选项,其定义格式见下图所示。
anEvent[guardCondition]/anAction
该图描述的信息是---"如果guardCondition为true,当anEvent发生时,将执行anAction,并立即进入状态B"。

1.事件
事件通常在从一个状态到另一个状态的转移路径上直接指定。事件用来指示是什么导致了模型中状态的改变。
2.动作
动作说明了当事件发生时发生了什么行为。
Event类型的动作示例如右图,这个示例说明了只要ResetUsers事件传递的所有用户都没有打开,他们就会被全部删除。
3.条件
条件说明状态转移必须要满足的前提。条件一般为一个布尔表达式。如下图所示。

组合状态
一个对象可以通过同步操作同时拥有多个状态。有时,对象还可以拥有层次结构的状态。当单个状态具有独有的附加的子状态时,可以在状态图中使用层次结构的状态。
在一个复杂的状态中可以细化为多个子状态的合成。该复杂状态称为组合状态。

状态图的建模方法
状态图建模需要执行以下步骤:
1)标识出需要进一步建模的实体
2)标识出每一个实体的开始状态和结束状态
3)确定与每一个实体相关的事件
4)从起始状态开始创建状态图。
5)如果必要则创建组合状态。


活动图
活动图定义
活动图是一种用于描述系统行为的模型视图,它可用来描述过程(业务过程、工作流、事件流等)中的活动及其迁移。简单地将,活动图是"00流程图"。
活动图的标记符与状态图的标记符非常相似,有时会让人混淆。其实,状态图用来表示单个对象的行为如何改变其状态。而活动图是用来建模不同区域的工作如何彼此交互。
活动图的符号
活动图保留了许多传统流程图的特征,它包含如下元素。
活动、操作、状态、转移、对象流、分叉、决策、联结
1、活动
活动在活动图中,用来指示要完成某项工作的动作或表示工作流的步骤。其UML标记符是一个带有圆角的矩形,如下图所示。 
在确定活动名称时应该恰当地命名,选择准确描述所发生动作的几个词。例如,Save File或者 Create New Document就是比较恰当的活动名称,而Run或者Update对读者而言是不完整的名称。
2、操作
可以用操作在活动中增加更多详细的步骤。操作是活动中执行的小步骤。在下列情况下发生:
1、进入活动时发生的操作,标有entry字样
2、活动进行时发生的操作,知道离开活动,标有do字样
3、离开活动时发生的操作,标有exit字样
4、特有事件发生时的操作,标有event字样和事件名。
操作是可选的,但提供的详细信息有助于后面完成系统设计。如果包括操作,则其在活动内显示,不管其属于上面哪一类。下面是带操作的活动例子。
3、状态
状态的标记符与活动类似,也是带圆角的矩形,但状态圆角比较小。
状态通常使用一个指示系统当前状态的单词或者短语来标识。例如,Stopped是一个状态,而stop则是一个活动。
UML包含两个特殊状态,即开始状态和结束状态。开始状态以实心黑点表示,结束状态以带有圆圈的实心黑点表示。
注意:每一个活动图只能有一个开始状态,但是可以有无数个结束状态。
4、转移
转移用来指示一种状态到另一个状态的控制流。它们可以显示活动之间或者状态之间的控制流。转移的标记符是带开放箭头的实线。
5、决策
决策是基于判断条件选择控制流继续的方向。决策的UML符号是一个小菱形标记符,然后从这里再按条件控制分支转移到满足条件的活动。
6、活动图中的其他标记符
1、渠道
泳道可以使活动图非常整洁,因为它们在很大程度上增强了活动图的可读性。泳道使用几个大矩形框表示。
2、分叉和联结
分叉用来表示并行活动的分支处理,联结用来把并行活动的汇集到同步处理。
分叉和联结在UML中的表示方法相似,都用粗黑线表示。分叉具有一个转移入口,两个或者多个转移出口。分岔描述了单向处理控制流分成了多个控制流。联结与此相反,联结具有两个或者多个转移入口,只有一个出口。联结描述了不同的处理控制流合并到一起形成一个单向处理。
如果一个处理在其他处理之前到达了联结,它将会等待,直到所有的处理都准备好之后才会向联结传递控制权。
3、对象流
活动可以输入和输出对象,并可以修改对象状态。我们能够在活动图上用对象流表示这些。

活动图建模
创建活动图共有5个任务:
1)标识需要活动图的用例
2)建模每一个用例的主路径
3)建模每一个用例的从路径
4)添加游泳道来标识活动的事务分区
5)改进高层活动并添加更多活动到图中

你可能感兴趣的:(UML)