教学课件PPT状态图和活动图.ppt_第1页
教学课件PPT状态图和活动图.ppt_第2页
教学课件PPT状态图和活动图.ppt_第3页
教学课件PPT状态图和活动图.ppt_第4页
教学课件PPT状态图和活动图.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章 状态机图 (状态图和活动图),uml理论与实践,2,状态图,状态图通常是对类描述的补充,它说明该类的对象所有可能的状态,以及哪些事件将导致状态的改变。 状态图描述了对象的动态行为,是一种对象生存周期的模型。 一个状态图包括一系列的状态以及状态之间的迁移。,uml理论与实践,3,状态图中的基本符号,uml理论与实践,4,状 态,状态由状态名、状态变量和活动三部分组成。 状态变量是状态图所显示的类的属性,也可以是临时变量。 活动部分列出了处于该状态时要执行的事件和动作。有3个标准事件: entry事件用于指明进入该状态时的特定动作。 exit事件用于指明退出该状态时的特定动作。 do事件用于指明在该状态中时执行的动作。,uml理论与实践,5,说明: 所有对象都具有状态,状态是对象执行了一系列活动的结果。当某个事件发生后,对象的状态将发生变化。 状态图中定义的状态有:初态、终态、中间状态、组合状态、历史状态等。 一个状态图只能有一个初态,而终态可以有多个,也可以没有终态。,uml理论与实践,6,事件的语法如下: event-nameopt (argument list ) opt guard-condition opt /activity-expressionopt 其中,事件名可以是包括三个标准事件(entry,exit,do)在内的任何事件,参数表表示该事件所需的参数,警戒条件是一布尔表达式,动作表达式是该事件将被执行的动作。,uml理论与实践,7,uml理论与实践,8,画状态图的步骤,列出对象具有的所有状态 状态分为起始状态、结束状态和中间状态。一张状态图可以有一个起始状态和若干个(可以为0)结束状态。 标识导致状态转换的事件 当一个对象接收到某个事件时,会导致从一个状态转换到另一个状态,称为状态迁移(transition)。 为状态和迁移定义状态变量和动作 在状态迁移和/或处于某个状态中时都可能需要执行一些相应的动作,综合这些动作,使得对象完成相应的功能。,uml理论与实践,9,uml理论与实践,10,状态迁移,1. 状态迁移 引起状态迁移的原因通常有两种: (1) 当标在迁移箭头上的事件出现时会引起状态的迁移。此时,首先执行引起迁移的事件中的动作,然后迁移到新的状态,执行新状态中的内部动作(包括entry、exit、do以及用户定义的动作)。在执行do或用户定义的动作时,可以被外部的事件(将导致该状态的迁移)中断,但entry动作和exit动作是不能被中断的,并且它们总是要执行完的。,uml理论与实践,11,当状态图中相应的迁移上未指明事件时,表示当位于迁移箭头源头的状态中的内部动作(包括entry、exit、do以及用户定义的动作)全部执行完后,该状态迁移被自动触发。,uml理论与实践,12,uml理论与实践,13,事件 条件 / 动作表达式 说明: 事件:指已发生并可能引发某种活动的一件事; 条件:由方括号围起的关系或逻辑表达式; 动作表达式:一个触发状态迁移时可执行的过程表达式;,状态迁移的语法如下:,uml理论与实践,14,uml理论与实践,15,事 件,事件是指已发生并可能引发某种活动的一件事,类,uml理论与实践,16,事件的种类,uml理论与实践,17,call event的语法格式如下: 事件名 ( 逗号分隔的参数列表 ) 例:,change event用关键字when表示。例,uml理论与实践,18,time event用关键字after或when表示。 例:,signal event的语法格式和call event一样。 信号事件是一个异步事件,而调用事件一般是一个同步事件。,uml理论与实践,19,状态图之间发送的消息,状态图之间可通过动作或图间的虚线箭头向其他状态图发送消息。 当采用虚线箭头时,状态图必须画在矩形框中。 在图间的消息箭头有两种画法: 从表示源对象的状态图中的状态迁移上画虚线箭头到表示目标对象的状态图的边框上; 在两个状态图的边框间画虚线箭头,表示源对象在其执行期间的某时刻发送该消息。 在状态图之间发送消息时,在目标对象的状态图中应画有一个捕获这个消息的相应的迁移。,uml理论与实践,20,uml理论与实践,21,组合状态和子状态,子状态(substate)是嵌套在另一状态中的状态。 一个含有子状态的状态被称作组合状态(composite state) 。,uml理论与实践,22,说明: 组合状态中也有初始状态和终结状态。 从源状态可以转移到组合状态本身,也可以直接转移到组合状态中的子状态。 子状态之间可分为“or”关系和“and”关系两种。“or”关系说明在某一时刻仅可到达一个子状态,“and”关系说明组合状态中在某一时刻可同时到达多个子状态。,uml理论与实践,23,例2:子状态之间“and”关系的例子。,例1:子状态之间“or”关系的例子。,uml理论与实践,24,历史(history)指示器,历史指示器用来记忆内部的状态,用里面标有h字母的圆圈表示。 使用历史状态,可以记住从组合状态中退出时所处的子状态,当再次进入组合状态时,可直接进入到这个子状态,而不是再次从组合状态的初态开始。,uml理论与实践,25,h和h*的区别: h只记住最外层的组合状态的历史。 h*可记住任何深度的组合状态的历史。 例:历史状态的例子。,uml理论与实践,26,状态图的工具支持,正向工程:根据状态图生成代码。例: 所生成的代码示例:,uml理论与实践,27,class messageparser public boolean put(char c) switch (state) case waiting: if (c = ) state = gettingbody; else token.append(c); break; case gettingbody : if (c = ;) state = waiting; return true; ,else body.append(c); return false; public stringbuffer gettoken() return token; public stringbuffer getbody() return body; private final static int waiting = 0; private final static int gettingtoken = 1; private final static int gettingbody = 2; private int state = waiting; private stringbuffer token, body; ,uml理论与实践,28,活动图,活动图是状态图的特例,由状态图变化而来的,活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的转移可能需要事件的触发)。 活动图用来描述完成一个操作所需要的活动,或者是一个用例实例(场景)的活动。 活动图中的状态称为动作状态,用圆角矩形表示,动作状态之间的迁移用箭头表示,迁移上可以附加警戒条件、发送子句和动作表达式。 与状态图不同的是,活动图中动作状态之间的迁移不是靠事件触发的,当动作状态中的活动完成时迁移就被触发。,uml理论与实践,29,uml理论与实践,30,每个泳道代表一个责任区,泳道名放在矩形区的顶端。通常根据责任把活动组织到不同的泳道中,它能清楚地表明动作在哪里执行(在哪个对象中)。 一个动作迁移可以分解成二个或多个导致并行动作的迁移,若干个来自并行活动的迁移也可以合并成一个迁移。在活动图中用黑体线来表示迁移的分解和合并。 活动图中可以表示对象,对象用对象符号(矩形)表示,它可作为活动的输入或输出(用虚线箭头连接),也可展示一个对象受一特定动作的影响(用动作和对象之间的虚线表示)。,uml理论与实践,31,uml理论与实践,32,活动图中可以描述信号的发送和接收,uml理论与实践,33,活动图还可以用来描述用例,uml理论与实践,34,活动图与状态图比较,活动图和状态图描述的重点不同: 活动图描述的是从activity到activity的控制流,而状态图描述的是对象的状态及状态之间的转移。 活动图和状态图使用的场合不同: 对于以下几种情况可以使用活动图: 分析用例 理解涉及多个用例的工作流 处理多线程应用 对于下面的情况要使用状态图: 显示一个对象在其生命周期内的行为。,说明:若要显示多个对象之间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论