第10章 状态机图

合集下载

2020年智慧树知道网课《面向对象与UML(山东联盟)》课后章节测试满分答案

2020年智慧树知道网课《面向对象与UML(山东联盟)》课后章节测试满分答案

绪论单元测试1【判断题】(20分)UML是面向对象的软件建模语言,可应用到软件开发全过程。

A.对B.错2【判断题】(20分)面向对象是当今主流的软件开发思想。

()A.对B.错3【多选题】(20分)下列哪些工具可以用来进行UML建模?()A.MicrosoftOfficeVisioB.EnterpriseArchitect(EA)C.RationalRoseD.StarUML4【多选题】(20分)我们要从本课程中学到哪些知识?()A.面向对象的基础知识B.UML软件建模C.面向对象的设计原则D.面向对象编程语言5【多选题】(3分)平时分析问题,总要获取哪些方面的信息?()A.事物之间的关系是什么?B.事物的特征和行为是什么?C.问题中涉及哪些事物?D.事物之间如何协作完成任务?第一章测试1【多选题】(20分)以下对软件建模描述正确的是()A.每个模型可以有多种表达方式,从不同角度来刻画系统。

B.描述同一个系统的多个模型只能相对孤立,不能完全孤立,完全孤立的模型是不完整的C.要正确建模,模型必须准确反映软件系统的真实情况。

D.越庞大复杂的系统,建模的重要性越大。

E.模型是对现实世界的简化,但不能掩盖重要的细节。

2【单选题】(20分)模型的实质是什么?()A.对现实的复杂化B.对现实的简化C.便于交流D.可视化3【单选题】(20分)对软件模型而言,下面说法的是()A.是软件的标准文档B.是软件的中间形态C.是人员交流的媒介D.是软件升级和维护的依据4【单选题】(20分)以下关于模型的说法的是()A.一个好的模型包括那些有广泛影响的主要元素,而忽略那些与给定的抽象水平不相关的次要元素。

B.模型必须是可视化的。

C.通过建模可以帮助人们理解复杂的问题。

D.模型是对现实的简化。

5【单选题】(20分)以下哪一个选项不能当做模型?()A.交通地图B.地球仪C.电路设计图D.灭火器第二章测试1【单选题】(20分)在下面所述中,关于UML的说法不正确的是()A.UML不是过程也不是方法,但允许每一种过程和方法使用它。

第10章 状态机图

