Section8状态图和活动图

上传人:s9****2 文档编号:576568091 上传时间:2024-08-20 格式:PPT 页数:57 大小:1.59MB
返回 下载 相关 举报
Section8状态图和活动图_第1页
第1页 / 共57页
Section8状态图和活动图_第2页
第2页 / 共57页
Section8状态图和活动图_第3页
第3页 / 共57页
Section8状态图和活动图_第4页
第4页 / 共57页
Section8状态图和活动图_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《Section8状态图和活动图》由会员分享,可在线阅读,更多相关《Section8状态图和活动图(57页珍藏版)》请在金锄头文库上搜索。

1、状态图和活动图状态图和活动图内容内容状态图概述状态图概述状态图的基本概念状态图的基本概念绘制状态图绘制状态图状态图应用说明状态图应用说明活动图概述活动图概述活动图中的基本概念活动图中的基本概念活动图与状态图、流程图的区别活动图与状态图、流程图的区别活动图的用途活动图的用途分解活动分解活动绘制活动图绘制活动图小结小结状态图概述状态图概述状态机状态机可以对一个对象的生命周期建模,可以对一个对象的生命周期建模,是展示状态与是展示状态与状态转换的图。状态转换的图。状态图用于显示状态机,重点在于描述状态图用于显示状态机,重点在于描述状态之间的控制流。状态之间的控制流。状态图状态图(Statechart

2、diagram)(Statechart diagram)用于描述一个对象在其生存周用于描述一个对象在其生存周期间的动态行为期间的动态行为, , 表现一个对象所经历的状态序列表现一个对象所经历的状态序列, , 引起引起状态转移的事件状态转移的事件(event), (event), 以及因状态转移而伴随的动作以及因状态转移而伴随的动作(action).(action).实例:订单对象的状态图实例:订单对象的状态图状态图概述状态图概述如如: 类类SellableItem中有中有2个属性个属性: salePrice和和status, 其中其中: salePrice类型为类型为Money, 取值范围为正

3、实数取值范围为正实数; status类型为枚举类型为枚举(Received, InInspection, Accepted, Rejected)则应根据属性则应根据属性status建立状态图建立状态图.状态图描述的对象往往有多个属性状态图描述的对象往往有多个属性, , 应该在具有如下特应该在具有如下特性的属性上建模性的属性上建模: :属性拥有较少的可能取值属性拥有较少的可能取值属性在这些值之间的转移有一定的限制属性在这些值之间的转移有一定的限制状态图的基本概念状态图的基本概念状态状态, state:圆角矩形表示(初态和终态例外)圆角矩形表示(初态和终态例外)转移转移, transition:状

4、态之间包含一些文字描述的有向箭头线状态之间包含一些文字描述的有向箭头线最核心的元素最核心的元素状态状态状态是在对象的生命期中的某外条件或状况状态是在对象的生命期中的某外条件或状况, , 在此期在此期间对象将满足某些条件、执行某些活动或等待某些事间对象将满足某些条件、执行某些活动或等待某些事件件. .状态的组成部分状态的组成部分状态名状态名名称唯一名称唯一允许匿名允许匿名 放在状态图标的顶部放在状态图标的顶部进入进入/ /退出动作退出动作入口动作和出口动作表示进入或退出这个状态所要立入口动作和出口动作表示进入或退出这个状态所要立即执行的动作。即执行的动作。入口动作用入口动作用“entry/ent

5、ry/要执行的动作要执行的动作”表达,而出口动作用表达,而出口动作用“exit/exit/要执行的动作要执行的动作”表达。表达。状态的组成部分状态的组成部分内部转移内部转移一个状态在响应一个事件时,如果只执行一个动作,一个状态在响应一个事件时,如果只执行一个动作,不产生任何状态转移,则应在状态内用不产生任何状态转移,则应在状态内用“event event 事件名事件名/ /动作名动作名”格式及文字说明进行描述。格式及文字说明进行描述。活动活动状态内可以带有活动,其格式为:状态内可以带有活动,其格式为:do/do/活动名活动名延迟事件延迟事件延迟事件是一种特殊的事件,它是指该事件不会触发延迟事件

