第10章 状态机图
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章 状态机图

内部调用 事件
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面向对象分析、建模与设计-吕云翔-清华大学出版社

对应于触发器转换,没有明确的触发器的转换成为结束转换或无触 发器转换,是在状态的内部活动执行完毕后隐式触发的。
转换——事件
能够在触发器中接收的事件有以下四种:
调用事件:调用事件表示对象接收到一个调用操作的请求。其期待的结 果是事件的接收者触发一个转换并执行相应的操作。
改变事件:改变事件的发生依赖于事件中某个表达式所表达的布尔条件。 改变事件没有参数,要一直等到条件被满足才能发生。
信号事件:信号由一个对象准确地送给另一个或一组对象。发送给一组 对象的信号可能触发每个对象的不同转换。
时间事件:时间事件的发生依赖于事件中的一个时间表达式。比如,可 以让对象进入某状态后经过一段给定的时间或到达某个绝对时间后发生 该事件。
转换——事件
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章 状态机图讲解

初始状态的表示
终止状态 终止状态是对象的最后状态,是一个状态图的终止点。 终止状态只能作为转换的目标,而不能作为转换的源。 终止状态在一个状态图中可以有多个,它用一个套有 一个实心圆的空心圆表示。
终止状态的表示
状态
对象属性值的集合标识了一个对象的状态。表示对象状态的图标由一 个带圆角的矩形表示。它包含个三部分: 名称:给对象所处状态取的名字,名字用一个字符串表示,在一个图 中,名字应该是唯一的。 内部转换:对象响应外部事件所执行的动作。内部转换发生时,不改 变对象的状态,但是,当进入该状态时,可以包含进入动作;当退出 该状态时,可以包含退出动作。我们把内部转换标识在状态框的第二 栏;用一条实线箭头来标识外部转换,外部转换是指一种状态到另一 种状态的转换。 嵌套状态 :状态图中的状态可以包含两种状态:一种是简单状态, 简单状态不包含其它状态;一种是组合状态,组合状态包含了子状态。 即状态图的某些状态本身也是状态图。
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结
阅读最简单的状态图
•
最为核心的元素无外乎是两个:一个是用圆角矩形表示 的状态(初态和终态例外);另一个则是在状态之间的、
包含一些文字描述的有向箭头线,这些箭头线称为转换
Hale Waihona Puke 初始状态 初始状态代表状态图的起始位置,只能作为转换的源, 而不能作为转换的目标。初始状态在一个状态图中只 允许有一个,它用一个实心的圆表示
状态机图
知识图谱
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结
第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面向对象设计与分析 课后习题答案

读卡机 插入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 类的派生类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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电话不能同时处于两个不同的子状态中,所以这些子状态是 顺序子状态。