第10章 状态机图
外部调用 事件
内部调用 事件
Credit
Close()
Deposit(m)/balan=balan+m
Withdrawal(m)
[balan<m]
动作
Withdrawal(m) [balan>=m]
监护条件
RejectWithdrawal entry/logRejectWithdrawal
AcceptWithdrawal entry/balan=balan-m
• 通常将入口动作(entry/action) • 出口动作(exit/action) • 活动(do/activity) • 内部迁(event/action(argument) • 标识在状态图标的第二栏,如图10-5所示。
• 内部迁移发生时对象的状态不会改变,外部迁移发生时对 象状态要发生改变。
有多个终止状态,它用一个套有一个实心圆的空心圆表示。 如图10-3所示。
图10-3 终止状态的表示
3.状态
• 同一状态有三种表示方法:
• 图10-4是状态的简单表示;
• 图10-5是状态的详细表示;
• 图10-6所示,在圆角矩形的第三栏中,绘制出了子状态 (如果该状态包含了子状态的话)。
状态名称 图10-4 简单表示
10.2.1 状态的表示
• 1.初始状态 • 初始状态代表对象的起始状态,只能作为迁移的源节点,
而不能作为迁移的目标节点。 • 初始状态在一个状态图中只允许有一个,它用一个实心的
圆表示,如图10-2所示。
图10-2 初始状态的表示 Nhomakorabea2.终止状态
• 终止状态是对象的最后状态,是一个状态图的终止点。 • 终止状态只能作为迁移的目标节点。在一个状态图中可以

第十章 状态机图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社

第十章 状态机图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
事件包含一个参数列表(可能为空),用于从事件的产生者向其接 收者传递信息。
对应于触发器转换,没有明确的触发器的转换成为结束转换或无触 发器转换,是在状态的内部活动执行完毕后隐式触发的。
转换——事件
能够在触发器中接收的事件有以下四种:
调用事件:调用事件表示对象接收到一个调用操作的请求。其期待的结 果是事件的接收者触发一个转换并执行相应的操作。
改变事件:改变事件的发生依赖于事件中某个表达式所表达的布尔条件。 改变事件没有参数,要一直等到条件被满足才能发生。
信号事件:信号由一个对象准确地送给另一个或一组对象。发送给一组 对象的信号可能触发每个对象的不同转换。
时间事件:时间事件的发生依赖于事件中的一个时间表达式。比如,可 以让对象进入某状态后经过一段给定的时间或到达某个绝对时间后发生 该事件。
转换——事件
stm 订单类 Unselected
click(posX, posY) [posX==x and posY==y]
Selected
(a)
SingleSelectionMode shiftKeyUp MultiSelectionMode shiftKeyDown (c)
状态机图
状态机 状态机图
状态机图的基本概念
状态机
状态机是一种行为,它说明对象在其生命周期中响应事件所经历的 状态变化序列以及对那些时间的响应。
一般情况下,一个状态机依附于一个类,用来描述这个类的实例的 状态及其转换,和对接收到的事件所做出的响应。此外,状态机也可 以依附于用例、操作、协作等元素上,描述它们的执行过程。
等待支付
[立即支付] 审核完成
[及时支付]
[超出支付时限]
审核失败
状态机图

状态机图状态活动

状态机图状态活动

1.初态和终态
初态(Start state)
显示状态图中状态机的执行的开始 一个状态机只能有一个初态,因为每一个执行都是从 相同的地方开始的。如果一个状态机用多张图描述, 则多张图用同一个初态 嵌套状态中可以使用新的初态
终态(End State)
表示一个最后的或者终端状态 终态的数目可以不确定
2.中间状态
状态图
状态图的作用
描述一个特定对象的所有可能状态 以及由于各种事件的发生,而引起的状态间的 转移
状态图
状态图的组成
节点是状态:包括初始状态和终止状态,用圆 角矩形表示 关系是转换(或转移):用状态之间包含一些 文字描述的有向箭头线表示
状态
状态的几种类型
1.初态和终态 2.中间状态 3.组合状态 4.历史状态
绘制状态机图的步骤
寻找主要的状态 确定状态之间的转换 细化状态内的活动与转换 用复合状态来展开细节
状态图(购物网站)
当从状态“结账”和“显示购物车”返回子状态“显示索 引信息”时,将进入的是离开时的历史状态。 也就是说,转到购物或结账区之后,再回到“浏览目录” 的页面时,其中的内容是不变的,仍保留原来的信息。
历史状态是一种伪状态 可以存储退出组合状态时所处的子状态,则返回 组合状态时可以直接回到相应的子状态
转换的五要素
源状态(Source State):转换激发之前对象所处的状态 目标状态(Target State) :转换完成后对象所处的状态 触发事件(Trigger Event) :引起转换发生的事件 监护条件(Guard Condition) :方括号括起来的布尔表达 式,用于决定是否激活转换 动作(Action) :转换激活时对象执行的操作
细化状态内的活动与转换

状态机图(精品)

状态机图(精品)

状态机图1.概述状态机图(State Machine Diagram)是用来显示状态机的图,包括简单状态、转换和嵌套的复合状态等,一个典型的状态机图如图1所示:图1. 状态机图2.基本表示符号状态机图的基本元素包括:状态、转移、事件、伪状态和复合状态。

2.1状态(State)状态是对象生命周期中的一个条件或形态。

状态由对象的属性值、与其他对象的关系以及正在执行的活动来确定。

在UML中,状态用圆角矩形和状态名表示,初始状态用实心圆表示,终止状态用牛眼表示,如图2所示:图2. 状态状态可以有一个或多个分栏,这些分栏是可选的,包括名称分栏、嵌套区域、内部转换分栏等,如图3所示:图3. 带分栏的状态状态也可用圆角矩形上带有状态名称标签的方框表示,如图4所示:图4. 带有名称标签符号的状态2.2转移(Transaction)转移表示状态之间可能的路径,可以表示外部转换(用箭头表示),也可以表示内部转换(嵌套在状态内部)。

如图5所示:图5. 转移2.3事件(Event)事件是对,在特定时间和空间上,所发生的有意义的事情。

在状态机中,事件触发转移,事件或者显示在转换之上,或显示在状态以内。

共有四种类型的事件:信号事件、调用事件、时间事件、改变事件。

信号用于对象间异步传递的信息包,它没有任何操作,只有自身携带的信息。

信号事件是通过信号来触发的事件,在UML中,信号如图6所示:图6. 信号调用事件是请求在类语境的实例上调用特定的操作,在UML中,调用事件如图7所示:图7. 调用事件时间事件用关键字after表示,说明事件被触发的临界时间。

改变事件用关键字when表示,说明将事件改变所满足的条件。

如图8所示:图8. 时间事件和改变事件2.4伪状态(Pseudo State)伪状态指在一个状态机中具有状态的形式,同时具有特殊行为的顶点。

它是一个瞬时状态,用于构造转换的细节。

当伪状态处于活动时,状态机还没有完成从运行到完成的步骤,也不会处理事件。

第10章 状态机图讲解

第10章 状态机图讲解

初始状态的表示
终止状态 终止状态是对象的最后状态,是一个状态图的终止点。 终止状态只能作为转换的目标,而不能作为转换的源。 终止状态在一个状态图中可以有多个,它用一个套有 一个实心圆的空心圆表示。
终止状态的表示
状态
对象属性值的集合标识了一个对象的状态。表示对象状态的图标由一 个带圆角的矩形表示。它包含个三部分: 名称:给对象所处状态取的名字,名字用一个字符串表示,在一个图 中,名字应该是唯一的。 内部转换:对象响应外部事件所执行的动作。内部转换发生时,不改 变对象的状态,但是,当进入该状态时,可以包含进入动作;当退出 该状态时,可以包含退出动作。我们把内部转换标识在状态框的第二 栏;用一条实线箭头来标识外部转换,外部转换是指一种状态到另一 种状态的转换。 嵌套状态 :状态图中的状态可以包含两种状态:一种是简单状态, 简单状态不包含其它状态;一种是组合状态,组合状态包含了子状态。 即状态图的某些状态本身也是状态图。
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结
阅读最简单的状态图

最为核心的元素无外乎是两个:一个是用圆角矩形表示 的状态(初态和终态例外);另一个则是在状态之间的、
包含一些文字描述的有向箭头线,这些箭头线称为转换
Hale Waihona Puke 初始状态 初始状态代表状态图的起始位置,只能作为转换的源, 而不能作为转换的目标。初始状态在一个状态图中只 允许有一个,它用一个实心的圆表示
状态机图
知识图谱
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结

第10章时序图(顺序图)-郭

第10章时序图(顺序图)-郭

:AddBookDialog Administrator AddBook()
:Book
:Title
findTitle() newBook()
addBook()

将对象置于时序图的顶部意味着在交互开始 的时候对象就已经存在了。 如果对象的位置不在顶部,那么表示对象是 在交互的过程中被创建的。

10.2.2 生命线
getBook()
Return Book getTitle()
Return Title
[遍历Loan数组] Return Ttile Array
10.6 顺序图建模步骤
时序图建模技术
① ② ③ ④
⑤ ⑥ ⑦
设置交互的语境。 通过识别对象在交互中扮演的角色,设置交互的场 景。 为每个对象设置生命线。 从引发某个消息的信息开始,在生命线之间画出从 顶到底依次展开的消息,显示每个消息的特性(如 参数)。 如果需要可视化消息的嵌套或实际计算发生时的时 间点,可以用激活修饰每个对象的生命期。 如果需要说明时间或空间的约束,可以用时间标记 修饰每个消息,并附上合适的时间和空间约束。 如果需要更形式化的说明某控制流,可以为每个消 息附上前置和后置条件。
10.3 对象的创建和撤销

如果对象位于时序图的顶部,说明在交互开始 之前该对象已经存在了。如果对象是在交互的 过程中创建的,那么它应当位于图的中间部分。

对象在创建消息发生之后才能存在,对象的生 命线也是在创建消息之后才存在的。
10.3 对象的创建和撤销

创建对象的两种表示方法:
10.3 对象的创建和撤销

生命线在顺序图中表示为从对象图标向下延伸 的一条虚线,表示对象存在的时间。

UML面向对象设计与分析 课后习题答案

UML面向对象设计与分析 课后习题答案

读卡机 插入IC卡
显示屏
输入设备
接爱IC卡
客户管理
显示输入密码请求
查询密码
输入密码
传送密码
显示服务类型请求 输入取款请求
显示可选的取款金额请求 输入取款金额
查询服务类型 传递取款请求
查询取款金额
传送金额
出钞 取钞
点钞机
事务管理
消息1 确认密码合法
2.为下面打印文件时的工作流建模通信图: 用户通过计算机指定要打印的文件。 打印服务器根据打印机是否空闲,操作打印机打印文件。 如果打印机空闲,则打印机打印文件; 如果打印机忙,则将打印消息存放在队列中等待。 该系统共有四个对象 Computer、PrintServer、Printer 和 Queue。
credit card
+Verify()
0..*
n
sale
+Update()
check n
+verify()
0..*
inventory
+Load()
1
n +Save()
+Update()
第 4 章 活动图
2.运用本书前面介绍有关活动图的相关知识,根据图 4-33 的图书馆管理系统还书用例建模 该用例的活动图。综合运用所学到的标记符,包括活动、转移、控制点、泳道、分叉和汇合
其中,后两个类是 Instructor 类的子类。 (5)建立“一名教师助理可以协助一名教师和一名教授,一名教师只能有一名教师助
理,一名教授可以有 5 名教师助理”的模型。创建 TeacherAssistant 类,并使其与 Teacher 类和 Professor 类都建立关联。
(6)将 TeacherAssistant 类建模为 Graduate 类的派生类。

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)。