6、是一种特殊的事件,它是指该事件不会触发状态的转换,当对象处于该状态时事件不会丢失,但状态的转换,当对象处于该状态时事件不会丢失,但会被延迟执行。会被延迟执行。状态的组成部分状态的组成部分状态名状态名进入动作进入动作, 进入该状进入该状态时执行该动作态时执行该动作.活动活动,处于该状态处于该状态时执行的活动时执行的活动.内部转移内部转移,该状态中出现该状态中出现特定事件时执行的动作特定事件时执行的动作.退出动作退出动作, 当离开该状态当离开该状态时执行该动作时执行该动作.延迟事件延迟事件, 在该状态出现该事件时在该状态出现该事件时, 不在本状态不在本状态响应响应,而是延迟到其他状态响应而是延迟到

7、其他状态响应.状态的类型状态的类型初态:初态:只允许有一个只允许有一个终态:终态:可以有多个或没有可以有多个或没有中间状态中间状态状态的类型状态的类型组合状态组合状态子状态子状态子状态也可以有初态和终态子状态也可以有初态和终态组合状态:包含子状态的状态组合状态:包含子状态的状态子状态:嵌套在另一个状态中的状态子状态:嵌套在另一个状态中的状态状态的类型状态的类型子状态之间的子状态之间的 or 关系关系, 任意时刻只能到达一个子状态任意时刻只能到达一个子状态.状态的类型状态的类型子状态之间的子状态之间的 and 关系关系, 一个对象的状态是每个并发段中各一个对象的状态是每个并发段中各取一个状态的组

8、合取一个状态的组合.状态的类型状态的类型浅浅(shallow)历史状态历史状态, 只记住最外层组合状态的历史只记住最外层组合状态的历史.深深(deep)历史状态历史状态, 可以记住任意深度的组合状态的历可以记住任意深度的组合状态的历史史.历史状态:伪状态历史状态:伪状态, , 其目的是记住从组合状态中退出时其目的是记住从组合状态中退出时所处的子状态所处的子状态, , 当再次进入组合状态时当再次进入组合状态时, , 可以直接进入可以直接进入这个子状态这个子状态, , 而不是再从组合状态的初态开始而不是再从组合状态的初态开始. .状态的类型状态的类型当从状态当从状态“结账结账”和和“显示购物车显示

9、购物车”返回子状态返回子状态“显示索显示索引信息引信息”时,将进入的是离开时的历史状态。时,将进入的是离开时的历史状态。转移转移转移表示对象将在第一个状态执行一定的动作转移表示对象将在第一个状态执行一定的动作, , 并在某并在某个特定事件发生且满足某个特定的警戒条件时进入第二个特定事件发生且满足某个特定的警戒条件时进入第二个状态个状态. .转移的格式转移的格式: event-name (parameters) guard-condition /action实例:订单对象的状态图实例:订单对象的状态图没有标明引发转移的事件:状态中的活动一旦完成,转移立即发生没有标明引发转移的事件:状态中的活动一

10、旦完成,转移立即发生没有标明警戒条件:事件一旦发生,转移必将发生没有标明警戒条件:事件一旦发生,转移必将发生转移转移对于一个给定的状态对于一个给定的状态, 最终只能产生一个转移最终只能产生一个转移, 因此从一个因此从一个状态出发的几个转移之间应该是互斥的状态出发的几个转移之间应该是互斥的, 包括包括: 事件不同事件不同; 事件相同但警戒条件互斥事件相同但警戒条件互斥.实例:订单对象的状态图实例:订单对象的状态图转移中的事件转移中的事件(1)调用事件调用事件, 表示对操作的调用表示对操作的调用.问题问题: 调用谁的操作调用谁的操作?事件是对一个在时间和空间上占有一定位置的有意义的事件是对一个在时

