1、状态图,Agenda,状态和状态机 如何阅读状态机图 如何绘制状态机图 状态机图应用说明 本章小结,Agenda,状态和状态机 如何阅读状态机图 如何绘制状态机图 状态机图应用说明 本章小结,状态、状态表示法及状态机,状态是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况 一个状态通常包括名称、进入/退出活动、内部转换、子状态和延迟事件等五个部分组成状态机是计算机科学理论的一部分,但UML中的状态机模型主要是基于David Harel所做的扩展,是用来展示状态与状态之间转换的图,Agenda,状态和状态机 如何阅读状态机图 如何绘制状态机图 状态机图应用说明 本章小结
2、,阅读最简单的状态图,最为核心的元素无外乎是两个:一个是用圆角矩形表示的状态(初态和终态例外);另一个则是在状态之间的、包含一些文字描述的有向箭头线,这些箭头线称为转换,转换的五要素,源状态:即受转换影响的状态 目标状态:当转换完成后对象的状态 触发事件:用来为转换定义一个事件,包括调用、改变、信号、时间四类事件 监护条件:布尔表达式,决定是否激活转换、 动作:转换激活时的操作,读图小结,与状态off相关的转换有两个,其触发事件都是turnOn,只不过其监护条件不同。如果对象收到事件turnOn,那么将判断壶中是否有水;如果没水,则仍然处于off状态;如果有水则转为on状态,并执行“烧水”动作
3、 而与状态on相关的转换也有两个,如果“水开了”就执行turnOff,关掉开关;如果烧坏了,就进入了终态了,复杂转换,各种转换的区别,进入和退出转换:当进入一个状态时,执行某个动作;或当退出某个状态时,执行什么动作。这时就可以使用进入和退出转换来表示 内部转换:用来处理一些不离开该状态的事件,复合状态表示法,并发复合状态图,历史,“一个圆圈中加上字母H”,用来表示历史状态的。它的含义是:当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开时的历史状态。也就是说,转到购物 车或结账区之后, 再回到“浏览目录”的 页面时,其中的内容 是不变的,仍然保留 原来的信息。,子状态
4、机,将子状态机单独定义,并对其进行命名(通常以大写字母开头),然后在需要使用的地方来引用它,Agenda,状态和状态机 如何阅读状态机图 如何绘制状态机图 状态机图应用说明 本章小结,绘制状态机图,绘制状态机图的理想步骤是:寻找主要的状态,确定状态之间的转换,细化状态内的活动与转换,用复合状态来展开细节 寻找主要状态:对于航班机票预订系统而言,显然包括的状态主要有 - 在刚确定飞机计划时,显然是没有任何预订的,并且在有人预订机票之前都将处于这种“无预订”状态 - 对订座而言显然有“部分预订”和“预订完”两种状态 - 而当航班快要起飞时,显然要“预订关闭” 总结一下,主要有四种状态:无预订、部分
5、预订、预订完以及预订关闭,绘制状态机图,确定状态间转换,绘制状态机图,细化状态内的活动与转换,绘制状态机图,使用复合状态,Agenda,状态和状态机 如何阅读状态机图 如何绘制状态机图 状态机图应用说明 本章小结,状态机应用说明,对对象生命周期建模:主要描述对象能够响应的事件、对这些事件的响以及过去对当前行为的影响 对反应型对象建模:这个对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作 状态机图既可以用来表示一个业务领域的知识,也可以用来描述设计阶段对象的状态变迁,Agenda,状态和状态机 如何阅读状态机图 如何绘制状态机图 状态机图应用说明 本章小结,