状态图课件

状态图课件

延迟事件:该事件不会触发状态的转换,当对
象处于该状态时事件不会丢失,但会被延 迟执行。例如,当E-mail程序中正在发送 第一封邮件时,用户下达发送第二封邮件 执令就会被延迟,但第一封邮件发送完成 后,这封邮件就会被发送。这种事件就属 于延迟事件。
四、变迁 变迁被定义为软件对象的两个状态之间的关 系,表明在指定的事件发生后,在特定的条件下 ,对象执行指定的动作,并进入另一个状态。
内部转换和自转换(完成转换)不同:
自转换: 源状态和目标状态为同一状态的转移。
五、状态图建模技术
建模步骤: 1. 找出适合用模型描述其行为的类。 2. 确定对象可能存在的状态。 3. 确定引起状态转换的事件。 4. 确定转换进行时对象执行的相应动作。
例 书的状态图
状态图的Rose建模
一、新建状态机图
状态变量 活动
在一个状态中允许有多个动作。
1. 2. 3. 4. entry:入口动作,进入状态时发生的动作 exit:出口动作,发生状态改变时执行的动作 do:标记内部活动,处于某种状态时发生的动作 event:当特定事件触发时指定相应动作的发生。
Idle entry/LockScreen() exit/closeScreenSaving() do/showScreenSaving()
状态机图
对事物所处的状态及其变迁的考虑: 大多数事物在其生命周期中经历了不同的状态; 在特定的时间,一个事物位于一个状态; 在现实世界存在着引起事物的状态发生变化的事件; 事物在其状态间按次序转化 当事件发生时,事物可能需要采取一些动作。
状态机图
状态机图(State Machine Diagrams)给出了一个状态机,强调了从状态到状态 的控制流。 状态机(State Machine)定义了对象在生命周期中响应事件所经历的状态的序列 以及对象对这些事件的响应。状态机由状态、跃迁、事件、活动、动作等组成。 状态(State)代表对象在生命周期中的一种条件或状况,在这种状况下,对象满 足某个条件,或执行某个动作、或等待某个事件。一个状态在一个有限的时间段内 存在。 事件(Event)是一个重要事件的规范,该事件在时间和空间域中有一个位置。 跃迁(Transition)是两个状态之间的关系,它表示第一个状态的对象将执行某个 动作,如果规定的事件发生或规定的条件被满足,则对象进入第二个状态。 活动(Activity)是在状态机中进行的一个非原子的执行,它由一系列的动作组成 。 动作(Action)是一个可执行的原子计算,它导致状态的变更或返回一个值。 通常一个状态机依附于一个类,并且描述一个类的实例。状态机包含了一个对 象在其生命周期所有状态的序列以及对象对接收到的事件所产生的反应。