11、间和空间上占有一定位置的有意义的事情的详细说明事情的详细说明. .涉及涉及两个以上的对象。既可以为同步调用,也可以为涉及涉及两个以上的对象。既可以为同步调用,也可以为异步调用。异步调用。转移中的事件转移中的事件(2) 变化事件变化事件,事件依靠特定属性值的布尔表达式所表示的条件的事件依靠特定属性值的布尔表达式所表示的条件的满足来触发状态的转换满足来触发状态的转换警戒条件与变化事件的区别:警戒条件与变化事件的区别:警戒条件只是在引起转换的事件触发时和事件接收者对事警戒条件只是在引起转换的事件触发时和事件接收者对事件进行处理时被赋值一次。件进行处理时被赋值一次。变化事件则可以被多次赋值直到条件为真

12、,多次赋值满足变化事件则可以被多次赋值直到条件为真,多次赋值满足条件后转换也会被激发。条件后转换也会被激发。转移中的事件转移中的事件(3) 时间事件时间事件, 表示满足某一时间表达式表示满足某一时间表达式, 引起的事件引起的事件.绝对时间绝对时间相对时间相对时间转移中的事件转移中的事件(4) 信号事件信号事件, 表示对象接收到某信号的事件表示对象接收到某信号的事件. 信号是对象之间异步发送信号是对象之间异步发送/接收的接收的, 它们之间可以形成泛化它们之间可以形成泛化关系关系. 信号事件与调用事件类似信号事件与调用事件类似, 是异步和同步的区别是异步和同步的区别. 在信号事件中,发送者和接受者

13、可以是同一个对象。在信号事件中,发送者和接受者可以是同一个对象。 状态转换的动作执行顺序状态转换的动作执行顺序一次状态转换的动作执行顺序为一次状态转换的动作执行顺序为离开动作离开动作转移动作转移动作 进入动作进入动作状态内的活动状态内的活动绘制状态图绘制状态图绘制状态图的步骤:绘制状态图的步骤:寻找对象主要的状态寻找对象主要的状态确定引起状态转换的事件确定引起状态转换的事件确定转换进行时对象执行的相应动作确定转换进行时对象执行的相应动作细化状态内的活动与转换,用复合状态来展开细节细化状态内的活动与转换,用复合状态来展开细节思考:航班机票预订系统的状态图思考:航班机票预订系统的状态图寻找寻找对象

14、主要的状态:寻找寻找对象主要的状态: - 在刚确定飞机计划时,显然是没有任何预订的,并在刚确定飞机计划时,显然是没有任何预订的,并且在有人预订机票之前都将处于这种且在有人预订机票之前都将处于这种“无预订无预订”状态状态 - 对订座而言显然有对订座而言显然有“部分预订部分预订”和和“预订完预订完”两种状态两种状态 - 而当航班快要起飞时,显然要而当航班快要起飞时,显然要“预订关闭预订关闭”总结一下,主要有四种状态:无预订、部分预订、预订总结一下,主要有四种状态:无预订、部分预订、预订完以及预订关闭完以及预订关闭 思考:航班机票预订系统的状态图思考:航班机票预订系统的状态图确定引起状态转换的事件确

15、定引起状态转换的事件源目标源目标无预订无预订部分预订部分预订预订完预订完预订关闭预订关闭无预订无预订预订预订()不直接转换不直接转换关闭关闭()部分预订部分预订退订退订(),使预订人使预订人=0预订预订(),无空座无空座关闭关闭()预订完预订完不直接转换不直接转换退订退订()关闭关闭()预订关闭预订关闭无转换无转换无转换无转换无转换无转换思考:航班机票预订系统的状态图思考:航班机票预订系统的状态图确定转换进行时对象执行的相应动作确定转换进行时对象执行的相应动作思考:航班机票预订系统的状态图思考:航班机票预订系统的状态图使用复合状态使用复合状态状态图应用说明状态图应用说明对对象生命周期建模:主要

