状态图和活动图

合集下载

时序图、活动图、状态图、协作图的区别

时序图、活动图、状态图、协作图的区别

时序图、活动图、状态图、协作图的区别时序图时序图用于描述对象之间的传递消息的时间顺序, 即用例中的行为顺序.当执行一个用例时, 时序图中的每条消息对应了一个类操作或者引起转换的触发事件.在 UML 中, 时序图表示为一个二维的关系图, 其中, 纵轴是时间轴, 时间延竖线向下延伸. 横轴代表在协作中各个独立的对象. 当对象存在时, 生命线用一条虚线表示, 消息用从一个对象的生命线到另一个对象的生命线的箭头表示. 箭头以时间的顺序在图中上下排列.ATM 用户成功登陆的时序图时序图中的基本概念对象: 时序图中对象使用矩形表示, 并且对象名称下有下划线. 将对象置于时序图的顶部说明在交互开始时对象就已经存在了. 如果对象的位置不在顶部, 表示对象是在交互的过程中被创建的.生命线: 生命线是一条垂直的虚线. 表示时序图中的对象在一段生命周期内存在. 每个对象底部中心的位置都带有生命线.消息: 两个对象之间的单路通信. 从发送方指向接收方. 在时序图中很少使用返回消息.激活: 时序图可以描述对象的激活和钝化. 激活表示该对象被占用以完成某个任务. 钝化指对象处于空闲状态, 等待消息. 在 UML 中, 对象激活时将对象的生命线拓宽为矩形来表示的. 矩形称为计划条或控制期. 对象就是在激活条的顶部被激活的. 对象在完成自己的工作后被钝化.对象的创建和销毁: 在时序图中, 对象的默认位置是在图的顶部. 这说明对象在交互开始之前就已经存在了. 如果对象是在交互过程中创建的, 那么就应该将对象放到中间部分. 如果要撤销一个对象, 在其生命线终止点处放置 “ X” 符号.练习:孙中山的……活动图在 UML 中, 活动图本质上就是流程图. 它用于描述系统的活动, 判定点和分支等.活动图中的基本概念动作状态: 原子的, 不可中断的动作, 并在此动作完成之后向另一个动作转变. 在 UML 中动作状态用圆角矩形 表示, 动作状态所表示的动作写在圆角矩形内部.分支与合并: 分支在软件系统中很常见. 一般用于表示对象类所具有的条件行为. 用一个布尔型表达式的真假来判定动作的流向. 条件行为用分支和合并表达.在活动图中, 分支用空心小菱形 表示. 分支包括一个入转换和两个带条件的出转换, 出转换的条件应该是互斥的, 须保证只有一条出转换能够被触发. 合并包含两个带条件的入转换和一个出转换.状态图状态图: 通过建立对象的生存周期模型来描述对象随时间变化的动态行为.状态图中的基本概念状态: 用圆角矩形表示. 状态名称表示状态的名字, 通常用字符串表示. 一个状态的名称在状态图所在的上下文中应该是唯一的.转换: 用带箭头的直线表示. 一端连着源状态, 一端连着目标状态.初始状态: 每个状态图都有一个初始状态. 此状态代表状态图的起始位置. 初始状态只能作为转换的源, 不能作为转换的目标, 并且在状态图中只能有一个. 初始状态用一个实心圆表示.终止状态: 模型元素的最后状态, 是一个状态图的终止点. 终止状态在一个状态图中可以有多个.协作图协作图(也叫合作图)是一种交互图.时序图主要侧重于对象间消息传递在时间上的先后关系, 而协作图表达对象间的交互过程及对象间的关联关系。

UML中的活动图和状态图的区别与实际应用案例解析

UML中的活动图和状态图的区别与实际应用案例解析

UML中的活动图和状态图的区别与实际应用案例解析UML(Unified Modeling Language)是一种用于软件系统建模的标准化语言,它提供了一套丰富的图形符号和规范,帮助开发人员更好地理解和设计软件系统。

在UML中,活动图和状态图是两种常用的图形表示方式,用于描述系统中的活动流程和对象状态。

本文将探讨这两种图形的区别,并通过实际应用案例来解析它们的具体应用。

活动图是一种用于描述系统中活动流程的图形表示方式。

它主要由活动(Action)、控制流(Control Flow)和决策节点(Decision Node)等元素组成。

活动图可以清晰地展示系统中的各种活动以及它们之间的关系和顺序。

活动图通常用于描述业务流程、系统交互和软件系统中的算法等。

例如,在一个在线购物系统中,我们可以使用活动图来描述用户选择商品、添加到购物车、填写订单信息、确认支付等流程。

