第11章 状态图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11.2 状态图的组成
11.2.2 转换
3. 完成转换
► 完成转换没有明确标明触发器事件的转换是由状态
中活动的完成引起的。 ► 完成转换也可以带一个监护条件,这个监护条件在 状态中的活动完成时被赋值,而不是活动完成后被 赋值。
11.2 状态图的组成
11.2.2 转换
4. 监护条件 ► 转换可能具有一个监护条件,监护条件是一个布尔 表达式,它是触发转换必须满足的条件。 ► 当一个触发器事件被触发时,监护条件被赋值。如 果表达式的值为真,转换可以激发;如果表达式的 值为假,转换不能激发;如果没有转换适合激发, 事件会被忽略。如果转换没有监护条件,监护条件 就被认为是真,而且一旦触发器事件发生,转换就 激活。

11.4 绘制状态图
11.4.1 创建状态图
► 下面我们在“Logic
View”(逻辑视图)中创建 “图书管理系统”的“图书状态图”,具体步骤 如下所示: 1. 在浏览器中右键单击“Logic View” 选项,在弹 出的快捷菜单中选择 “New”|“Statechart Diagram”(状态图)命令,创建一个默认名称为 “NewDiagram”的状态图。 2. 双击“NewDiagram”状态图,输入新的名称 “图书状态图”。 3. 在浏览器中双击新创建的“图书状态图”,出 现如图11-17所示状态图绘制区域。
11.2 状态图的组成
11.2.2 转换
► 转换用于一个在某初始状态的对象通过执行指定的
动作并符合一定的条件下进入第二种状态。在这个 状态的变化中,转换被称为“激发”。在激发之前 的状态称为“源状态”,在激发之后的状态称为 “目标状态”。 ► 在UML的状态建模机制中,转换用带箭头的直线表 示,一端连接源状态,箭头指向目标状态。 ► 转换还可以标注与此转换相关的选项,如事件、监 护条件和动作等,如果转换上没有标注触发转换的 事件,则表示此转换自动进行。
11.2 状态图的组成
11.2.2 转换
► 在状态转换中除了源状态和目标状态,还需
要掌握其他六个概念。在转换中,但这六个 部分并不一定都是同时存在的。 1. 外部转换 外部转换是一种改变状态的转换,也是最普 通最常见的一种转换。在UML中,它用从源 状态到目标状态的带箭头的线段表示,其他 属性以文字串附加在箭头旁。
11.2 状态图的组成
11.2.1 状态
► 状态用于对实体在其生命周期中的各种状况
进行建模,一个实体总是在有限的一段时间 内保持一个状态。 ► 状态由一个带圆角的矩形表示,状态的描述 应该包括:名称、入口和出口动作、内部转 换和嵌套状态。
11.2 状态图的组成
11.2.1 状态

1.
2.
3.
4.
它曾经有的子状态。 ► 历史状态虽然有它的优点,但是它过于复杂,而且 不是一种好的实现机制,尤其是深历史状态更容易 出问题。 ► 在建模的过程中,应该尽量避免历史机制,使用更 易于实现的机制。
11.3 状态的分类
11.3.2 组合状态
组合状态是内部嵌套有子状态的状态,一个组合状态包括一 系列子状态。 ► 组合状态可以使用“与”关系分解为并行子状态,或者通过 “或”关系分解为互相排斥的互斥子状态。所以,组合状态 可以是并发或者顺序的。如果一个顺序组合状态是活动的, 则只有一个子状态是活动的。如果一个并发组合状态是活动 的,则与它正交的所有子状态都是活动的。 1. 顺序组合状态 2. 并发组合状态
11.5 状态图建模实例
11.5.2 确定状态图中实体的状态
► 对于图书管理系统的图书来说,它的状态主
要包括: 1.新书 2.被添加 3.被预定 4.被借阅 5.被删除
11.5 状态图建模实例
11.5.3 创建完整状态图
► 根据图书的各种状态以及转换规则,创建
图书的完整状态图如下图所示。
11.4 绘制状态图
11.4.2 绘制初始和终止状态
► 下面在“图书状态图”中创建初始状态和终
止状态,步骤如下: 1.单击“图书状态图”工具栏中初始状态图标 “ ”和终止状态图标“ ”。 2.在编辑图形区域要绘制的地方单击鼠标左键 即可,创建的初始和终止状态如下图所示。
11.4 绘制状态图
11.4.3 绘制状态
► 实际就是工作流在此处按监护条件的取值发
生分支,在UML中判定用空心菱形表示。
11.2 状态图的组成
11.2.4 同步
► 同步条是为了说明并发工作流的分支与汇合。
状态图和活动图中都可能用到同步。 ► 在UML中,同步用一条线段来表示。
11.2 状态图的组成
11.2.5 事件
► 在状态机中,一个事件的出现可以触发状态的改变。