16、描述对象能够响应的事件对对象生命周期建模:主要描述对象能够响应的事件对反应型对象建模:这个对象可能处于的稳定状态、从对反应型对象建模:这个对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作及每个状态改变时发生的动作 活动图概述活动图概述 活动图是对系统动态方面建模的主要形式之一,描述活动图是对系统动态方面建模的主要形式之一,描述需要做的活动以及执行这些活动的顺序需要做的活动以及执行这些活动的顺序活动图是一种表述过程基理、业务过程以及工作流的活动图是一种表述过程基理、业务过程以及工作流的技术。它可以

17、用来对业务过程、工作流建模,也可以技术。它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模对用例实现甚至是程序实现来建模UML 2.0而言,去除了而言,去除了“活动图是状态图的一种特例活动图是状态图的一种特例”这这一规定一规定 实例:活动图实例:活动图活动图中的基本概念活动图中的基本概念初始节点和活动终点:用一个实心圆表示初始节点,用初始节点和活动终点:用一个实心圆表示初始节点,用一个圆圈内加一个实心圆来表示活动终点一个圆圈内加一个实心圆来表示活动终点并不一定要定义活动终点。活动终点表示所有被并不一定要定义活动终点。活动终点表示所有被触发的活动都执行完毕,没有待执行的活动。

18、触发的活动都执行完毕,没有待执行的活动。活动图中的基本概念活动图中的基本概念活动节点:是活动图中最主要的元素之一,它用来表示活动节点:是活动图中最主要的元素之一,它用来表示一个活动一个活动 动作状态:执行原子的、不可中断的动作;不能有入口动作状态:执行原子的、不可中断的动作;不能有入口动作和出口动作,更不能有内部转移。动作和出口动作,更不能有内部转移。活动状态:可以分解、被中断;可以有入口动作和出口活动状态:可以分解、被中断;可以有入口动作和出口动作,也可以有内部转移。动作,也可以有内部转移。活动图中的基本概念活动图中的基本概念转换:当一个活动结束时,控制流就会马上传递给下一转换:当一个活动结

19、束时,控制流就会马上传递给下一个活动节点,在活动图中称之为个活动节点,在活动图中称之为“转换转换”,用一条带箭头,用一条带箭头的直线来表示的直线来表示 分支与警戒条件:分支用菱形表示,它有一个进入转换,分支与警戒条件:分支用菱形表示,它有一个进入转换,一个或多个离开转换,每个离开转换上都会有一个警戒一个或多个离开转换,每个离开转换上都会有一个警戒条件,用来表示满足什么条件的时候执行该转换。条件,用来表示满足什么条件的时候执行该转换。合并条件:合并用菱形表示,它有多个入转换和一个出合并条件:合并用菱形表示,它有多个入转换和一个出转换,只走一条控制路径,无需同步。转换,只走一条控制路径,无需同步。

20、 活动图中的基本概念活动图中的基本概念实例:活动图实例:活动图分叉:用于将控制流分为两个或者多个并发运行的分支,分叉:用于将控制流分为两个或者多个并发运行的分支,每个分叉可以有一个输入转换和两个或多个输出转换。每个分叉可以有一个输入转换和两个或多个输出转换。汇合:用于同步这些并发分支,以达到共同完成一项事务汇合:用于同步这些并发分支,以达到共同完成一项事务的目的。每个汇合可以有两个或多个输入转换和一个输出的目的。每个汇合可以有两个或多个输入转换和一个输出转换。转换。分叉和汇合都使用加粗的水平线段表示。分叉和汇合都使用加粗的水平线段表示。活动图中的基本概念活动图中的基本概念实例:活动图实例:活动

21、图泳道:将活动用虚线分成一些纵向的区域。每个区域代表泳道:将活动用虚线分成一些纵向的区域。每个区域代表特定类、人或部门的一个责任区。特定类、人或部门的一个责任区。泳道区分了负责活动的对象,明确地表示了哪些活动是由泳道区分了负责活动的对象,明确地表示了哪些活动是由哪些对象进行的。每个活动只能明确地属于一个泳道。哪些对象进行的。每个活动只能明确地属于一个泳道。泳道和类并不是一一对应的关系。泳道和类并不是一一对应的关系。活动图中的基本概念活动图中的基本概念在程序设计中,活动图无法描述出每个活动是由哪个类来完成的。在程序设计中,活动图无法描述出每个活动是由哪个类来完成的。在领域建模中,活动图无法描述每