通过活动图,我们可以更好地理解和设计系统中的各个步骤,从而提高系统的可靠性和可维护性。

与活动图相比,状态图主要用于描述系统中对象的状态和状态之间的转换。

状态图由状态(State)、转移(Transition)和事件(Event)等元素组成。

状态图可以清晰地展示对象在不同状态之间的转换和触发条件。

状态图通常用于描述系统中的状态机、对象的生命周期和系统中的并发操作等。

例如,在一个自动售货机系统中,我们可以使用状态图来描述售货机的工作状态,如待机状态、售货状态和故障状态等。

通过状态图,我们可以更好地理解和设计系统中对象的状态变化,从而提高系统的可靠性和性能。

活动图和状态图在应用上有一些区别。

活动图主要用于描述系统中的活动流程,强调活动之间的顺序和关系。

它更适合于描述系统中的业务流程和交互流程等。

而状态图主要用于描述系统中对象的状态和状态之间的转换,强调对象状态的变化和触发条件。

它更适合于描述系统中的状态机和对象的行为。

下面通过一个实际应用案例来进一步解析活动图和状态图的具体应用。

6.状态机图(状态+活动)

6.状态机图(状态+活动)

课堂练习(电梯系统的状态图)
带有复杂转换的状态图
补充说明(状态图)
适用情况:
适用于描述跨越多个用例的单个对象行为 不适合描述多个对象之间的行为协作 故需与其他技术(类图、对象图)结合使用
注意事项:
不要花费大量时间和精力为系统中的每个类都 画对应的状态图 开发人员只关心关键类的行为,只需为这些类 建立状态图,帮助理解所研究的问题
方法二:
先对活动进行全局的分析 再将活动分配各具体的对象
建议:
两种方法各有利弊 根据个人习惯和具体情况而定
分类(1.简单活动图)
分类(1.简单活动图)
分类(2.标识泳道的活动图)
泳道(SwimLane):用于有效 地标识每个活动的实施者。 表示方法:
用一条垂直的线将活动分开 每个泳道都有一个唯一的名称 每个活动节点、分支必须只属 于一个泳道;而转换,分叉与 汇合是可以跨泳道的。
状态机图(State machine Diagram)
状态(state):
定义对象在其生命周期中的一种条件或状况 比如:满足某些条件、执行某些活动或等待某些事件 例子:灯的开闭、人的梦醒、学生的课上与课下
理解
状态的存在:对象在任何时刻都会处于某种状态之中 状态的转移:事件使对象从一个状态转向另一个状态 当面对所检测到的事件或所接收到的消息时,对象所 处的状态不同,做出的反应也不同
细化状态内的活动与转换
状态图(航班预订3)
使用复合状态
课堂练习
绘制电脑工作时的状态转换图
课堂练习
绘制手机工作时的状态转换图
课堂练习(电梯系统的状态图)
电梯开始处于空闲状态(idle),当有人按下按钮要求使用电梯时 (事件is required发生),电梯进入运行状态(run)。如果电梯的 当前楼层比想要的楼层高时(监护条件[currentFloor>desiredFloor] 成立),电梯进入下降状态(moving down);反之,如果电梯的当 前楼层比想要的楼层低时(监护条件[currentFloor<desiredFloor] 成立),电梯进入上升状态(moving up);如果电梯的当前楼层与 想要的楼层相同时(监护条件[currentFloor=desiredFloor]成立), 电梯门打开(door open)。在电梯上升或下降期间,每经过一个楼 层就判断监护条件[currentFloor=desiredFloor]是否成立,若不成 立,继续移动,若成立,就进入停止状态(stop),15秒后,电梯门 自动打开(door open),2分钟后,电梯门自动关上(door close), 如果有更多的电梯使用要求,进入运行状态(run),反之,则进入 空闲状态(idle)。

UML状态图和活动图

UML状态图和活动图

