第08章 状态图和活动图_第1页
第08章 状态图和活动图_第2页
第08章 状态图和活动图_第3页
第08章 状态图和活动图_第4页
第08章 状态图和活动图_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第8章章 状态图和活动图状态图和活动图 面向对象分析与设计面向对象分析与设计 status类型为枚举类型为枚举(Received, InInspection, Accepted, Rejected) 则应根据属性则应根据属性status建立状态图建立状态图. 面向对象分析与设计面向对象分析与设计 包含子状态的状态称为组合状态包含子状态的状态称为组合状态. 组合状态组合状态 子状态子状态 子状态也可以有初态和终态子状态也可以有初态和终态 面向对象分析与设计面向对象分析与设计 事件相同但警戒条件互斥事件相同但警戒条件互斥. 面向对象分析与设计面向对象分析与设计&UML27 8.2.4 转移转移

2、下面的示例演示了银行帐户中的转移及其有效状态,如下图下面的示例演示了银行帐户中的转移及其有效状态,如下图 所示。所示。 面向对象分析与设计面向对象分析与设计&UML28 8.2.4 转移转移 决策点决策点 决策点在建模状态图时提供了方便,因为它通过在中心位决策点在建模状态图时提供了方便,因为它通过在中心位 置分组转移到各自的方向,从而提高了状态图的可视性,如下置分组转移到各自的方向,从而提高了状态图的可视性,如下 图所示。图所示。 面向对象分析与设计面向对象分析与设计&UML29 8.2.4 转移转移 同步同步 状态图中使用同步条是为了说明并发工作流的状态图中使用同步条是为了说明并发工作流的分

3、叉分叉与与联合联合。 下图所示为同步条的标记符。下图所示为同步条的标记符。 面向对象分析与设计面向对象分析与设计&UML30 8.2.4 转移转移 条件条件用来描述状态转移的前提。用来描述状态转移的前提。事件事件用来指示什么触发了转用来指示什么触发了转 移,移,动作动作用来说明当转移发生时会产生什么情况。事件、条件用来说明当转移发生时会产生什么情况。事件、条件 和动作是转移的三个选项,其定义格式见下图所示。和动作是转移的三个选项,其定义格式见下图所示。 该图描述的信息是该图描述的信息是“如果如果guardConditionguardCondition为为truetrue,当,当 anEvent

4、anEvent发生时,将执行发生时,将执行anActionanAction,并立即进入状态,并立即进入状态B”B” 事件事件 条件条件 动作动作 面向对象分析与设计面向对象分析与设计&UML31 8.2.5 事件事件 事件通常在从一个状态到另一个状态的转移路径上直接指事件通常在从一个状态到另一个状态的转移路径上直接指 定。事件用来指示是什么导致了模型中状态的改变。下图演示定。事件用来指示是什么导致了模型中状态的改变。下图演示 了电话卡事件的标记符。了电话卡事件的标记符。 事件事件 面向对象分析与设计面向对象分析与设计&UML32 8.2.5 事件事件 事件是对一个在时间和空间上占有一定位置的有

5、意义事件是对一个在时间和空间上占有一定位置的有意义 的事情的详细说明的事情的详细说明. (1) 调用事件调用事件, 表示对操作的调用表示对操作的调用. 问题问题: 调用谁的操作调用谁的操作? 面向对象分析与设计面向对象分析与设计&UML33 8.2.5 事件事件 (2) 变化事件变化事件, 表示某布尔表达式值变化表示某布尔表达式值变化, 引起的事件引起的事件. 注意注意: 变化事件与警戒条件区别变化事件与警戒条件区别 面向对象分析与设计面向对象分析与设计&UML34 8.2.5 事件事件 (3) 时间事件时间事件, 表示满足某一时间表达式表示满足某一时间表达式, 引起的事件引起的事件. (4)