11.4 绘制状态图
11.4.4 绘制转换
► 下面我们在“图书状态图”中创建起始状态和“新
书”状态之间的转换,具体步骤如下: 1.用鼠标左键单击“图书状态图”工具栏中的“ ” 图标。 2.单击转换的源状态——起始状态,按住左键不要搜 松开,向目标状态——“新书”状态拖动,最后松开 鼠标左键。创建后的转换效果图如下图所示。
11.2 状态图的组成
11.2.2 转换
5. 触发器事件 ► 触发器事件就是能够引起状态转换的事件。如果此 事件有参数,这些参数可以被转换所用,也可以被 监护条件和动作的表达式所用。触发器事件可以是 信号、调用和时间段等。 ► 对应与触发器事件,没有明确的触发器事件的转换 称作“结束转换”(或无触发器转换),是在结束 时被状态中的任一内部活动隐式触发的。
第11章 状态图
学习内容
► 状态图的概念
► 状态图的组成 ► 状态的分类 ► 绘制状态图 ► 状态图建模实例
11.1 状态图的概念
11.1.1 状态机
► 状态机是一种记录下给定时刻状态的设备,它可以
根据各种不同的输入对每个给定的变化而改变其状 态或引发一个动作。 ► 状态机由状态、转换、事件、活动和动作五个部分 组成。 ► 在UML中,状态机由对象的各个状态和连接这些状 态的转换组成,是展示状态与状态转换的图。 ► 状态机常用于对模型元素的动态行为进行建模,更 具体地说,就是对系统行为中受事件驱动的方面进 行建模。不过状态机总是一个对象、协作或用例的 局部视图。由于它考虑问题时将实体与外部世界相 互分离,所以适合对局部、细节进行建模。

11.4 绘制状态图
11.4.6 绘制监护条件
下面演示在“图书状态图”中创建监护条件“进入新书状态” 的步骤如下: 1. 双击“图书状态图”图形编辑区中转换线段,弹出 “State Transition Specification”(状态过渡规范)对话框。 2. 选择对话框中的 “Detail” 选项卡,在“Guard Condition” (监护条件)文本框中输入监护条件的名字“进入新书状 态”。 3. 单击“OK”按钮完成创建。如下图所示的增加监护条件后的 状态图效果。
11.1 状态图的概念
11.1.2 状态图
► 状态图本质上就是一个状态机,或者是状态机的特
殊情况,它基本上是一个状态机中元素的一个投影, 这也就意味着状态图包括状态机的所有特征。 ► 状态图描述了一个实体基于事件反应的动态行为, 显示了该实体是如何根据当前所处的状态对不同的 时间做出反应的。 ► 状态图用于对系统的动态方面建模,适合描述跨越 多个用例的对象在其生命周期中的各种状态及其状 态之间的转换。这些对象可以是类、接口、构件或 者节点。
11.2 状态图的组成
11.2.3 判定
► 判定用来表示一个事件依据不同的监护条件而有不
同的影响。在实际建模的过程中,如果遇到需要使 用判定的情况,通常用监护条件来覆盖每种可能, 使得一个事件的发生能保证触发一个转换。 ► 活动图和状态图中都有需要根据给定条件进行判断, 然后根据不同的判断结果进行不同的转换情况。