状态图的建模方法(续)
因此,Grade对象的状态图具有如下描述保存功 能的开始状态和结束状态:
Information Entered 开始状态。 Destroy 结束状态。
状态图的建模方法(续)
3.确定与每一个实体相关的事件
事件用来最终完成实体的功能。要想确定实体的事件,需要 知道事件的任务。对于Grade对象,它的任务是保存分数。进一 步了解事件的任务之后,就可以确定Grade对象的事件包括接受 数据、成功地保存数据和不成功地保存数据。
活动图的符号
如果一个处理在其他处理之前到达了联结,它将会等待, 直到所有的处理都准备好之后才会向联结传递控制权。
活动图的符号
左例演示了分叉中的一 个处理时间长于另一个的 情况。当然,这完全是由 每一个处理中的活动数假 定的。由于我们不知道每 一个活动有多长,因此不 能保证哪一个首先完成。 为此,我们在让用户访问 应用程序之前插入了一个 联结,以便确保两个独立 的处理彼此连接在一起。
在确定活动名称时应该恰当地命名,选择准确描述所发生 动作的几个词。例如,Save File或者 Create New Document 就是比较恰当的活动名称,而Run或者Update 对读者而言是不 完整的名称。
活动图的符号
2. 操作
可以用操作在活动中增加更多详细的步骤。操作是活动中执 行的小步骤。在下列情况下发生: • 进入活动时发生的操作,标有entry字样。 • 活动进行时发生的操作,直到离开活动,标有do字样。 • 离开活动时发生的操作,标有exit字样。 • 特定事件发生时的操作,标有event字样和事件名。
状态图的动作和事件
条件用来描述状态转移的前提。事件用来指示什么触发了转 移,动作用来说明当转移发生时会产生什么情况。事件、条件 和动作是转移的三个选项,其定义格式见下图所示。

第6章 状态机图

第6章 状态机图

14
例1:子状态之间“or”关系的例子。
例2:子状态之间“and”关系的例子。
15
History State(历史状态)


History State: A pseudostate whose activation restores the previously active state within a composite state. 使用历史状态,可以记住从组合状态中退出时 所处的子状态,当再次进入组合状态时,可直 接进入到这个子状态,而不是再次从组合状态 的初态开始。
7
状态(State)


定义:A state is a condition or situation during the life of an object during which it satisfies some condition, performs some activity, or waits for some event. 一个状态是指在对象的生命期中的一个条件或 状况,在此期间对象将满足某些条件、执行某 些活动或等待某些事件。
22


说明: 在UML中,事件分为四类: (1) Call event (调用事件) (2) Change event (变化事件) (3) Time event (时间事件) (4) Signal event (信号事件)
23
(1) Call event: The event of receiving a call for an operation that is implemented by actions on state machine transitions. Call event的语法格式如下: 事件名 ( [逗号分隔的参数列表] ) 其中参数列表中的参数格式为: 参数名:类型 例:

解析uml活动图和状态图的作用和区别

解析uml活动图和状态图的作用和区别

本文和大家重点讨论一下UML活动图和状态图的概念,这两种图都有各自的特点和作用,那么他们之间有什么区别和联系呢,请看本文详细介绍。

UML活动图和状态图一、UML活动图:◆流程图常被用来建立算法模型◆UML活动图与流程图类似,不同在于它支持并行活动.◆缺点:不能清楚的表示二、作用:1、描述一个操作的执行过程中所完成的工作或者动作2、描述对象内部的工作3、描述用例的执行4、处理多线程5、显示如何执行一组相关的动作,以及这些动作如何影响周围对象三、以下情况不用UML活动图1、显示对象之间的合作2、显示对象在其生命周期内的运转情况。

这两点是通过序列图和协作图完成的。

四、UML活动图的基本要素:◆活动状态◆活动状态之间的转移(箭头)◆判断(决策点)◆保证条件◆同步条:活动之间的同步◆起点和终点--起点有且只有一个,终点可以有n个。

五、泳道:用于对UML活动图中的活动进行分组,用于描述对象之间的合作关系。

----所谓泳道技术,就是将活动用线分成一些纵向区域,这些纵向区域称为泳道。

UML状态图一、状态图:◆描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转换。

例如呼叫中心系统。

◆状态图符--状态:矩形(四角圆弧)--转移--起点--终点1、状态机:◆一种行为:描述了一个对象或一个交互在生命周期内响应事件所经历的状态序列。

◆单个类或者一组类之间协作的行为可以用状态机来描述◆一个状态机涉及到一些其他元素,包括状态、转换、事件2、状态:在对象的生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件活状况。

1)名称2)进入协作和退出动作3)内部转换4)子状态5)延迟事件3、转换:两个状态之间的一种关系,表示对象将在第一个状态中执行一定的动作并在某个特定事件发生而某个特定条件满足时进入第二个状态。

1)源状态2)事件触发3)监护条件4)动作5)目标状态例子:电话机状态图二、UML活动图与状态图的区别:状态:行为的结果活动:行为的动作在uml中图符不一样。

第五课时:状态图、活动图和协助图