6、 信号事件信号事件, 表示对象接收到某信号的事件表示对象接收到某信号的事件. 信号是对象之间异步发送信号是对象之间异步发送/接收的接收的, 它们之间可以形它们之间可以形 成泛化关系成泛化关系. 信号事件与调用事件类似信号事件与调用事件类似, 是异步和同步的区别是异步和同步的区别. 面向对象分析与设计面向对象分析与设计&UML35 8.2.6 动作动作 动作说明了当事件发生时发生了什么行为。动作说明了当事件发生时发生了什么行为。 EventEvent类型的动作示例如类型的动作示例如 右图右图. .这个示例说明了只这个示例说明了只 要要ResetUsersResetUsers事件传递事件传递 的所

7、有用户都没有打开,的所有用户都没有打开, 他们就会被全部删除。他们就会被全部删除。 动作动作 面向对象分析与设计面向对象分析与设计&UML36 8.2.6 动作动作 动作是一个可执行的原子计算动作是一个可执行的原子计算. UML中没有规定动作的中没有规定动作的 具体语法形式具体语法形式, 采用程序设计的语言语法即可采用程序设计的语言语法即可. 两种特殊动作两种特殊动作: 进入动作进入动作: entry / action-expression 退出动作退出动作: exit / action-expression 面向对象分析与设计面向对象分析与设计&UML37 8.2.7 条件条件 条件说明状态

8、转移必须要满足的前提。条件一般为一个布尔条件说明状态转移必须要满足的前提。条件一般为一个布尔 表达式。如下图所示。表达式。如下图所示。 条件条件 面向对象分析与设计面向对象分析与设计&UML38 8.2.8 状态图状态图- 复杂转换复杂转换 转换类型转换类型描述描述语法语法 外部转换外部转换 对事件做出响应,引起状态变化对事件做出响应,引起状态变化 或自身转换,同时引发一个特定或自身转换,同时引发一个特定 动作,如果离开或进入状态将引动作,如果离开或进入状态将引 发进入转换、离开转换发进入转换、离开转换 事件事件(参数参数)监护条件监护条件/动动 作作 内部转换内部转换 对事件做出响应,并执行

9、一个特对事件做出响应,并执行一个特 定的活动,但并不引起状态变化定的活动,但并不引起状态变化 或进入转换、离开转换或进入转换、离开转换 事件事件(参数参数)监护条件监护条件/动动 作作 进入转换进入转换 当进入某一状态时,执行相应活当进入某一状态时,执行相应活 动动 entry/活动活动 退出转换退出转换 当离开某一状态时,执行相应活当离开某一状态时,执行相应活 动动 exit/活动活动 面向对象分析与设计面向对象分析与设计&UML39 8.2.8 状态图状态图- 复杂转换复杂转换 面向对象分析与设计面向对象分析与设计&UML40 8.2.8 状态图状态图- 复杂转换复杂转换 进入和退出转换:

10、当进入一个状态时,执行某个动作;进入和退出转换:当进入一个状态时,执行某个动作; 或当退出某个状态时,执行什么动作。这时就可以使用或当退出某个状态时,执行什么动作。这时就可以使用 进入和退出转换来表示进入和退出转换来表示 内部转换:用来处理一些不离开该状态的事件内部转换:用来处理一些不离开该状态的事件 面向对象分析与设计面向对象分析与设计&UML41 8.3.1 状态图的阅读状态图的阅读 最为核心的元素无外乎是两个:一个是用圆角矩形表示最为核心的元素无外乎是两个:一个是用圆角矩形表示 的状态(初态和终态例外);另一个则是在状态之间的、的状态(初态和终态例外);另一个则是在状态之间的、 包含一些

11、文字描述的有向箭头线,这些箭头线称为转换包含一些文字描述的有向箭头线,这些箭头线称为转换 面向对象分析与设计面向对象分析与设计&UML42 8.3.1 状态图的阅读状态图的阅读 源状态:即受转换影响的状态源状态:即受转换影响的状态 目标状态:当转换完成后对象的状态目标状态:当转换完成后对象的状态 触发事件:用来为转换定义一个事件,包括调用、改变、触发事件:用来为转换定义一个事件,包括调用、改变、 信号、时间四类事件信号、时间四类事件 监护条件:布尔表达式,决定是否激活转换、监护条件:布尔表达式,决定是否激活转换、 动作:转换激活时的操作动作:转换激活时的操作 面向对象分析与设计面向对象分析与设