UML状态机图介绍

UML状态机图介绍

UML状态机图1.状态机图的作用状态机图是用来为对象的状态及造成状态改变的事件建模。

UML的状态机图主要用于建立对象类或对象的动态行为模型,表现一个对象所经历的状态序列,引起状态或活动转移的事件,以及因状态或活动转移而伴随的动作。

状态机图也可用于描述Use Case,以及全系统的动态行为。

状态机图表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起,响应事件,执行某些动作,引起转移到新状态,又在新状态下响应事件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。

2.状态机图的基本元素状态机图的基本元素包括:状态、转移、事件、伪状态和复合状态。

状态图由状态(state,圆角矩形)与转换(transition,连接状态的箭头)组成。

引起状态改变的触发器(trigger)或者事件(event)沿着转换箭头标示。

如图所示灯光有2个状态:off与on。

当lift switch或者lower switch事件被触发时,灯光状态会改变。

图表1 状态图的基本元素状态图通常有初始伪状态(initial pseudostate)和最终状态(final state),分别表示状态机的开始和结束。

初始状态用实心圆表示,终止状态用牛眼表示。

图表2状态图中的初始伪状态与最终状态2.1状态(state)状态是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况。

一个状态通常包括名称、进入/退出活动、内部转换、子状态和延迟事件等五个部分组成。

图表3 带分栏的状态在状态图的下面部分可以标识内部活动,包括事件和动作(event/action)。

Entry和exit事件是标准的,任何一个进入状态的转换都将会调用entry动作,任何一个退出状态的转换都将会调用exit动作,而且也可以添加自己的事件。

与do行为不同,进入和退出行为是无法被中断的。

图表4状态的内部行为例如,咖啡机正在煮咖啡的状态(Brewing),并且可以把行为写在状态内。

活动图与状态图

活动图与状态图