22、个活动由哪个人或部门负责。在领域建模中,活动图无法描述每个活动由哪个人或部门负责。在每个活动旁边标记负责完成它的类或责任者?在每个活动旁边标记负责完成它的类或责任者?带有泳道和对象并发的活动图带有泳道和对象并发的活动图带泳道的活动图带泳道的活动图实现活动图实现活动图时,最终要时,最终要将活动分配将活动分配给类来实现给类来实现对象流:动作状态或者活动状态与对象之间的依赖关系,对象流:动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响。表示动作使用对象或者动作对对象的影响。 对象流中的对象特点:对象流中的对象特点:一个对象可以由多个动作操纵。一个对象可以由多个动作操纵。

23、一个动作输出的对象可以作为另一个动作输入的对象。一个动作输出的对象可以作为另一个动作输入的对象。在活动图中,同一个对象可以多次出现,它的每一次出现表在活动图中,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存期的不同时间点。明该对象正处于对象生存期的不同时间点。 活动图中的基本概念活动图中的基本概念带对象流的活动图带对象流的活动图活动图与状态图的区别:活动图与状态图的区别:活动图着重表现从一个活动到另一个活动的控制流。活动图着重表现从一个活动到另一个活动的控制流。状态图着重描述从对象的一个状态到另一个状态的流程。状态图着重描述从对象的一个状态到另一个状态的流程。 活动图与流程图的

24、区别:活动图与流程图的区别:活动图能够表示并发活动的情形,而流程图一般用来表活动图能够表示并发活动的情形,而流程图一般用来表示串行过程。示串行过程。活动图与状态图、流程图的区别活动图与状态图、流程图的区别活动图的用途活动图的用途活动图可用于描述具体的工作流程或计算过程活动图可用于描述具体的工作流程或计算过程用例分析时,涉及多个用例的流程描述用例分析时,涉及多个用例的流程描述活动图功能包含了流程图活动图功能包含了流程图多个用例活动图的组合多个用例活动图的组合组合的活动图可以显示跨越多个用例的行为,可以显组合的活动图可以显示跨越多个用例的行为,可以显示相互联系的行为的整体。示相互联系的行为的整体。

25、组合的活动图可以有多个起点,表示订货系统可以对组合的活动图可以有多个起点,表示订货系统可以对多个外部事件做出不同的反应。多个外部事件做出不同的反应。多个用例活动图的组合多个用例活动图的组合一个活动可以分为若干个子活动,这些子活动本身可一个活动可以分为若干个子活动,这些子活动本身可以组成一个活动图。以组成一个活动图。一个不含内嵌活动的活动称之为简单活动;一个嵌套一个不含内嵌活动的活动称之为简单活动;一个嵌套了若干活动的活动称之为组合活动,组合活动有自己了若干活动的活动称之为组合活动,组合活动有自己的名字和相应的子活动图。的名字和相应的子活动图。 子活动图中必须提供一个起始点,同时,当高层活动子活

26、动图中必须提供一个起始点,同时,当高层活动输出很多触发事件时,应该画同样个数的结束点。输出很多触发事件时,应该画同样个数的结束点。分解活动分解活动绘制活动图绘制活动图“活动图活动图” 比较直观易懂;与传统的流程图十分的相近,比较直观易懂;与传统的流程图十分的相近,只要能够读懂活动图,就不难画出活动图只要能够读懂活动图,就不难画出活动图绘制时首先决定是否采用泳道:主要根据活动图中是否绘制时首先决定是否采用泳道:主要根据活动图中是否要体现出活动的不同实施者要体现出活动的不同实施者然后尽量使用分支、分岔和汇合等基本的建模元素来描然后尽量使用分支、分岔和汇合等基本的建模元素来描述活动控制流程述活动控制