12、计&UML43 8.3.1 状态图的阅读状态图的阅读 与状态与状态off相关的转换有两个,其触发事件都是相关的转换有两个,其触发事件都是turnOn, 只不过其监护条件不同。如果对象收到事件只不过其监护条件不同。如果对象收到事件turnOn,那,那 么将判断壶中是否有水;如果么将判断壶中是否有水;如果没水没水,则仍然处于,则仍然处于off状状 态;如果态;如果有水有水则转为则转为on状态,并执行状态,并执行“烧水烧水”动作动作 而与状态而与状态on相关的转换也有两个,如果相关的转换也有两个,如果“水开了水开了”就执就执 行行turnOff,关掉开关;如果烧坏了,就进入了终态了,关掉开关;如果烧

13、坏了,就进入了终态了 面向对象分析与设计面向对象分析与设计&UML44 8.3.1 状态图状态图 练习:练习: 阅读一个电梯系统的状态图阅读一个电梯系统的状态图 步骤步骤: : 1 1)标识出状态。)标识出状态。 2 2)标识出转移。)标识出转移。 3 3)标识出事件和动作。)标识出事件和动作。 面向对象分析与设计面向对象分析与设计&UML45 8.2.1 状态状态 8.2.1 状态状态 面向对象分析与设计面向对象分析与设计&UML46 8.3.2 状态图的建模方法状态图的建模方法 状态图建模需要执行以下步骤:状态图建模需要执行以下步骤: 1 1)标识出需要进一步建模的实体。)标识出需要进一步

14、建模的实体。 2 2)标识出每一个实体的开始状态和结束状态。)标识出每一个实体的开始状态和结束状态。 3 3)确定与每一个实体相关的事件。)确定与每一个实体相关的事件。 4 4)从起始状态开始创建状态图。)从起始状态开始创建状态图。 5 5)如果必要则创建组合状态。)如果必要则创建组合状态。 面向对象分析与设计面向对象分析与设计&UML47 8.3.2 状态图的建模方法状态图的建模方法 1标识出需要进一步建模的实体 首先要标识出哪些实体需要使用状态图进一步建模。状态 图应该用于复杂的实体,而不必用于具有复杂行为的实体。 对于有复杂行为的实体,使用活动图可能会更加适合。具有 清晰、有序的状态实体

15、最适合使用状态图进一步建模。后面 将会建模一个Grade对象,尤其是它的保存功能。 面向对象分析与设计面向对象分析与设计&UML48 8.3.2 状态图的建模方法状态图的建模方法 2标识出每一个实体的开始和结束状态 要想标识出某个实体的开始状态,需要知道实体是如何实例 化的,以及实体是如何开始的。Grade对象在有了一个新的分数 需要保存时实例化。要想标识出某个实体的结束状态,需要知 道相反的信息:实体何时从系统中退出?Grade对象在完成保存 数据的操作之后退出系统,不管该操作是否成功。 面向对象分析与设计面向对象分析与设计&UML49 8.3.2 状态图的建模方法状态图的建模方法 因此,因

16、此,Grade对象的状态图具有如下描述保存功对象的状态图具有如下描述保存功 能的开始状态和结束状态:能的开始状态和结束状态: Information Entered 开始状态。开始状态。 Destroy 结束状态。结束状态。 面向对象分析与设计面向对象分析与设计&UML50 8.3.2 状态图的建模方法状态图的建模方法 3 3确定与每一个实体相关的事件确定与每一个实体相关的事件 事件用来最终完成实体的功能。要想确定实体的事件,需要事件用来最终完成实体的功能。要想确定实体的事件,需要 知道事件的任务。对于知道事件的任务。对于GradeGrade对象,它的任务是保存分数。进一对象,它的任务是保存分

