第章状态图 .docx
《第章状态图 .docx》由会员分享,可在线阅读,更多相关《第章状态图 .docx(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品名师归纳总结第10章 状态图在一个交互中, 可能发送给单个对象一个或多个消息,并且, 这些消息以特定的次序被接收。 但是,在另外的交互中, 同一个对象可能接收完全不同的消息。依据各个交互的具体情形,特定消息发送到对象的次序也可能依据情形的不同而转变。通过考虑对象能够参加的全部可能的交互, 我们可以看到, 在一个对象的整个生存期中,它必需能够合理的响应次序变动范畴相当大的消息。在第 8章,我们已经看到,对象图不是用来具体说明系统全部可能的状态的。第一,的确存在着太多的状态,不能用文档穷举。其次,除了要知道可能的状态是什么,我们仍需要 知道哪些状态是不行能,或者不合法的。 出于完全相同的缘由,
2、 次序图和协作图也不是用来描述对象能够参加的全部可能交互的视图。文档来自于网络搜寻对这两种情形, 解决方案是相同的, 即使用表示法的更抽象的形式具体说明系统,而不是举例说明。在 UML 中,对象的行为规格说明是通过为对象定义状态机 来给出的。状态机说明白对象对它在生存期期间可能检测到的大事的响应。在UML 中,状态机通常是用一种称为 状态图 的图来文档化的。 文档来自于网络搜寻交互图和状态机给出的是系统动态行为的两个互补的视图。交互图显示了在较短的一段时间在系统中的对象之间传递的消息,通常是在单个用户产生的事务期间,因此这些图必需描述很多对象, 即特定事务中所涉及的那些对象。另一方面, 状态图
3、自始至终在一个单个对象的整个生存期中跟踪该对象,指定该对象能够接收的全部可能的消息序列,以及它对这些消息的响应。 文档来自于网络搜寻10.1 依靠状态的行为很多对象呈现出了依靠状态的行为 。不严密的说, 这意味着对象在不同时间将对相同的刺激做出不同的响应。例如,考虑一个简洁的 CD 播放机的行为,播放机包括一个装 CD 的抽屉,假如当前有播放的 CD ,就放在抽屉里。 仍包括一个界面, 界面包含三个按钮, 标明“装入( load)”、“播放( play )”和“停止( stop)”。假如当前抽屉关着,装入按钮使之打开,假如是打开的, 就使之关闭。 停止按钮使播放机停止正在进行的播放。 假如没有
4、正在播放的CD 时,按下停止按钮不起作用。最终,播放按钮播放抽屉中的CD ,假如按下播放按钮时抽屉是打开的,就先关闭抽屉后再开头播放。文档来自于网络搜寻这个 CD播放机至少在两个方面表现出了依靠状态的行为。例如,假如抽屉开着,按下可编辑资料 - - - 欢迎下载精品名师归纳总结“装入”按钮将关闭抽屉,而抽屉关着的时候,按下“装入”按钮将打开抽屉。另外,假如正在播放 CD,按下停止按钮就停止播放,但是假如没有播放CD ,按这个按钮没有作用。文档来自于网络搜寻在这个例子中,我们可以标识CD 播放机能够处于的至少三个不同状态。按下“装入”按钮引起的不同结果说明我们需要区分“打开(open)”和“关闭
5、( closed)”状态,而按下 “停止”按钮的不同结果说明存在第三个状态,可能标记为“正在播放(playing )”,它不同于上面任一个状态。同样值得留意的是,CD 播放机可以响应大事而转变状态。例如,重复的按下“装入”按钮将引起CD 播放机在打开和关闭状态之间转换。文档来自于网络搜寻这个例子中的三个状态符合CD 播放机的实际状态中可观看到的差异的确令人开心,但是情形并不总是如此。 区分状态的基本原就是, 处于一个特定状态的对象,对至少一个大事的响应和它处于其他状态时对该大事的响应不同。因而识别的状态可能对应于简洁发觉的对 象的外部特点,也可能并不与之对应。文档来自于网络搜寻用于行为建模的状
6、态的概念应当区分于第2章所争论的状态, 在第 2章,对象的状态被定义为在给定时间其属性的值的整体。状态的行为概念比这个更广泛:在两个时间一个对象的属性很可能不同,可是却处在相同的行为状态。对此,CD 播放机的“关闭”状态可以供应一个例子: 抽屉中有或者没有CD 可以被认为是 CD 播放机不同的属性值,但是在任一情形下我们都可以认为播放机处于关闭状态。文档来自于网络搜寻行为状态的识别并不是一个严格的过程。状态的不同, 是通过处于不同状态的对象对大事的响应不同来区分的, 但是什么看作是不同的响应,在某种程度上却是一个需要判定的问题。行为状态的重要特性是,第一,一个对象有如干个可能的状态,并且在任何
7、给定时间恰 好处于这些状态中的一个。其次,对象可以转变状态,通常,它在给定时间所处的状态会由它的历史打算。最终,在不同时间,一个对象可能依靠其状态对同一刺激做出不同的响应。文档来自于网络搜寻10.2 状态、大事和转换状态图( statechart diagram,通常简称为 statechart),显示一个对象可能的状态,它能够 检测到的大事, 以及它对这些大事的响应。因此,为了构造一个对象的状态图,我们必需首 先至少临时的确立对象能够处于什么状态以及它能够检测什么大事。比如 CD播放机的例子, 我们已经标识了打开、关闭和正在播放状态,这将作为开发状态图的基础。文档来自于网络搜寻用软件的术语,
8、 常常假定,对象检测到的大事就是发送给它的消息。然而,在刚开头设计时不必要这么具体:需要的只是对象能够检测到的外部大事这个更一般的概念。在CD 播可编辑资料 - - - 欢迎下载精品名师归纳总结放机的例子中,能够检测到的外部大事只是按下三个按钮。因此,CD 播放机的状态机将包括至少三个大事: “装入( load)”、“播放( play)”和“停止( stop)”。文档来自于网络搜寻一般而言, 检测到一个大事可能导致对象从一个状态移动到另一状态, 这样的移动称为转换 。例如,假如 CD 播放机处于打开状态,按下装入按钮将引起抽屉关闭,并且CD 播放机移动到关闭状态。 状态图上显示的基本信息是实体
9、的可能状态以及它们之间的转换,或换句话说,检测各种大事的路径引起系统从一个状态转换到另一个状态。文档来自于网络搜寻描述 CD播放机的基本模型的状态图如图 10.1所示。系统的状态以圆角矩形表示,其中写着状态的名字。 状态转换用连接两个状态的箭头表示。每个这样的箭头必需标注一个大事 的名字。 这种箭头的含意是假如系统在处于箭头尾的时候接收到该大事,它将转到箭头的头所指向的状态。 因此, 大事通常将在状态图中显现多次,该对象可能在多个不同的状态检测 到同样的大事。 文档来自于网络搜寻图 10.1CD 播放机的一个简洁状态机在图 10.1中,从每个状态都有三个动身的箭头,每一个大事都可以被CD 播放
10、机检测到。这种完备性不是状态机的基本性质,而只是反映了CD 播放机的用户在任何时候都可以按下三个按钮中的任何一个的事实。假如大事没有引起状态的转变,那么相应的转换只是在一个 状态上形成回路。这种情形的例子是,在CD 播放机已经处于正在播放状态,检测到播放事件时发生的转换。这样的转换被称为自转换 ( self-transition )。文档来自于网络搜寻大事犹如消息一样, 能够带有数据, 写在消息名字后面的括号中。 播放机的例子中没有需要携带附加数据的大事,但在 10.10 节考虑的例子中将看到这样的例子。 文档来自于网络搜寻状态机的执行一个简洁的状态机,如图 10.1中所示的状态图,可以认为是
11、依据下面的方式“执行” 。可编辑资料 - - - 欢迎下载精品名师归纳总结在任何给定时刻, 对象恰好处于图中所示的状态之一。这个状态称为 激活状态( active state)。任何从激活状态动身的转换都是一个候选激发 。例如,假如 CD 播放机的激活状态是 “打开” 状态,那么候选激发的转换有该状态上的自转换、标记着“装入”的到关闭状态的转换,以及标记着“播放”的到达正在播放状态的转换。文档来自于网络搜寻能够引起转换激发的大事称为触发器 ( trigger )。当检测到一个大事时,该大事将激发从激活状态动身的标注着该大事名字的转换。这个激发的转换的另一端的状态就成为激活状态,这个过程可以再次
12、重演,不同的是现在的候选激发将是从新激活状态动身的转换。文档来自于网络搜寻从当前状态动身的大事假如没有标注为所检测到大事名字的,就忽视该大事, 不激发任何转换, 当前状态仍是激活状态。 假如有必要指定在一个状态是激活的情形下检测到一个特定大事是错误的时候, 可以定义一个错误状态, 并增加一个到错误状态的转换并用被禁止的大事的名字加以标注。文档来自于网络搜寻10.3 初始状态和终止状态图10.1中的图描述了 CD 播放机在使用时的运作机能,但是没有说明机器在开关时发生什么。我们将假定关机器时它不表现出任何行为,当开机时它总是直接到关闭状态。文档来自于网络搜寻我们可以通过向状态图中加入初始状态 表
13、示后一种行为。初始状态用黑色的小圆点表示。从初始状态动身的转换表示创建或初始化对象时进入的状态。CD 播放机的初始状态如图10.2所示,初始状态上的转换表示播放机在开机后总是处于关闭状态。留意从初始状态出发的转换上不应当写任何大事。文档来自于网络搜寻图 10.2 初始状态和终止状态可编辑资料 - - - 欢迎下载精品名师归纳总结除了初始状态, 状态图仍可以表示终止状态 。终止状态代表对象在响应撤销、关掉,或其他终止大事时到达的状态,终止状态用大圆圈中加一个小圆点表示。一般而言, 可以从很多不同的状态到达终止状态。在CD 播放机的例子中, 引起达到终止状态的大事是关播放机。我们可以用一个称为“关
14、机(off )”的新大事对此建模。可以在任何时刻关掉播放机,因此用标注为 “关机” 大事的转换将终止状态连接到全部其他状态。终止状态的含意依靠于状态图所描述的对象的特性。假如一个软件对象,即类的实例,到达它的终止状态,那么它将完 全被销毁:假如它有析构函数,那么将调用析构函数,并回收对象占用的内存。文档来自于网络搜寻然而,图 10.2明显不应当被说明说 CD 播放机在每次关机时都被实际的销毁:这样的设计不行能制造出来投入市场。实际模拟的是掌握CD 播放机的软件的行为:当关掉播放机时终止掌握程序,并且机器将不响应任何大事,直到再次开机。文档来自于网络搜寻10.4 监护条件图10.2中的状态图对
15、CD 播放机的行为给出了一个过分简洁的描述。有一个问题是,当按下播放按钮时, 播放机并不总是进入正在播放状态,而是当检测到该大事时假如抽屉中有CD 才进入正在播放状态,否就假如抽屉仍没有关闭就只是关闭抽屉并且进入关闭状态。这意味着在精确的模型中,关闭和打开两个状态都应当包含始于它们的两个标注为“播放” 的转换。在任何给定时刻,实际上沿哪个转换前进将取决于在该时间抽屉中的内容。文档来自于网络搜寻图 10.3 按下“播放”时的两种可能后果图10.3显示了在 CD 播放机抽屉关着的时候按下“播放”按钮的两种可能的后果。这是一个 非确定 状态图的例子。 这个图说明播放大事可以触发两个可能的转换,但并没
16、有说明何时将激发其中的一个转换而不是另一个。文档来自于网络搜寻原就上, 不确定的图没有任何错误,但是假如建模的系统事实上是确定的,那么不确定的图必定是遗漏了系统的某些信息。在CD 播放机的例子中,当按钮按下时不存在真正的非确定性, 由于播放机接下来的行为由抽屉中的内容确定。更精确的模型应当说明是什么导致沿着一个转换而不是另一个转换前进,以排除图10.3中出现的非确定性。 文档来自于网络搜寻可编辑资料 - - - 欢迎下载精品名师归纳总结在状态图上, 这样的信息可以通过为播放转换增加监护条件 来表示, 说明在什么情形下将激发该转换。 监护条件是转换的规格说明的一部分,写在标注该转换的大事名字之后
17、,并用方括号括起来。监护条件通常以非正式的英语写出,如这里一样,但是假如要求,可以用更形式化的符号,如第12章描述的 OCL 语言写出。 文档来自于网络搜寻图10.4所示的 CD 播放机的扩充状态图包括了监护条件,区分了抽屉的非空和空的状态。为了简洁起见, 与当前争论无关的初始状态和终止状态在这个图中省略了。文档来自于网络搜寻图10.4使用监护条件区分转换监护条件对状态机执行的影响如下。当检测到一个大事时,将对标注着该大事名字的转 换上的监护条件求值。 假如转换有监护条件, 那么只有在求值为真时这个转换才会激发。假如全部监护条件都是假值,并且没有无监护的转换,就忽视该大事。文档来自于网络搜寻假
18、如多个转换有值为真的监护条件,那么它们中只能有一个被激发。在这种情形下, 非确定性再次引入到状态机,通常, 要对一组离开转换上的监护条件进行选择,以使得在任何给定时间,为真的不能超过一个。文档来自于网络搜寻例如,假定 CD 播放机正处于打开状态时按下了播放按钮。发生的第一件事情是关闭抽屉。这是必要的,以便机器能够检测是否有碟片。重要的是要留意在这个时候,尽管事实上抽屉是关闭的,但 CD播放机并不是在关闭状态。仍旧是在打开状态下,评估播放转换上的监护条件的值,看应当激发哪个转换。这阐明白前面提出的一点,CD 播放机的状态机中的状态不必要和 CD 播放机的实际状态恰好对应。文档来自于网络搜寻假如有
19、 CD ,将激发从打开状态到正在播放状态的转换。状态机直接从打开转到正在播放状态,并且不经过关闭状态,即使是临时的。假如经过,那么它必需检测到其次个大事以激发它到正在播放状态的转换。然而,只有单独一个大事,即按下播放按钮大事,是将它从打开状态转换到正在播放状态所必需的。假如需要, 抽屉关闭的物理事实在状态图上可以作可编辑资料 - - - 欢迎下载精品名师归纳总结为动作 建模,如下节所描述的。文档来自于网络搜寻10.5 动作状态图能够说明对象响应检测到的特定大事时做些什么。这通过在图中的相关转换上增加动作 来说明。动作写在大事名字之后,前面加斜线。图10.5所示的是 CD 播放机的状态图, 加入
20、了动作表示抽屉实际打开和关闭的时间。文档来自于网络搜寻动作可以用英语以伪代码的方式描述,也可以使用目标编程语言的符号。转换常常既带有条件,仍带有动作。假如是这样,条件紧跟在大事名字之后,动作写在条件的后面。文档来自于网络搜寻动作被看作是简短的、 自包含的一段处理,所花费的完成时间可以忽视。动作的定义特点是它在转换到达新状态之前完成。这隐含着动作不能由对象可能检测到的任何其他大事中断,而必需总是执行完成。在这个意义上,不是原子的动作,或者对象处于给定状态时执行的处理,可以通过 活动而不是动作描述,如第10.6节所描述的。 文档来自于网络搜寻图 10.5操纵 CD 播放机抽屉的动作入口和出口动作假
21、定每次抽屉中有CD 时假如按下播放按钮, CD 播放机的播放头都将自己定位到当前曲目的开头。 这可以在状态图上表示, 方法是在每个标注“播放”的到达正在播放状态的转换上写一个适当的动作。但是,这相当不妥而且累赘,可以用更节约的方法达到相同的成效,即在正在播放状态中包含一个入口动作 ,如图 10.6所示。 文档来自于网络搜寻每当一个状态变为激活状态时,紧接在通向该状态的转换上的动作完成之后就执行入口动作。例如,假如 CD播放机处于打开状态,这时按下播放按钮,会关闭抽屉并激发到正在播放状态的转换。 结果正在播放状态变成激活的, 正在播放状态中的入口动作会立刻被执行。文档来自于网络搜寻可编辑资料 -
22、 - - 欢迎下载精品名师归纳总结状态仍可以有 出口动作 ,只要离开该状态的转换激发时就会执行。图10.6中的出口动作表示只要执行了引起停止CD 播放的动作,第一发生的事情就是提起CD 播放机的播放头。文档来自于网络搜寻图 10.6入口和出口动作留意, 自转换被看作状态转变。 当一个状态上的自转换激发时,这个状态临时不再是激 活的, 然后被再激活。这意味着,当沿着自转换前进时,假如该状态存在入口动作和出口动 作,就第一执行出口动作,接着执行入口动作。在图10.6中,这意味着当 CD 正在播放时按下播放按钮的结果是播放头回到当前曲目的开头,从而重新开头这个曲目。实际上很多CD 播放机都呈现出了这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第章状态图 状态图
限制150内