第五课时:状态图、活动图和协助图
• 活动是某件事情正在进行的状态。 • 活动在状态机中表现为一个由一系列动作组成的非原 子的执行过程。 • 活动图是一种描述系统行为的图,它用于展现参与行 为的类所进行的各种活动的顺序关系。 • 活动图与状态图都是状态机的表现形式。 • 活动图与状态图的区别: ① 活动图着重表现从一个活动到另一个活动的控制流, 是内部处理驱动的流程。 ② 状态图着重描述从一个状态到另一个状态的流程,主 要有外部事件的参与。
活动图(activity diagram)
活动图(activity diagram) 泳道
• 泳道将活动图中的活动化分为若干组,并把每一组指 定给负责这组活动的业务组织即对象。 • 泳道区分了负责活动的对象,明确地表示了哪些活动 是由哪些对象进行的。 • 每个活动只能明确地属于一个泳道。 • 泳道用垂直实线绘出,垂直线分隔的区域就是泳道。 在泳道上方可以给出泳道的名字或对象(对象类)的 名字,该对象(对象类)负责泳道内的全部活动。 • 泳道没有顺序,不同泳道中的活动既可以顺序进行也 可以并发进行,动作流和对象流允许穿越分隔线。
状态图(state diagram) 入口动作和出口动作
• 入口动作和出口动作表示进入或退出这个状态所要执行的 动作。 • 入口动作用“entry/要执行的动作”表达,而出口动作用 “exit/要执行的动作”表达。
状态图(state diagram) 简单状态
• 简单状态是指不包含其他状态的状态。 • 简单状态没有子结构,但它可以具有内部转换、入口动作 和出口动作等。
线表示,箭头的方向指向转入的方向。
活动图(activity diagram)
分支与合并
• • • • 分支一般用于表示对象类所具有的条件行为。 条件行为用分支和合并表达。 在活动图中分支与合并用空心小菱形表示。 一个分支有一个入转换和两个带条件的出转换,出转换的 条件应当是互斥的,这样可以保证只有一条出转换能够被 触发。 • 一个合并有两个带条件的入转换和一个出转换,合并表示 从对应的分支开始的条件行为的结束。

第8章状态图和活动图课件

第8章状态图和活动图课件
▪ 终止状态只能作为转换的目标,而不能作 为转换的源。
▪ 终止状态在一个状态图中可以有多个。
初态和终态
▪ 一个状态图只能有一个初态,但可以有多 个终态或没有终态
组合状态
Idle 维护
插卡 取消
Maintenance
Active
Validating [继续]
Selecting
entry/ 读卡 exit/弹出卡
➢ 有些对象出现在很多顺序图中,在每个顺序图中都有 很多的箭头(消息)指向它,每条消息都是对该对象 发出的命令,这些命令可以引起对象的变化,即出现 在很多交互中并且是交互的目标的对象应该用状态图 来表示
➢ 例如,剧院的showSheat对象,用于显示剧院的座位 列表,该对象被创建的时机各种各样,如演出被安排 的时候、被客户选中的时候、用户取消座位时等。每 个时机创建该对象的规则都不同。
动作
contact
Tracking
Engaging
8.2.4 转换
警戒条件
➢ 警戒条件是触发转换必须满足的条件,它是一 个布尔表达式。
➢ 从一个状态引出的多个转换可以有同样的触发 器事件,但每个转换必须有不同的警戒条件。
转换组成: ① 源状态 ② 目标状态 ③ 触发事件 ④ 警戒条件 ⑤ 动作 转换种类: ① 外部转换 ② 内部转换 ③ 完成转换 ④ 复合转换
8.5 活动图的基本概念
活动图的组成元素:
① 活动(Activity) ② 动作流(Action Flow) ③ 分支(Branch)与合并(Merge) ④ 分叉(Fork)和汇合(Join) ⑤ 泳道(Swimlane) ⑥ 对象流(Object Flow)
8.1 什么是状态图
状态图主要用于描述一个对象在其生存期 间的动态行为,表现一个对象所经历的状 态序列,引起状态转移的事件,以及因状 态转移而伴随的动作。

uml建模-状态图和活动图