17、数。进一 步了解事件的任务之后,就可以确定步了解事件的任务之后,就可以确定GradeGrade对象的事件包括接受对象的事件包括接受 数据、成功地保存数据和不成功地保存数据。数据、成功地保存数据和不成功地保存数据。 有了这些事件之后,就可以为有了这些事件之后,就可以为GradeGrade对象创建这些事件的状对象创建这些事件的状 态列表,如下所示:态列表,如下所示: Ready Ready 用于数据加载时。用于数据加载时。 Persisting Persisting 用于数据保存时。用于数据保存时。 Saved Saved 用于数据已经保存后。用于数据已经保存后。 Error Error 用于数据

18、由于出错而未成功保存时。用于数据由于出错而未成功保存时。 面向对象分析与设计面向对象分析与设计&UML51 8.3.2 状态图的建模方法状态图的建模方法 4 4从开始状态开始创建从开始状态开始创建 状态图状态图 利用上述的信息,我利用上述的信息,我 们就可以创建一个简单们就可以创建一个简单 的状态图来描述的状态图来描述GradeGrade对对 象的不同状态,以及触象的不同状态,以及触 发状态改变的事件,如发状态改变的事件,如 下图所示。下图所示。 面向对象分析与设计面向对象分析与设计&UML52 8.3.2 状态图的建模方法状态图的建模方法 5 5如果必要则指定合成状态如果必要则指定合成状态

19、创建状态图的第一步工作完成之后,可以检查一下是否创建状态图的第一步工作完成之后,可以检查一下是否 需要通过创建合成状态来进一步修饰某些状态。需要通过创建合成状态来进一步修饰某些状态。 在本例中,我们认为在本例中,我们认为PersistingPersisting状态过于笼统,因此可状态过于笼统,因此可 以为其提供子状态,其中包括以为其提供子状态,其中包括LoadLoad、UpdateUpdate和和SaveSave,或者只,或者只 包括包括InsertInsert,如下图所示。,如下图所示。 面向对象分析与设计面向对象分析与设计&UML53 8.3.2 状态图的建模方法状态图的建模方法 面向对象

20、分析与设计面向对象分析与设计&UML54 8.3.2 状态图的建模方法状态图的建模方法 例:航班机票预订系统例:航班机票预订系统 寻找主要状态:对于航班机票预订系统而言,显然包括寻找主要状态:对于航班机票预订系统而言,显然包括 的状态主要有的状态主要有 - 在刚确定飞机计划时,显然是没有任何预订的,并在刚确定飞机计划时,显然是没有任何预订的,并 且在有人预订机票之前都将处于这种且在有人预订机票之前都将处于这种“无预订无预订”状态状态 - 对订座而言显然有对订座而言显然有“部分预订部分预订”和和“预订完预订完”两种两种 状态状态 - 而当航班快要起飞时,显然要而当航班快要起飞时,显然要“预订关闭

21、预订关闭” 总结一下,主要有四种状态:无预订、部分预订、预订总结一下,主要有四种状态:无预订、部分预订、预订 完以及预订关闭完以及预订关闭 面向对象分析与设计面向对象分析与设计&UML55 8.3.2 状态图的建模方法状态图的建模方法 确定状态间转换确定状态间转换 源目标源目标无预订无预订部分预订部分预订预订完预订完预订关闭预订关闭 无预订无预订预订预订()不直接转换不直接转换关闭关闭() 部分预订部分预订退订退订(),使预订人使预订人=0预订预订(),无空座无空座关闭关闭() 预订完预订完不直接转换不直接转换退订退订()关闭关闭() 预订关闭预订关闭无转换无转换无转换无转换无转换无转换 面向