27、流程如果需要,加入对象流以及对象的状态变化如果需要,加入对象流以及对象的状态变化活动图的建模关键是表示出控制流,其它的建模元素都活动图的建模关键是表示出控制流,其它的建模元素都是围绕这一宗旨所进行的补充是围绕这一宗旨所进行的补充对于以下情况可以使用活动图对于以下情况可以使用活动图对用例进行分析对用例进行分析分析多个用例的工作流分析多个用例的工作流处理多线程处理多线程对于下列情况一般不使用活动图对于下列情况一般不使用活动图显示对象间的合作显示对象间的合作显示对象在其生命周期内的运转情况显示对象在其生命周期内的运转情况小结小结“ “检查合同检查合同” ”、“ “核对付款单核对付款单” ”并并“ “

28、发放出库单发放出库单” ”的活动图的活动图图总结(图总结(1 1)活动图和状态图非常类似。它有与状态图相同活动图和状态图非常类似。它有与状态图相同的开始点和结束点,活动图中的状态称为动作的开始点和结束点,活动图中的状态称为动作状态,由上下两条平行线段和两侧圆弧构成的状态,由上下两条平行线段和两侧圆弧构成的图框表示。图框表示。框内标示动作状态名和描述动作的语句,动作框内标示动作状态名和描述动作的语句,动作状态之间的迁移用箭头表示,迁移上可以附加状态之间的迁移用箭头表示,迁移上可以附加条件、发送子句和动作表达式。条件、发送子句和动作表达式。活动图是状态图的变形,它根据对象状态的变活动图是状态图的变

29、形,它根据对象状态的变化捕获动作(所完成的工作和活动)和它们的化捕获动作(所完成的工作和活动)和它们的结果,表示各个动作及其之间的关系。结果,表示各个动作及其之间的关系。图总结(图总结(2 2)与状态图不同的是,活动图中动作状态之间的与状态图不同的是,活动图中动作状态之间的迁移不是靠事件触发,当动作状态中的活动完迁移不是靠事件触发,当动作状态中的活动完成时迁移就被触发。成时迁移就被触发。在活动图中,事件只能附加到开始点到第一个在活动图中,事件只能附加到开始点到第一个动作之间的迁移。在活动图中,还可画条件判动作之间的迁移。在活动图中,还可画条件判定符号(菱形符号)。条件判定符号可以有两定符号(菱

30、形符号)。条件判定符号可以有两个或两个以上携带条件的输出迁移,当其中的个或两个以上携带条件的输出迁移,当其中的某个条件为真时,该迁移被触发。某个条件为真时,该迁移被触发。此外,活动图中还使用了此外,活动图中还使用了“泳道泳道”的概念。的概念。动态建模中四种图的运用(动态建模中四种图的运用(1 1)不要对系统中的每个类都画状态图。不要对系统中的每个类都画状态图。尽管这样做很完美,但太浪费精力尽管这样做很完美,但太浪费精力其实你可能只关心某些类的行为。其实你可能只关心某些类的行为。正确的做法是:为帮助理解类而画它的状态图。正确的做法是:为帮助理解类而画它的状态图。状态图描述跨越多个用例的单个对象的

31、行为,而不状态图描述跨越多个用例的单个对象的行为,而不适合描述多个对象间的行为合作。适合描述多个对象间的行为合作。为此,常将状态图与其它技术(如顺序图、合为此,常将状态图与其它技术(如顺序图、合作图和活动图)组合使用。作图和活动图)组合使用。动态建模中四种图的运用(动态建模中四种图的运用(2 2)顺序图和合作图适合描述单个用例中几个对象顺序图和合作图适合描述单个用例中几个对象的行为。的行为。顺序图突出对象间交互的顺序顺序图突出对象间交互的顺序合作图的布局方法能更清楚地表示出对象之间合作图的布局方法能更清楚地表示出对象之间静态的连接关系静态的连接关系当行为较为简单时,顺序图和合作图是最好的当行为较为简单时,顺序图和合作图是最好的选择。选择。但当行为比变复杂时但当行为比变复杂时,这两个图将失去其清晰度。这两个图将失去其清晰度。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号