系统分析 在系统分析系统阶段用状 态图和活动图为对象动态模型 中的状态模型建模。 系统设计 在系统设计阶段阶段对已 经建立的对象动态模型(状态 实现 图、活动图、顺序图和协作图) 采用迭代式的方式进一步细化 测试 和完善。
部署
UML U ML 系统建模基础教程 建模实例教程
第10章 状态图与活动图
UML U ML 系统建模基础教程 建模实例教程
第10章 状态图与活动图
10.2.2 状态图组成
2. 状态 状态是指在对象的生命期中的一个条件或状况, 在此期间对象将满足某些条件、执行某些活动或等待 某些事件。
UML U ML 系统建模基础教程 建模实例教程
第10章 状态图与活动图
10.2.2 状态图组成
UML U ML 系统建模基础教程 建模实例教程
第10章 状态图与活动图
10.1 动态建模概述
5.状态图做什么?
状态图(State Diagram)主要用来描述对象、子系统、系 统的生命周期。通过状态图可以表现系统中一个对象所具有的 各种状态和这个对象从一种状态到另一种状态的转换(迁移), 以及影响对象这些状态的事件(如收到消息、时间已到、报错、 条件为真)等。它主要描述某个对象从一个状态到另一个状态 变化迁移的控制流。
第10章 状态图与活动图
10.2.2 状态图组成
理解状态的特征: (1)进入/退出动作:对象本身的一个操作。如果在电梯里是一个 状态的话,那员工进电梯和出电梯就是状态“在电梯里”的进 入/退出动作。 (2)内部转换:例如员工在去等电梯的时候发现钥匙没带,此时 我们不用在“等电梯”以后,而是在“准备回家”的状态中就 去拿钥匙了。虽然整体的状态没有发生变化,但对于对象本身 来说,前后是不一样的,一个是有钥匙,一个是没有钥匙。 (3)子状态:如果需要进一步描述员工对象在电梯里聊天、打电 话等状态时,这些状态就是该对象的“在电梯里”状态的子状 态。 (4)延迟事件:现在不立即产生的事件,该事件是在一段时间以 后才产生的事件。员工必须等待到达17:50的时候,才能下班。

复合状态_UML与Rose建模实用教程_[共2页]

复合状态_UML与Rose建模实用教程_[共2页]

145 10.3 复合状态在本章前面介绍的内容中,所涉及的状态都是不包含嵌套子结构的简单状态。

然而,在建模过程中,需要表现的状态可能会很复杂,这时就需要用到复合状态来进行建模。

复合状态是指包含有一个或多个嵌套状态机的状态。

当想要描述的系统非常复杂,而有一些状态又构成了紧密的相互关联的时候,我们可以先将一部分细小的状态组合成一个状态机,把这个新的状态机作为总状态图中的一个复合状态来呈现。

复合状态中包含的状态称为子状态。

复合状态可以分为顺序复合状态与并发复合状态。

1.顺序复合状态顺序复合状态,在UML 2规范后又被称为非正交状态,是仅包含一个状态机的复合状态。

当顺序复合状态被激活时,只有一个子状态会被激活。

它只增加了一层子结构,没有增加额外的并发性。

例如,在一个游戏中需要有对游戏角色的动画控制。

这个角色的动画控制就可以使用一个状态图来描述。

例如,这个游戏角色在地面上可以站立、蹲下、行走、跑动和起跳,但在空中的时候就没有什么可选动作,只能听候重力的安排随时准备着地了。

那么我们可以先设计一个Ground 状态机,在Ground 状态机中定义了站立、蹲下、行走、跑动这几个状态和它们之间的状态转移,在这里我们排除了“起跳”,因为这实际上是地面状态到空中状态的一个转换。

之后把Ground 本身作为一个状态,和Fly (空中)状态以起跳事件作为转移触发点进行关联,一个比较复杂的行为规范就已经通过复合状态的方式来巧妙解决了,其状态图如图10-7所示。

图10-7 顺序复合状态2.并发复合状态当一个复合状态中包括两个或多个并发执行的子状态机时,这个复合状态称为并发复合状态,也称正交复合状态。

并发复合状态将复合状态分成若干个正交区域,每个区域都有一个相对独立的子状态机。

如果该并发复合状态是激活的,那么该状态中每个区域都将有一个状态是激活的。

例如,参加某门课程的学生需要完成课程任务与期末考试才能获得课程通过。

在课程任务与期末考试完成前应该属于课程的“未完成”状态。

第10章 形式化方法

第10章 形式化方法

第10章形式化方法用于开发计算机系统的形式化方法是描述系统性质的基于数学的技术。

它一般用于一致性检查、类型检查、有效性验证、行为预测以及设计求精验证。

本章内容主要包括:形式化方法的概念、有限状态机、Pertri网、净室方法学等。

10.1 基础知识10.1.1 形式化方法的概念形式化方法提供了一个框架,人们可以在框架中以系统的方式刻画、开发和验证系统。

形式化方法提供了规约环境的基础,它使得所生成的分析模型必用传统的或面向对象的方法生成的模型更完整、一致和无二义性。

支配形式化方法的基本概念是:数据不变式、状态、离散数学、序列相关联的符号体系、形式化规约语言。

形式化规约的目标是无二义性、一致性和完整性。

然而,形式化方法的使用导致了达到这些理想的更高的可能性。

10.1.2 有限状态机有限状态机是实时系统设计中的一种数学模型,是一种重要的、易于建立的、应用比较广泛的、以描述控制特性为主的建模方法,它可以应用于从系统分析到设计的所有阶段。

有限状态机的组成如下:(1)一个有限的状态集合Q。

(2)一个有限的输入集合I。