22、对象分析与设计面向对象分析与设计&UML56 8.3.2 状态图的建模方法状态图的建模方法 细化状态内的活动与转换细化状态内的活动与转换 面向对象分析与设计面向对象分析与设计&UML57 8.3.2 状态图的建模方法状态图的建模方法 使用复合状态使用复合状态 面向对象分析与设计面向对象分析与设计&UML58 8.3.2 状态图的建模方法状态图的建模方法 练习:练习: 建模航班状态图建模航班状态图 创建一个状态图来描述航班如何从提出申请、创建一个状态图来描述航班如何从提出申请、 制定航班计划、售票、起飞、飞行、到着陆的状态制定航班计划、售票、起飞、飞行、到着陆的状态 过程。过程。 练习步骤;练习

23、步骤; 1 1)标识出要建模的实体。)标识出要建模的实体。 2 2)标识出实体的状态。)标识出实体的状态。 面向对象分析与设计面向对象分析与设计&UML59 航班申请 航班计划 entry/ 发布航班信息 do/ 检查当前日期 批准航班计划 不允许申请 航班还有票 航班票 售完 结束售 票 飞行 准时到达目的 机场 延时到达 目的机场 售票/退票 开始预售 售最后一张票 起飞前30分钟 退票 起飞前30分钟 起飞 天气非正常 天气正常 降落 降落 面向对象分析与设计面向对象分析与设计&UML60 8.4 什么是活动图什么是活动图 活动图是一种用于描述系统行为的模型视图,它可用活动图是一种用于描

24、述系统行为的模型视图,它可用 来描述过程(业务过程、工作流、事件流等)中的活动及来描述过程(业务过程、工作流、事件流等)中的活动及 其迁移。其迁移。 活动图的标记符与状态图的标记符非常相似,有时会活动图的标记符与状态图的标记符非常相似,有时会 让人混淆。其实,让人混淆。其实,状态图状态图用来表示用来表示单个对象单个对象的行为如何改的行为如何改 变其状态。而变其状态。而活动图活动图是用来建模是用来建模不同区域不同区域的工作如何彼此的工作如何彼此 交互。交互。 面向对象分析与设计面向对象分析与设计&UML61 8.4 什么是活动图什么是活动图 活动图能够附加在如下建模元素中以描述该活动图能够附加在

25、如下建模元素中以描述该 元素的行为。元素的行为。 用例用例 类类 接口接口 组件组件 节点节点 面向对象分析与设计面向对象分析与设计&UML62 8.4 活动图的用途活动图的用途 活动图的主要应用活动图的主要应用 1.1.描述用例的行为描述用例的行为 活动图对用例描述尤其有用,它可建模用例的活动图对用例描述尤其有用,它可建模用例的 工作流,显示用例内部和用例之间的路径;它也可工作流,显示用例内部和用例之间的路径;它也可 以向读者说明需要满足什么条件用例才会有效,以以向读者说明需要满足什么条件用例才会有效,以 及用例完成后系统保留的条件或者状态。及用例完成后系统保留的条件或者状态。 面向对象分析

26、与设计面向对象分析与设计&UML63 8.4 活动图的用途活动图的用途 2 2理解工作流程理解工作流程 活动图对理解业务处理过程十分有用。可以画出活动图对理解业务处理过程十分有用。可以画出 描述业务工作流的活动图与领域专家进行交流,明确描述业务工作流的活动图与领域专家进行交流,明确 业务处理操作是如何进行的,将会有怎样的变化。业务处理操作是如何进行的,将会有怎样的变化。 3 3描述复杂过程的算法描述复杂过程的算法 在这种情况下使用的活动图不过是在这种情况下使用的活动图不过是UMLUML版的程序流版的程序流 程图,常规的顺序、分支过程在活动图中都能得到充程图,常规的顺序、分支过程在活动图中都能得

27、到充 分的表现。分的表现。 面向对象分析与设计面向对象分析与设计&UML64 8.5 活动图的基本概念活动图的基本概念 活动图保留了许多传统的流活动图保留了许多传统的流 程图的特征,它包含如下元素。程图的特征,它包含如下元素。 活动活动 操作操作 状态状态 转移转移 对象流对象流 分叉与分叉与联结联结 (汇合)(汇合) 决策决策 (分支分支) 面向对象分析与设计面向对象分析与设计&UML65 8.5 活动图的基本概念活动图的基本概念 1.1. 活动活动 活动在活动图中,用来指示要完成某项工作的动作活动在活动图中,用来指示要完成某项工作的动作 或表示工作流的步骤。其或表示工作流的步骤。其UMLU