uml建模-状态图和活动图
l 状态图表示某个类所处的不同状态和该类的状态转换信息。 虽然每个类都有状态,但在系统活动期间仅对具有三个或 更多潜在状态的类才画一个状态图,进行状态图描述。用 状态图对一个对象按事件排序的方法建模,状态图是强调 从状态到状态的控制流的状态机的简单表示。
l 使用状态图的最常见的是对反应型对象、尤其是对类、 用例或整个系统的实例的行为建模。反应型对象是指 这个对象可能处于的稳定状态、从一个状态到另一个 状态之间的转换所需的触发事件,以及每个状态改变 时发生的动作。反应型对象具有如下的特点:
活动图的符号集与状态图中使用的符号集类似。像状态图 一样,活动图也从一个连接到初始活动的实心圆开始。 活动是通过一个圆角矩形(活动的名称包含在其内)来 表示的。活动可以通过转换线段连接到其他活动,或者 连接到判断点,这些判断点连接到由判断点的条件所保 护的不同活动。结束过程的活动连接到一个终止点(就 像在状态图中一样)。活动图中的基本要素包括状态、 转移、分支、分叉和汇合、泳道、对象流等。
l ⑹把动作附加到这些转换上,并且附加到这些状态上; l ⑺考虑通过使用子状态、分支、汇合和历史状态,来简化状态图; l ⑻核实所有的状态都是在事件的某种组合下可达的; l ⑼核实不存在死角状态,即不存在那种不能转换出来的状态; l ⑽通过手工或通过使用工具跟踪状态机,核对所期望的事件序列以及它
们的响应。
::new book 借书
::availห้องสมุดไป่ตู้ble 还书
::delete
一个图书对象从它的起始点 开始,首先是“新书”状态
(new book),然后是“可 以借阅”(available)的状 ::borrowed 态,如果有读者将书借走, 则该书的状态为“已借出”
状态(borrowed),如果图 书被归还图书馆,图书的状 态又变为“可以借阅”状态 。图书馆如果放弃该图书对 象的收藏,则图书对象处于

第7章 状态图和活动图

第7章 状态图和活动图

图7.1 图书馆书籍的状态图
一个图书对象从它的起始点 开始,首先是“新书”状态 (new book),然后是“可 以借阅”(available)的状 态,如果有读者将书借走, 则该书的状态为“已借出” 状态(borrowed),如果图 书被归还图书馆,图书的状 态又变为“可以借阅”状态 。图书馆如果放弃该图书对 象的收藏,则图书对象处于 “删除”状态(delete),最 后到达“终止”状态。
7.2.1 活动图概述
在用例模型中,可以利用文本来描述用例的业务流程, 但如果业务流程较为复杂的话,则可能会难以阅读和 理解,这时需要用更加容易理解的方式(图形)来描 述业务过程的工作流,在UML中将这类描述活动流程 的图形称为活动图(Activity Diagram)。 活动图被设计用于简化描述一个过程或者操作的工作步 骤。活动用圆角矩形表示,接近椭圆。一个活动中的 处理一旦完成,则自动引起下一个活动的发生。箭头 表示从一个活动转移到下一个活动。和状态图类似, 活动图中的起点用一个实心圆表示,终点用一个实心 圆外加一个圆圈表示。在一个活动图中,只有一个起 始状态,可以有零个或多个终止状态。
第7章 状态图和活动图
7.1状态图
状态图,用于UML中建立动态模型,主要描述系
统随时间变化的行为,这些行为是用从静态视图中抽 取的系统的瞬间值的变化来描述的。在对象的生命期 建模中,状态图显示了一个状态机,展示的是单个对 象内从状态到状态的控制流。状态图通过对类的对象
的生存周期建立模型来描述对象随时间变化的动态行
7.2.7分叉和汇合
对象在运行时可能会存在两个或多个并发运行的控制流, 为了对并发的控制流建模,UML中引入了分叉与汇合的概 念。分叉用于将动作流分为两个或多个并发运行的分支, 而汇合则用于同步这些并发分支,以达到共同完成一项事 务的目的。 在UML中使用分叉和汇合表示并行发生的事件流。分叉表 示把一个单独的控制流分成两个或多个并发的控制流。一 个分叉可以有一个进入转移和两个或多个输出转移,每一 个转移表示一个独立的控制流。 汇合表示两个或多个并发 控制流的同步发生,一个汇合可以有两个或多个进入转移 和一个输出转移。分叉和汇合应该是平衡的。分叉和汇合 在图形上都使用同步条来表示,同步条通常用一条粗的水 平线表示。

状态图与活动图

状态图与活动图

UML建模基础——状态图、活动图东软人才实训中心3 Sept. 2008©Neusoft Confidential第五章:状态图、活动图学时:1学时教学方法:讲授ppt+上机练习+案例分析目标:本章旨在向学员简要介绍状态图和活动图,通过本课的学习,学员应该掌握如下知识:1)了解状态图和活动图状态图•状态图(Statechart Diagram)–描述特定对象的所有可能状态,以及由各种事件触发的状态迁移。

如一张发票可以是已付状态和未付状态。