11.5 状态图建模实例
11.5.1 确定状态图的实体
► 要创建状态图,首先要标识出哪些实体需要使用状
态图进一步建模。不需要给所有的类都创建状态图, 只有具有重要动态行为的类才需要。 ► 从另一个角度看,状态图应该用于复杂的实体,而 不必用于具有复杂行为的实体。使用活动图可能会 更加适合那些有复杂行为的实体。具有清晰、有序 的状态实体最适合使用状态图进一步建模。 ► 对于图书管理系统而言,最需要建模的实体就是图 书的状态。
它发生在时间和空间上的一点,没有持续时间。 ► 事件可以分成明确或隐含的几种,主要包括:信号 事件、调用事件、改变事件和时间事件等。
11.2 状态图的组成
11.2.6 初始状态
► 每个状态图都应该有一个初始状态,它代表状态图
的起始位置。初始状态是一个伪状态,对象不可能 保持在初始状态,必须要有一个输出的无触发转换。 ► 通常初始状态上的转换是无监护条件的,并且初始 状态只能作为转换的源,而不能作为转换的目标。 初始状态用一个实心的圆表示。
11.2 状态图的组成
11.2.7 终止状态
► 终止状态是一个状态图的终点,一个状态图
可以拥有一个或者多个终止状态。 ► 对象可以保持在终止状态,但是终止状态不 可能有任何形式的触发转换,它的目的就是 为了激发封装状态上的完成转换。
11.3 状态的分类
11.3.1 历史状态
► 历史状态本身是个伪状态,用来说明组成状态记得
5.
状态中包括状态名、内部活动、内部转换、入口和出口动作以及嵌套 状态等组成部分。 状态名:在实际使用中,状态名通常是直观、易懂、能充分表达语义 的名词短语,其中每个单词的首字母要大写。 内部活动:状态可以包含描述为表达式的内部活动。当状态进入时, 活动在进入动作完成后就开始。如果活动结束,状态就完成,然后一 个从这个状态出发的转换被触发。 内部转换:状态可能包含一系列的内部转换,内部转换因为只有源状 态而没有目标状态,所以内部转换的结果并不改变状态本身。 入口和出口动作:状态可能具有入口和出口动作。这些动作的目的是 封装这个状态,这样就可以不必知道状态的内部状态而在外部使用它。 嵌套状态:组合状态是内部嵌套有子状态的状态,一个组合状态包括 一系列子状态。
11.2 状态图的组成
11.2.2 转换
2. 内部转换 ► 内部转换的表示法与入口动作和出口动作的表示法 很相似。他们的区别主要在于入口和出口动作使用 了保留字“entry”和“exit”,其它部分两者的表示法 相同。 ► 内部状态只有源状态,没有目标状态,不会激发入 口和出口动作,因此内部转换激发的结果不改变本 来的状态。 ► 如果一个内部转换带有动作,它也要被执行。内部 转换常用于对不改变状态的插入动作建立模型。
11.2 状态图的组成 11.2.2 转换
6. 动作

► ►
动作通常是一个简短的计算处理过程或一组可执行语句。 动作也可以是一个动作序列,即一系列简单的动作。动作 可以给另一个对象发送消息、调用一个操作、设置返回值、 创建和销毁对象。 动作是原子性的,所以动作是不可中断的,动作和动作序 列的执行不会被同时发生的其他动作影响或终止。 动作的执行时间非常短,所以动作的执行过程不能再插入 其他事件。
11.4 绘制状态图
11.4.5wenku.baidu.com绘制事件
创建事件要利用到转换的线段,这里我们给上面创建的转换 创建一个名为“进入状态”的事件,具体步骤如下: 1. 双击“图书状态图”图形编辑区中刚才创建好的转换,弹出 “State Transition Specification”(状态过渡规范)对话框。 2. 进入添加创建事件的“General”(常规)选项卡。在“Event” (事件)文本框中输入事件的名称“进入状态”。 3. 单击“OK”按钮完成操作。添加事件后的转换效果如下图所 示。
下面我们演示在“图书状态图”创建一个名为“新书”的 状态,具体步骤如下所示: 1.单击“图书状态图”工具栏中的“ ”图标。 2.在图形编辑区域要创建状态的地方单击鼠标左键,创建一个 默认名称为“NewState1”的状态。 3.双击“NewState1”的状态,弹出 “State Specification for NewState1”状态规范)对话框,进入“General” 选项卡, 在 “Name”对话框中输入状态的名称“新书”。 4.单击“OK”按钮,创建好的状态如下图所示。
相关文档
最新文档