28、ML标记符是一个带有圆角标记符是一个带有圆角 的矩形,如下图所示。的矩形,如下图所示。 在确定活动名称时应该恰当地命名,选择准确描在确定活动名称时应该恰当地命名,选择准确描 述所发生动作的几个词。例如,述所发生动作的几个词。例如,Save FileSave File或者或者 Create New DocumentCreate New Document就是比较恰当的活动名称,而就是比较恰当的活动名称,而 RunRun或者或者Update Update 对读者而言是不完整的名称。对读者而言是不完整的名称。 面向对象分析与设计面向对象分析与设计&UML66 8.5 活动图的基本概念活动图的基本概念

29、2. 操作 可以用操作在活动中增加更多详细的步骤。可以用操作在活动中增加更多详细的步骤。操作操作是活动中执是活动中执 行的小步骤。在下列情况下发生:行的小步骤。在下列情况下发生: 进入活动时发生的操作,标有进入活动时发生的操作,标有entryentry字样。字样。 活动进行时发生的操作,直到离开活动,标有活动进行时发生的操作,直到离开活动,标有dodo字样。字样。 离开活动时发生的操作,标有离开活动时发生的操作,标有exitexit字样。字样。 特定事件发生时的操作,标有特定事件发生时的操作,标有eventevent字样和事件名。字样和事件名。 操作是可选的,但提供的详细信息有助于后面完成系统

30、设计。操作是可选的,但提供的详细信息有助于后面完成系统设计。 如果包括操作,则其在活动内显示,不管其属于上面哪一类。下如果包括操作,则其在活动内显示,不管其属于上面哪一类。下 面是带操作的活动例子。面是带操作的活动例子。 面向对象分析与设计面向对象分析与设计&UML67 8.5 活动图的基本概念活动图的基本概念 面向对象分析与设计面向对象分析与设计&UML68 8.5 活动图的基本概念活动图的基本概念 3. 3. 状态状态 状态的标记符与活动类似,也是带圆角的矩形,但状态的状态的标记符与活动类似,也是带圆角的矩形,但状态的 圆角比较小,如下图所示。圆角比较小,如下图所示。 状态通常使用一个指示

31、系统当前状态的单词或者短语来标状态通常使用一个指示系统当前状态的单词或者短语来标 识。例如,识。例如,StoppedStopped是一个状态,而是一个状态,而stopstop则是一个活动。则是一个活动。 UMLUML包含两个特殊状态,即开始状态和结束状态。开始包含两个特殊状态,即开始状态和结束状态。开始 状态以实心黑点表示,结束状态以带有圆圈的实心黑点表示。状态以实心黑点表示,结束状态以带有圆圈的实心黑点表示。 面向对象分析与设计面向对象分析与设计&UML69 8.5 活动图的基本概念活动图的基本概念 注意:每一个活动图注意:每一个活动图只能有一个开始状态只能有一个开始状态,但是可但是可 以有

32、无数个结束状态以有无数个结束状态。如下图所示:。如下图所示: 与状态图不同与状态图不同 面向对象分析与设计面向对象分析与设计&UML70 8.5 活动图的基本概念活动图的基本概念 面向对象分析与设计面向对象分析与设计&UML71 8.5 活动图的基本概念活动图的基本概念 4 4转移转移 转移用来指示一种状态到另一个状态的控制流。它们可以显示转移用来指示一种状态到另一个状态的控制流。它们可以显示 活动之间或者状态之间的控制流。转移的标记符是带开放箭头的活动之间或者状态之间的控制流。转移的标记符是带开放箭头的 实线,如下图所示。实线,如下图所示。 面向对象分析与设计面向对象分析与设计&UML72