–状态图中每一状态转移事件都与一个操作关联状态图(续)•用途–对于状态相关的设计类,可以画状态图来增加对类的理解–对单个对象在他生命周期中的行为建模,描述他的行为和状态变化–主要用于设计阶段的建模–不需要对每个类都建立状态图。

只有有明显行为变化的类才需要相关元素•主要元素–初始状态(Start State)–终止状态(End State)–状态(State)–状态转换(State Transition)–分支/判定(Decision)相关元素•初始状态(Start State)–对象创建时所进入的起始状态–必须有,且只能有一个初始状态•终止状态(End State)–表示对象生命周期的终结–可选的,且可能有多个终止状态相关概念•状态(State)–在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况。

–对象在某一状态保持有限的时间。

–状态包含的元素:•名称•进入状态时执行的动作entry/action•处于状态中时持续执行的动作do/action•发生某事件后执行的动作event/event name/action•退出状态时执行的动作exit/action相关概念•状态(图例)相关概念•状态转换(State Transition)–两个状态之间的一种关系。

表示对象将在第一个状态中执行一定的动作,并在某个特定事件发生而某个特定的条件满足时进入第二个状态。

状态图和活动图

状态图和活动图
活动图工具支持 正向:若表示工作流程,产生代码困难;若表示 具体算法产生代码容易。 逆向:对类的操作是可能的,从系统得到工作流 程困难。 Rose2003不支持。
34
制作 李文杰
8. 状态图和活动图的比较
状态图和活动图都是对系统动态行为建模,有共 同点又有区别。 1)两者描述的重点不同。状态图描述的是对象的 状态和状态之间的转移,活动图描述的是活动到活动 的控制流。 2)两者使用的场合不同。状态图用于显示一个对 象在其生命周期内的行为,活动图用于描述用例、涉 及多个用例的工作流程和多线程应用。 如果需要描述多个对象间的交互,应该用交互图 (顺序图或协作图)。
一般状态之间的转移是由事件触发的,因此在转移上应标出 事件;否则,表示在源状态的内部活动执行完毕后自动触发 转移。
15
制作 李文杰
2. 状态图中的基本概念
转移 转移格式:[event-signature][[guard-condition]][/ action] 事件特征标记格式:event-name(comma-separated-parameter-list)
put(c)[ c!='<' ] / return false Waiting put(c)[ c=='<' ]
状态图工具支持 正向:根据状态机理论来生成代码 (参考形式语言与自动机资料) 逆向:困难,手工 Rose2003不支持,Poseidon支持。
put( c )[ c!='>' ] / token.append(c);return false
[ temperature> =100 ]
汽体(蒸汽)
4
制作 李文杰
1. 状态图

第9章-状态图和活动图

第9章-状态图和活动图