(3)一个变迁函数ò:Q×I—〉Q变迁函数也是一个状态函数,在某一状态下,给定输入后,FSM转入该函数产生的新状态。

ò的定义域内的某些数值可以是未定义的。

有限状态机的优点在于简单易用,状态的关系能够直观看到。

但应用在实时系统中时,其最大的缺点是:任何时刻系统只能有一个状态,无法表示并发性,不能描述异步并发的系统。

另外,在系统部件较多时,状态数随之增加导致复杂性显著增长。

10.1.3Petri网Petri网是在软件分析中,用一种系统的数学和图形的描述与分析的方法。

对于具有并发、异步、分布、并行、不确定性或随机性的信息处理系统,都可以利用Petri网方法构造出要开发的Petrie网模型。

Petri网行为特性包括可达性、有界性、活性、可逆性、可覆盖性、持久性、异步距离和公平性等。

第10章 状态图讲解

第10章 状态图讲解

构成状态图的元素
外部转换
外部转换是一种改变状态的转换,也是最普通最常见的一 种转换。在UML中,它用从源状态到目标状态的带箭头的 线段表示,其他属性以文字串附加在箭头旁。
构成状态图的元素
内部转换
内部转换只有源状态,没有目标状态,不会激发入口和出 口动作,因此内部转换激发的结果不改变本来的状态。如 果一个内部转换带有动作,它也要被执行。内部转换常用 于对不改变状态的插入动作建立模型。要注意的是内部转 换的激发可能会掩盖使用相同事件的外部转换。
状态图的组成
2. 并发组成状态
在一个组成状态中,可能有两个或者多个并发的子状态机, 我们称这样的组成状态为并发组成状态。每个并发子状态 还可以进一步分解为顺序组成状态。
一个并发组成状态可能没有初始状态,终态,或者历史状 态。但是嵌套在它们里的任何顺序组成状态可包含这些伪 状态。
创建状态图
要创建状态图,首先要标识出哪些实体需要使用状态图进 一步建模。虽然我们可以为每一个类、操作、包或用例创 建状态图,但是这样做势必浪费很多的精力。一般来说, 不需要给所有的类都创建状态图,只有具有重要动态行为 的类才需要。
从另一个角度看,状态图应该用于复杂的实体,而不必用 于具有复杂行为的实体。使用活动图可能会更加适合那些 有复杂行为的实体。具有清晰、有序的状态实体最适合使 用状态图进一步建模。
实际就是工作流在此处按监护条件的取值发生 分支,在UML中判定用空心菱形表示。
状态图的概念
2. 状态图的作用
(1)状态图清晰的描述了状态之间的转换顺序,通过状 态的转换顺序也就可以清晰的看出事件的执行顺序。如果没 有状态图我们就不可避免的要使用大量的文字来描述外部事 件的合法顺序。

状态机图

状态机图

8 判断规范

8.1 General标签


8.2 Transitions标签
8.3 Swimlanes标签
9 同步规范

9.1 General标签 9.2 Transitions标签
Saved Print/defer
3 指定状态机图中的动作和事件

3.成,也可以由事件 说明中的参数组成,在一个状态中允许有多个动作。 动作说明当事件发生时产生了什么行为。 --状态有如下5种基本动作类型:
(1)entry:入口动作,用来指定进入状态时发生的 动作。入口动作的语法形式:entry/动作名
1 基本概念

1.4 状态机操作
– 定义 • 在UML规格文件中,状态机被定义为是 一种行为,说明对象或交互在它们的声明 周期中为响应事件所经历的状态序列,以 及它们的响应和动作。 • 创建一个状态机图时,Rational Rose自 动创建一个状态模型。 • Rational Rose限定每个所有者只能拥有 一个状态模型。
1 基本概念
--对象的每一种状态通过对象的一个属性 或几个属性的值来表达。
--分析状态的目的:为了认识对象的行为 规律,为了看清在不同的状态下对象将 呈现哪些行为,这些行为将遵循什么规 律和约束,以及通过什么行为能使对象 从一种状态转移到另一种状态,从而确 切地定义这个对象。
--认识对象状态的抽象原则:划分状态等价类
4 组合状态

4.1 组合状态
--把若干个状态组织在一起可构成一个组合状态;组合状态内 所包含的状态称为该组合状态的子状态。把内容不包含其他 状态的状态称为简单状态。 --组合状态中包含的子状态可以是顺序子状态,也可以是并发 的子状态。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

复合状态表示法
复合状态是指包含一个或多个嵌套状态机的状态,也 称为子状态机状态,它所包含的状态称为子状态。
Test
entry/ showScreen exit/ hideScreen
A B B
嵌套区域表示法
Dialing
entry/ offHook
分解指 示符
分解指示符法
顺序复合状态图 仅包含一个状态机的复合状态称为顺序复合状态,也称为非 正交状态。
绘制状态机图