33、8.5 活动图的基本概念活动图的基本概念 综合运用综合运用 现在已经学习了活动图的现在已经学习了活动图的4 4种主要标记符,下面综合运用种主要标记符,下面综合运用 这些标记来生成一个活动图,如下图所示。这些标记来生成一个活动图,如下图所示。 面向对象分析与设计面向对象分析与设计&UML73 8.5 活动图的基本概念活动图的基本概念 5. 5. 决策决策 (分支)(分支) 决策是基于判断条件选择控制流继续的方向。决策的决策是基于判断条件选择控制流继续的方向。决策的UMLUML符符 号是一个小菱形标记符,然后从这里再按条件控制分支转移到号是一个小菱形标记符,然后从这里再按条件控制分支转移到 满足条

34、件的活动,如下图所示。满足条件的活动,如下图所示。 面向对象分析与设计面向对象分析与设计&UML74 8.5 活动图的基本概念活动图的基本概念 例例 描述教师记录学生成绩用例的活动图描述教师记录学生成绩用例的活动图 面向对象分析与设计面向对象分析与设计&UML75 8.5 活动图的基本概念活动图的基本概念 学习活动图中的其他标记符学习活动图中的其他标记符 1.1.泳道泳道 泳道是活动图中的区域泳道是活动图中的区域 划分,根据每个活动的职责划分,根据每个活动的职责 对所有活动进行划分,每个对所有活动进行划分,每个 泳道代表一个责任区。泳道代表一个责任区。 泳道可以使活动图非常泳道可以使活动图非常

35、 整洁,因为它们在很大程度整洁,因为它们在很大程度 上增强了活动图的可读性。上增强了活动图的可读性。 泳道使用几个大矩形框表示,泳道使用几个大矩形框表示, 如右图所示。如右图所示。 面向对象分析与设计面向对象分析与设计&UML76 8.5 活动图的基本概念活动图的基本概念 下面示例显示了一个在下面示例显示了一个在TeacherTeacher和和Web InterfaceWeb Interface 泳道之间交叉转移控制流的活动图。如果没有泳道,泳道之间交叉转移控制流的活动图。如果没有泳道, 该活动图就无法说明该活动图就无法说明Teacher Teacher 使用了使用了LogonLogon、Ch

36、oose Choose StudentStudent和和Change Student InfoChange Student Info活动,活动,Web Web InterfaceInterface使用使用Validate UserValidate User、Retrieve Student Retrieve Student InfoInfo和和 Persist User InfoPersist User Info活动,如下图所示。活动,如下图所示。 面向对象分析与设计面向对象分析与设计&UML77 8.5 活动图的基本概念活动图的基本概念 面向对象分析与设计面向对象分析与设计&UML78 8.

37、5 活动图的基本概念活动图的基本概念 2.2.分叉和联结分叉和联结( (汇合汇合) ) 分叉用来表示并行活动的分支处理,联结用来把并行活动分叉用来表示并行活动的分支处理,联结用来把并行活动 的汇集到同步处理。的汇集到同步处理。 分叉分叉和联结在和联结在UMLUML中的表示方法相似,都用粗黑线表示。分中的表示方法相似,都用粗黑线表示。分 叉叉具有一个转移入口,两个或者多个转移出口。分具有一个转移入口,两个或者多个转移出口。分叉叉描述了单描述了单 向处理控制流分成了多个控制流。联结与此相反,联结具有两向处理控制流分成了多个控制流。联结与此相反,联结具有两 个或者多个转移个或者多个转移入入口,只有一

38、个出口。联结描述了不同的处理口,只有一个出口。联结描述了不同的处理 控制流合并到一起形成一个单向处理,如下图所示。控制流合并到一起形成一个单向处理,如下图所示。 面向对象分析与设计面向对象分析与设计&UML79 8.5 活动图的基本概念活动图的基本概念 如果一个处理在其他处理之前到达了联结,它将会如果一个处理在其他处理之前到达了联结,它将会等待等待, 直到所有的处理都准备好之后才会向联结传递控制权。直到所有的处理都准备好之后才会向联结传递控制权。 面向对象分析与设计面向对象分析与设计&UML80 8.5 活动图的基本概念活动图的基本概念 左例演示了分叉中的一左例演示了分叉中的一 个处理时间长于