9.2 状态图元素
子状态(substate) 嵌套在另外一个状态中的状态 空调:停止、运行状态,运行状态中可 嵌套制 冷、制热、除湿等子状态
延迟事件(deferred event) 是指在该状态下暂不处理,但将推 迟到该对象的另一个状态下排队处 理的事件
9.2 状态图元素
名字域
当当发将到时当时s生延别处事,当用转,e时迟的l件于电自f入做灯T作,响状发e该源备该开闪s对 应 态生t关电状灯状事烁象,中时闭源态动态件5,
9.2 状态图元素
• 终态 end state •表示最后的或者终端状态; •终态数目可以不确定,也可以没有。 •电扇 坏了/没坏,但拆下闲置
9.2 状态图元素
9.2.2 状态 对象的状态始终是由其属性和关联决定 状态图中的状态表示的是给定类对象的 一组属性值 状态图中状态用圆角矩形表示
状态名称
在状态内出 现内的部活转动换,
不能附加到
转换上。
9.2 状态图元素
9.2.3 事件
“事件”指发生在时间和空间某点上的 且能够引起某些动作执行的事情 事件可以是内部事件也可以是外部事件 四类事件: ➢调用事件 ➢信号事件 ➢改变事件 ➢时间事件
9.2 状态图元素
信号signer事件 •所谓信号,是指由一个对象异步地发送,并由另外一 个对象接收的一个已命名的对象。 •信号事件表示对象接收到某个信号。 •信号间可以有泛化,信号可以是其他信号的子信号, 它们继承父信号的属性,并可以触发包含信号类型的 转换。
9.2 状态图元素
9.2 状态图元素
9.2 状态图元素
外部转换,自转 换也是外部转换
外部转换
9.2 状态图元素
9.2.5 复合状态和子状态
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[ Condition5 ] / Action5
NewStat e4
• 非链式分支:
NewStat e6
[ Condition6 ] / Action6 NewStat e5
Event1[ Condition1&Condition3 ] / Action1,Action3
NewStat e7 NewStat e8 NewStat e9 NewStat e::borrowed
还书
::delete
7.1.1 状态图的组成
(1) 状态图中的事物
• 状态 state
• 转换/迁移 transition
接到订单
记账
7.1.2 状态(state)
• 什么是状态? • 状态是指在对象的生命期中满足某些条件、执行某些活动或 等待某些事件时的一个条件或状况。 • 下面一些例子形象地说明了对象和状态。 (1)支票(对象)已付(状态)。 (2)汽车(对象)已启动(状态)。 (3)小王(对象)睡着了(状态)。 (4)小红(对象)未婚(状态)。 • 对象在任何时候都会处于某种状态中,所有对象都有 状态 • 对象所处的状态决定了它如何响应所检测到的事件或 所接收的消息。 清醒-(被批评)-生气 醉酒- (被批评)-无反应 • 通常,事件使对象从一个状态转向另一个状态(即状 态的转换)
子状态(substate)
--嵌套在另外一个状态中的状态 例如:空调:停止、运行状态,运行状态中可 嵌套制冷、制热、除湿等子状态
2. 中间状态举例
名字域 当转入该状态时,做 Lighting do活动是只在状态内 转换域,可选 开灯动作 当处于该状态时,灯 内部转换 出现的活动,不能附 闪烁 5次 当电源关闭事件发生 当 selfTest 事件发生时,对 entry/ turnOn 加到转换上。 时,用自备电源 当转出该状态时,做 象将延迟响应,到别的状 do/ blinkFivetimes 关灯动作 defer这个 态中再处理,用 event poweroff/ powerSupplySelf 特定动作表示延迟 exit/ turnOff event selfTest/ defer
外部转换
名字域 当转入该状态时,做 Lighting do活动是只在状态内 转换域,可选 开灯动作 当处于该状态时,灯 内部转换 出现的活动,不能附 闪烁 5次 当电源关闭事件发生 当 selfTest 事件发生时,对 entry/ turnOn 加到转换上。 时,用自备电源 当转出该状态时,做 象将延迟响应,到别的状 do/ blinkFivetimes 关灯动作 defer这个 态中再处理,用 event poweroff/ powerSupplySelf 特定动作表示延迟 exit/ turnOff event selfTest/ defer
顺序子状态图----IC卡电话的使用
• 顺序子状态与并发子状态的区别在于后者在同一 层次给出两个或多个顺序子状态,对象处于同一 层次中来自每个并发子状态的一个时序状态中。
4. 历史状态(History state)
• 当离开一个组合状态重新进入此状态时,不希望从 它的初始状态开始执行,而是希望直接进入上次离 开组合状态时的最后一个子状态,这种情况下就要 用到历史状态。 • 历史状态代表上次离开组合状态时的最后一个活动 子状态,它用一个包含字母“H”的小圆圈表示。 • 每当转换到组合状态的历史状态时,对象便恢复到 上次离开该组合状态时的最后一个活动子状态,并 执行入口动作。
第7章 状态图和活动图
7.1 概述
• 状态机Statechart
– 用于描述一个对象在其生存期间的动态行为, 表现对象响应事件所经历的状态序列以及伴随 的动作。 – 状态机是用于描述状态与状态转换的。
状态图(Statechart Diagram)
– 状态图主要用于描述一个对象在其生存期间的 动态行为,表现一个对象所经历的状态序列, 引起状态转移的事件(event),以及因状态转移 而伴随的动作(action)。
语法:事件(参数)[监护条件]/动作
内部转换和自转换(完成转换)不同:
① 自转换是离开本状态后重新进入该状态, 它会激发状态的入口动作和出口动作的执 行。 ② 内部转换自始至终都不离开本状态,所以 没有出口或入口事件,也就不执行入口和 出口动作。
4. 复合转换
• 复合转换由简单转换组成,这些简单转换 通过分支判定、分叉或接合组合在一起。 • 除了两个分支的判定,还有多条件的分支 判定。 • 多条件的分支判定有分为链式的和非链式 的分支。
Somebody go into Somebody go out Unused The train go running
Somebody go into Used
语法:事件(参数)[监护条件]/动作
The train stop
Maintaining
2. 自转换
• 当事件发生时,导致状态中断
,使对象退出当前状态,然后 又重新回到该状态。 • 自转换在作用时首先将当前状 态下的活动终止,然后执行该 状态的出口动作,接着执行引 起转移事件的相关动作,紧接 着返回该状态,开始执行该状 态的入口动作和其他操作。
– 是由一种状态到另一种状态的迁移。这种转移 由被建模实体内部事件或外部事件触发。对一 个类来说,转移通常是调用了一个可以引起状 态发生重要变化的操作的结果。
7.1.4 转换(Transition)
• 转换的五要素 : – 源状态 – 目标状态 – 触发事件 • 如果箭头上不带任何事件名,叫无触发转移(完成转移) ,当与源状态相关的活动完成时就会自动触发。 在用电磁炉烧开水的过程中,水的状态由 – 监护条件 源状态“Off”(不沸腾)转换为目标状态的 – 动作 “On”(沸腾)时,水壶中“有水”就是其
3. 组合/嵌套状态
• 含有子状态的状态被称为组合或嵌套状态
去掉运行这个大的状 态行吗? 行,但效果不好
为何不在组合中加初 态、终态? 可以将任一子状态作 初态
隐藏子状态,简化 模型复杂度,增强 清晰性
3. 组合/嵌套状态
• 组合状态可以使用“与”关系分解为并发子状态, 或者通过“或”关系分解为互相排斥的顺序子状态。 • 组合状态的一个入转换代表对其嵌套子状态区域内 的初始状态的入转换。
监护条件,开启电源开关“turnOn”是其触 发事件,进行“烧水”是状态转换的动作。
注意:
• 监护条件:是用方括号括起来的布尔表达 式,它放在事件的后面。 • 如果监护条件和事件放在一起使用,则当 且仅当事件发生且监护条件为真时,转移 发生;如果只有监护条件,只要监护条件 为真就发生转移。
• 从相同的状态出来的、事件相同的几个转 移之间的条件应该时互斥的。
3. 内部转换
• 内部转换有一个源状态但是没有目标状态,它转换后的状 态仍旧是它本身。 • 对事件做出响应,并执行一个特定的动作,但不引起状态 的改变或不引起入口动作或出口动作的执行 • 内部转换的激发规则和外部转换的激发规则相同。 • 如果一个内部转换带有动作,动作也要被执行,但是由于 没有状态改变发生,因此不需要执行入口和出口动作。
• 进入某一状态时执行的动作
– 出口动作(exit)
• 退出某一状态时执行的动作
2. 如果动作与转移 相关,当对象在 不同的状态转移 时,将触发相应 的动作。
转换的种类
1 外部转换 2 内部转换 3 自转换 4 复合转换
1. 外部转换
• 外部转换是一种改变对象状态的转换 ,是最常见的一种转换。 • 对事件做出响应,引起状态转换或自 身转换,同时执行一个特定的动作, 如果离开或进入状态,将引起入口动 作和出口动作的执行 • 外部转换用从源状态到目标状态的箭 头表示。
• 终态 (end state)
– 表示最后的或者终端状态; – 终态数目可以不确定,也可以没有。
2. 中间状态
• 中间状态的组成(除初态终态外,最常见的状态)
– 状态名(name)
• 是可以把该状态和其他状态区分开的字符串;状态也可能 是匿名的,即没有名称。
与状态相关的动作
在一个状态中允许有多个动作。 1.入口动作 (entry action),用来指定进入状态时
Event1[ Condition1&Condition4 ] / Action1,Action4 Event1[ Condition2&Conditon5 ] / Action2,Action5
Event1[ Condition2&Conditon6 ] / Action2,Action6
外部转换,自转 换也是外部转换
7.1.4 转换 --- 动作
• 动作(Action)
动作可以与状态相 关,也可以与转 移相关:
– 可执行的行为。 1. 如果动作与状态 – 不可中断,其执行时间可忽略不计 相关,则对象在 – 当转换被引发时,它对应的动作被执行。它一般是一 进入一个状态时 个简短的处理过程。 将触发此动作, • 两种特殊动作(只要进入或离开该状态一定会执 而不管是从哪个 行该动作) 状态转入这个状 态的。 – 入口动作(entry)
发生的动作。 语法形式: entry/动作名 2.出口动作(exit action),用来指定离开该状态时 发生的动作。 语法形式: exit/动作名
注意:由于入口动作和出口动作是隐式 地激活,因此它们既没有参数也没有守 卫条件。
3.内部转移(internal transition) ---用于标记内部活动,用来指定处于该状态时执行 的动作。不导致状态改变的转换,不会执行 entry和exit动作
3. 组合/嵌套状态
• 两种表示方法
– 顺序子状态
• 如果一个组合状态的子状态对应的对象在其生命期 内的任何时刻都只能处于一个子状态,即多个子状 态之间是互斥的,不能同时存在,这种子状态称为 顺序子状态。
相关文档
最新文档