确定状态间转换
源目标 无预订 部分预订 预订完 预订关闭
无预订 部分预订 退订(),使预订人=0
预订完 预订关闭 不直接转换 无转换
预订()
退订() 无转换
不直接转换 预订(),无空座
无转换
关闭() 关闭()
关闭()
绘制状态机图

细化状态内的活动与转换
绘制状态机图

使用复合状态
创建项目中的状态图---选课
活动 当对象处于一个状态时,它一般是空闲的,在等待一 个事件的发生。但是某些时间,对象正在执行一序列 动作,即,对象做着某些工作,并一直继续到被某个 外部事件的到来,才中断这些工作,我们把对象处于 某个状态时进行的一序列动作称为活动。 如果对象处于某个状态进行一些动作,可能会需要一 些时间,我们可以用活动来描述这一序列动作。表示 活动的方法是,在状态的转换分栏中添加一行“活动 描述”,其格式为“do/动作名”。 活动用来描述对象处于某个状态时,对象进行的一 序列动作。
3).改变事件 改变事件是指某个指定属性值为真时,事件得到触发。 它与监护条件不同,在对象生命周期内,一直在计算 改变事件中的属性值,当属性值为真时,事件触发, 计算停止。 4).时间事件 当时间流逝到某个时刻,触发事件对对象起作用。时 间事件代表时间的流逝。它可以指定为绝对形式(每 天的某时,例如after(12:00)),也可以指定为相对 形式(从某一指定事件发生开始所经过的时间,例如 after(2seconds))。对于前一种形式,也可以使用 变化事件来描述:when(12:00)。
读图小结

与状态off相关的转换有两个,其触发事件都是turnOn, 只不过其监护条件不同。如果对象收到事件turnOn,那

么将判断壶中是否有水;如果[没水],则仍然处于off状 态;如果[有水]则转为on状态,并执行“烧水”动作
而与状态on相关的转换也有两个,如果“水开了”就执 行turnOff,关掉开关;如果烧坏了,就进入了终态了
子状态机通信
历史

“一个圆圈中加上字母H”,用来表示历史状态的。它 的含义是:当从状态“结账”和“显示购物车”返回子
状态“显示索引信息”时,将进入的是离开时的历史状 态。也就是说,转到购物 车或结账区之后, 再回到“浏览目录”的 页面时,其中的内容 是不变的,仍然保留 原来的信息。
子状态机
并发复合状态图
如果复合状态包含两个或者多个并发的子状态机,此时称复 合状态的子状态为并发子状态。 考察一辆处于“运行”状态的电动车。车处在运行状态时, 包含了前进和后退两个不同的子状态,这两个子状态之间的 关系看,它们就是顺序子状态,因为一辆车不可能同时处于 前进和后退两种子状态;另一方面,车的运行状态又包括高 速行驶状态和低速行驶状态。前进状态可以同时为高速行驶 或者低速行驶状态;后退状态时,也可以是高速行驶或者低 速行驶状态,即,前进状态或后退状态之一,可以与高速行 驶状态或低速行使状态之一同时存在。 我们把这些可以同时出现的状态称为并发子状态,并发子状 态可以用于并发线程的状态建模。

将子状态机单独定义,并对其进行命名(通常以大写字 母开头),然后在需要使用的地方来引用它
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结
绘制状态机图—航班机票预订
• •
绘制状态机图的理想步骤是:寻找主要的状态,确定状 态之间的转换,细化状态内的活动与转换,用复合状态 来展开细节 寻找主要状态:对于航班机票预订系统而言,显然包括 的状态主要有 -- 在刚确定飞机计划时,显然是没有任何预订的,并 且在有人预订机票之前都将处于这种“无预订”状态 -- 对订座而言显然有“部分预订”和“预订完”两种 状态 -- 而当航班快要起飞时,显然要“预订关闭” 总结一下,主要有四种状态:无预订、部分预订、预订 完以及预订关闭
初始状态的表示
终止状态 终止状态是对象的最后状态,是一个状态图的终止点。 终止状态只能作为转换的目标,而不能作为转换的源。 终止状态在一个状态图中可以有多个,它用一个套有 一个实心圆的空心圆表示。
终止状态的表示
状态
对象属性值的集合标识了一个对象的状态。表示对象状态的图标由一 个带圆角的矩形表示。它包含个三部分: 名称:给对象所处状态取的名字,名字用一个字符串表示,在一个图 中,名字应该是唯一的。 内部转换:对象响应外部事件所执行的动作。内部转换发生时,不改 变对象的状态,但是,当进入该状态时,可以包含进入动作;当退出 该状态时,可以包含退出动作。我们把内部转换标识在状态框的第二 栏;用一条实线箭头来标识外部转换,外部转换是指一种状态到另一 种状态的转换。 嵌套状态 :状态图中的状态可以包含两种状态:一种是简单状态, 简单状态不包含其它状态;一种是组合状态,组合状态包含了子状态。 即状态图的某些状态本身也是状态图。
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结
阅读最简单的状态图