39、另一个的个处理时间长于另一个的 情况。当然,这完全是由情况。当然,这完全是由 每一个处理中的活动数假每一个处理中的活动数假 定的。由于我们不知道每定的。由于我们不知道每 一个活动有多长,因此不一个活动有多长,因此不 能保证哪一个首先完成。能保证哪一个首先完成。 为此,我们在让用户访问为此,我们在让用户访问 应用程序之前插入了一个应用程序之前插入了一个 联结,以便确保两个独立联结,以便确保两个独立 的处理彼此连接在一起。的处理彼此连接在一起。 面向对象分析与设计面向对象分析与设计&UML81 8.5 活动图的基本概念活动图的基本概念 3 3对象流对象流 活动可以输入和输出对象,并可以修改对象状活

40、动可以输入和输出对象,并可以修改对象状 态。我们能够在活动图上用对象流表示这些。如下态。我们能够在活动图上用对象流表示这些。如下 图所示。图所示。 面向对象分析与设计面向对象分析与设计&UML82 8.5 活动图的基本概念活动图的基本概念 面向对象分析与设计面向对象分析与设计&UML83 8.5 活动图的基本概念活动图的基本概念 面向对象分析与设计面向对象分析与设计&UML84 8.7 活动图建模活动图建模 创建活动图共有创建活动图共有5 5个任务:个任务: 1 1)标识需要活动图的用例。)标识需要活动图的用例。 2 2)建模每一个用例的主路径。)建模每一个用例的主路径。 3 3)建模每一个用

41、例的从路径。)建模每一个用例的从路径。 4 4)添加游泳道来标识活动的事务分区。)添加游泳道来标识活动的事务分区。 5 5)改进高层活动并添加更多活动到图中。)改进高层活动并添加更多活动到图中。 面向对象分析与设计面向对象分析与设计&UML85 8.7 活动图建模活动图建模 1 1 标识用例标识用例 在建模活动图之前,需要首先确定要建模什么。下面的教师在建模活动图之前,需要首先确定要建模什么。下面的教师 更新分数用例是一组较大用例的一部分,我们就从它开始。如下更新分数用例是一组较大用例的一部分,我们就从它开始。如下 图所示。这个用例实际上使用了图所示。这个用例实际上使用了3 3个用例。我们不仅

42、有个用例。我们不仅有Update Update GradeGrade用例,还有用例,还有Save GradeSave Grade和和Load GradeLoad Grade用例。用例。 面向对象分析与设计面向对象分析与设计&UML86 8.7 活动图建模活动图建模 2 2建模主路径建模主路径 在开始创建用例的活动图时,往往先建立一条明显的路径在开始创建用例的活动图时,往往先建立一条明显的路径 执行工作流,然后从该路径进行扩展,如下图所示。执行工作流,然后从该路径进行扩展,如下图所示。 该路径仅考虑用例的正常活动路径(登录、选择学生、加该路径仅考虑用例的正常活动路径(登录、选择学生、加 载他们的

43、分数,修改分数,保存修改结果等活动过程),载他们的分数,修改分数,保存修改结果等活动过程), 没没 有考虑任何错误和判断的路径。有考虑任何错误和判断的路径。 面向对象分析与设计面向对象分析与设计&UML87 8.7 活动图建模活动图建模 3 3建模从路径建模从路径 考虑用例其他可能的工作流情况。如处理错误,考虑用例其他可能的工作流情况。如处理错误, 或许是执行其他活动。或许是执行其他活动。 面向对象分析与设计面向对象分析与设计&UML88 8.7 活动图建模活动图建模 面向对象分析与设计面向对象分析与设计&UML89 8.7 活动图建模活动图建模 4 4添加泳道添加泳道 泳道对于提高活动图的可读性非常有益,在本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论