文档详情

第10章状态机图讲述.ppt

发布:2017-04-01约6.72千字共55页下载文档
文本预览下载声明
并发复合状态图 如果复合状态包含两个或者多个并发的子状态机,此时称复合状态的子状态为并发子状态。 考察一辆处于“运行”状态的电动车。车处在运行状态时,包含了前进和后退两个不同的子状态,这两个子状态之间的关系看,它们就是顺序子状态,因为一辆车不可能同时处于前进和后退两种子状态;另一方面,车的运行状态又包括高速行驶状态和低速行驶状态。前进状态可以同时为高速行驶或者低速行驶状态;后退状态时,也可以是高速行驶或者低速行驶状态,即,前进状态或后退状态之一,可以与高速行驶状态或低速行使状态之一同时存在。 我们把这些可以同时出现的状态称为并发子状态,并发子状态可以用于并发线程的状态建模。 子状态机通信 历史 “一个圆圈中加上字母H”,用来表示历史状态的。它的含义是:当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开时的历史状态。也就是说,转到购物 车或结账区之后, 再回到“浏览目录”的 页面时,其中的内容 是不变的,仍然保留 原来的信息。 子状态机 将子状态机单独定义,并对其进行命名(通常以大写字母开头),然后在需要使用的地方来引用它 Agenda 状态和状态机 如何阅读状态机图 如何绘制状态机图 状态机图应用说明 本章小结 绘制状态机图—航班机票预订 绘制状态机图的理想步骤是:寻找主要的状态,确定状态之间的转换,细化状态内的活动与转换,用复合状态来展开细节 寻找主要状态:对于航班机票预订系统而言,显然包括的状态主要有 -- 在刚确定飞机计划时,显然是没有任何预订的,并且在有人预订机票之前都将处于这种“无预订”状态 -- 对订座而言显然有“部分预订”和“预订完”两种状态 -- 而当航班快要起飞时,显然要“预订关闭” 总结一下,主要有四种状态:无预订、部分预订、预订完以及预订关闭 绘制状态机图 确定状态间转换 源目标 无预订 部分预订 预订完 预订关闭 无预订 预订() 不直接转换 关闭() 部分预订 退订(),使预订人=0 预订(),无空座 关闭() 预订完 不直接转换 退订() 关闭() 预订关闭 无转换 无转换 无转换 绘制状态机图 细化状态内的活动与转换 绘制状态机图 使用复合状态 创建项目中的状态图---选课 1. 确定状态图的实体 要创建状态图,首先要标识出哪些实体需要使用状态图进一步建模。虽然我们可以为每一个类、操作、包或用例创建状态图,但是这样做势必浪费很多的精力。 一般来说,不需要给所有的类都创建状态图,只有具有重要动态行为的类才需要。 从另一个角度看,状态图应该用于复杂的实体,而不必用于具有复杂行为的实体。使用活动图可能会更加适合那些有复杂行为的实体。具有清晰、有序的状态实体最适合使用状态图进一步建模。 对于学生选课来说,需要建模的实体就是学生账号。 创建项目中的状态图 2. 确定状态图中实体的状态 对于一个学生账号来说,它的状态主要包括: 初始状态 终止状态 可选课状态 不可选课状态 账号被删除状态 创建项目中的状态图 3. 创建相关事件完成状态图 当确定了需要建模的实体,并找出了实体的初始状态和终止状态以及其他相关状态后,就可以着手创建状态图。 首先,我们要找出相关的事件和转换。对于学生账号来说,当有新的同学入学时,将会给新同学创建一个新的账号,下面新同学可以用这个账号去选课。一般来说,每个人的选课数目是有限的,比如说选择6门课程后将不能再选课。如果已选了6门课程还要再选课,就必须删除已选的课程。直到这位同学毕业,将其账号删除,则进入终止状态。 Agenda 状态和状态机 如何阅读状态机图 如何绘制状态机图 状态机图应用说明 本章小结 状态机应用说明 状态机图是一个用来描述局部信息的建模工具。主要应用有两种:对象的生命周期、反应型对象建模 对对象生命周期建模: 最通常的目的 交互图建模的是协作的多个对象的行为,而状态机是对单个对象在整个生命周期内的行为建模 在对对象的生命周期建模时,主要描述:对象能够响应的事件、对这些事件的响以及过去对当前行为的影响 对反应型对象建模: 主要是说明:这个对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作 交互图建模的是“对象到对象的控制流”,活动图建模的是“活动到活动的控制流”,而状态机图建模的是“事件到事件的控制流” 状态机图既可以用来表示一个业务领域的知识,也可以用来描述设计阶段对象的状态变迁 Agenda 状态和状态机 如何阅读状态机图 如何绘制状态机图 状态机图应用说明 本章小结 本章小结 首先介绍了“状态”的概念和UML表示法,然后引入了状态机的概念 通过三个例子逐一说明简单状态机图、包含复杂转换的状态机图以及包含复合状态的状态机图的阅读方法 紧接着通过一
显示全部
相似文档