最为核心的元素无外乎是两个:一个是用圆角矩形表示 的状态(初态和终态例外);另一个则是在状态之间的、
包含一些文字描述的有向箭头线,这些箭头线称为转换
初始状态 初始状态代表状态图的起始位置,只能作为转换的源, 而不能作为转换的目标。初始状态在一个状态图中只 允许有一个,它用一个实心的圆表示
内部转换
进入转换 退出转换
entry/活动 exit/活动
阅读带有复杂转换的状态图
各种转换的区别
• •
进入和退出转换:当进入一个状态时,执行某个动作; 或当退出某个状态时,执行什么动作。这时就可以使用
进入和退出转换来表示
内部转换:用来处理一些不离开该状态的事件
活动与延迟事件

活动:当对象处于一个状态时,它一般是空闲的,在等 待一个事件的发生。但是某些时间,你可能希望描述个
源状态:即受转换影响的状态 目标状态:当转换完成后对象的状态 触发事件:用来为转换定义一个事件,包括调用、改变、 信号、时间四类事件
• •
监护条件:布尔表达式,决定是否激活转换、
动作:转换激活时的操作
源状态 对于一个转换来说,转换前对象所处的状态,就是源 状态。源状态是个相对的概念,即,相对当前状态而 言,它的前一个状态就是源状态。 目标状态 转换完成后,对象所处的状态就是目标状态 。当前状 态相对它的前一个状态而言,当前状态就是目标状态。 源状态和目标状态都是相对某个转换而言的。
事件:就是外部作用于一个对象,能够触发对象状态 改变的一种现象。事件可以分为调用、改变、信号、 时间四类事件。 1).信号事件 对象之间通过发送信号和接收信号实现通信。信号是 一种异步机制。在计算机中,鼠标和键盘的操作均属 于此类事件。对于一个信号而言,对象一件 调用某个对象的成员方法就是调用事件,它是一种同 步的机制。例如在图中,turnOn就是一种调用事件, 用来将开关置于“On”状态。
监护条件 监护条件是一个布尔表达式,当布尔表达式的值为真 时,转换才能够完成。只有在触发事件发生时,才计 算一次监护条件的值,当监护条件的值为真时,转换 才发生。如果转换发生后,监护条件才由假变为真, 那么转换也不会被触发。
动作 当转换被激活后,如果定义了相应的动作,那么就将 执行这个动作。动作可以是一个赋值语句、简单的算 术运算、发送信号、调用操作、创建和销毁对象、读 取和设置属性的值,甚至是一个包含多个动作的活动。 例如,在图中,当turnOn事件发生,就测试监护条件 [有水],如果有水,就会执行“烧水”的动作。
1. 确定状态图的实体
要创建状态图,首先要标识出哪些实体需要使用状态图 进一步建模。虽然我们可以为每一个类、操作、包或用 例创建状态图,但是这样做势必浪费很多的精力。 一般来说,不需要给所有的类都创建状态图,只有具有 重要动态行为的类才需要。 从另一个角度看,状态图应该用于复杂的实体,而不必 用于具有复杂行为的实体。使用活动图可能会更加适合 那些有复杂行为的实体。具有清晰、有序的状态实体最 适合使用状态图进一步建模。 对于学生选课来说,需要建模的实体就是学生账号。
一个状态通常包括名称、进入/退出活动、内部转换、 子状态和延迟事件等五个部分组成

状态机是计算机科学理论的一部分,但UML中的状态 机模型主要是基于David Harel所做的扩展,是用来展示 状态与状态之间转换的图
状态机图描述从状态到状态的控制流程,常用来对系 统的动态特怔进行建模。在大多数情况下,它用来对 反应型对象(外部事件触发对象,对象接受到事件后产生 响应)的行为模型。 状态机图常用来描述业务或软件系统中的对象在外部 事件的作用下,对象的状态从一个状态到另一个状态 的控制流。利用状态图可以精确地描述对象在生命周 期内的行为特征。
等价的简单状态机图


IC卡电话包括3 个基本状态:“使用状态”、“未使用状态”和“维修状态”。其中“使用状态” 状态是一个复合状态。 当拿起电话打IC电话的时候,首先要插入IC卡,进行IC卡的有效验证,验证通过才可以拨打电话 ,此时从最初的“IC卡验证”状态转到“拨号”状态。如果电话接通,则转到“连接”状态;在连 接状态,如果对方也拿起听筒,则转入“通话”状态,通话完毕转入“挂断”状态;如果对方无人 接听。则转入“挂断”状态。如果拨号时出现异常情况,则挂断电话;如果挂断后重新拨号,电话 又处于“拨号”状态。如果此时取出IC卡,则IC电话转入“未使用”状态。 “使用状态”包含5个子状态,因为IC电话不能同时处于两个不同的子状态中,所以这些子状态是 顺序子状态。
相关文档
最新文档