第六章状态图和活动图.ppt_第1页
第六章状态图和活动图.ppt_第2页
第六章状态图和活动图.ppt_第3页
第六章状态图和活动图.ppt_第4页
第六章状态图和活动图.ppt_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

1、1/336,第6章,状态图和活动图,阳萌,东北大学信息科学与工程学院,电子邮件Mail: yanglei ,2,主要内容,状态图和活动图,3,状态图和状态机:非常准确的描述是它是一个有向图,由一组节点和一组相应的转换函数组成。状态机是状态和排列的图形,它显示了一个对象在其生命周期中响应事件所经历的状态序列及其对这些事件的响应。状态图:状态图实际上是一个状态机,由状态、转换、事件和活动组成。状态图描述了从一个状态到另一个状态的控制流,它经常被用来模拟系统的动态特性。4、使用状态图,UML状态图主要用于:建立一个对象在其存在期间的动态行为,显示由一个对象经历的状态序列和伴随状态转换的动作所引起的事

2、件,5、状态是一个对象的一组属性值,它们对发生的事件有相同的反应。状态图描述的对象通常有多个属性,一般的状态图应该基于以下两个特征建模:(1)属性的值很少;这些值之间的属性传递有一定的限制。例如:类SellableItem有两个属性:salePrice:Money和status:枚举类型。销售价格的值域是正实数,状态的值是接收、检验、接受、拒绝等。所以应该根据属性状态建立状态图。状态图是对系统的动态行为进行建模。状态图描述了特定对象的所有可能状态以及由各种事件引起的状态之间的转换。状态图是显示状态机的一种方式,而显示状态机的另一种方式是活动图。在Rose中,状态图不生成代码,但是它在检查、调试

3、和描述类的动态行为方面非常有用。7。状态机图和交互图的区别:交互图不显示对象的所有可能的动态行为,而只显示特定交互(特定用例)中多个对象的行为。状态图适用于跨多个用例描述单个对象的行为。8,状态图中的基本概念,状态转换事件动作,9,基本组成,10,状态,定义:状态是指对象生命中的一个条件或条件,在此期间对象将满足某些条件,执行某些活动或等待某些事件。描述:对象在任何时候都会处于某种状态,所有对象都有一种状态。对象所处的状态决定了它如何响应检测到的事件或接收到的消息。通常,事件会导致对象从一种状态变为另一种状态。11,一个状态有以下几个部分:状态名入口/出口动作内部转换不会导致状态变化的转换,不

4、执行入口和出口动作的子状态嵌套在另一个状态中,并且延迟的事件被延迟,直到事件在下一个状态中被处理。状态的构成,12,分为:初始状态,一个状态图只能有一个初始状态,一个或多个最终状态,或者没有中间状态,组合状态,历史状态,状态类型,13,组合状态,子状态嵌套在一个状态中,有子状态的状态称为组合状态。14,示例:组合状态和子状态的示例。描述:在组合状态中也有初始状态和最终状态。从源状态,它可以转移到组合状态本身或直接转移到组合状态的子状态。子状态可以分为“或”关系和“与”关系。“或”关系表示在特定时间只能达到一个子状态,“与”关系表示在复合状态下在特定时间可以达到多个子状态。16,示例2:子状态之

5、间“与”关系的示例。示例1:子状态之间“或”关系的示例。17,历史状态,一种伪状态,其目的是在退出组合状态时记住子状态。当再次进入组合状态时,您可以直接进入该子状态,而不是再次从组合状态的初始状态开始。18、历史状态示例,当子状态“显示索引信息”从状态“结帐”和“显示购物车”返回时,它将在离开时进入历史状态。也就是说,当您去购物或结账区并返回到“浏览目录”页面时,内容不变,原始信息保持不变。19,H和H*的区别:H只记住最外层组合状态的历史。H*可以在任何深度记住组合状态的历史。过渡,过渡是两种状态之间的关系。当特定的事件发生并且满足特定的监视条件时,处于第一状态的对象执行特定的效果(指当跃迁

6、被激发时执行的动作或活动)并且进入第二状态。转换表示对象生命历史中所有状态之间的可能路径,以及当状态改变时要执行的操作。过渡说明了状态中的对象如何响应事件。21,状态之间的转换通常是由事件触发的,所以触发转换的事件表达式应该标记在转换上。如果在转换上没有标记事件,这意味着转换在源状态的内部活动执行后自动触发。Transition:event-signature guard-condition / action的格式,其中event-signature的格式是:event-name (逗号分隔-参数列表),22,对于给定的状态,最终只能生成一个转换,因此它来自同一个状态示例:23,Event(事

7、件),当系统执行时,事件是值得建模的。事件是对在时间和空间中占据一定位置的有意义事物的描述。在状态机中,事件的发生会触发状态转换。事件的原因包括:呼叫、出现满足条件的状态、到达某个时间点或经过某个时间段、发送信号等。在统一建模语言中,事件分为四类:(1)调用事件(2)变更事件(3)时间事件(4)信号事件(24),(1)指示操作的调度。请求调用另一个对象的操作。调用事件的语法格式如下:事件名称(逗号分隔的参数列表),其中参数列表中的参数格式为:参数名称:类型示例:调用事件,25,(2) ChangeEvent 3360如果布尔表达式中的变量发生了变化,布尔表达式的值也相应地发生了变化,从而满足了

8、某些条件,则此事件称为更改事件。变更事件意味着控制条件的不间断测试。变更事件由关键字when表示。变更事件和保护条件的区别在于,保护条件仅在相关事件发生后计算一次,如果值为假,则不会进行状态转换。变化事件代表需要不断测试的事件,26,(3)时间事件:是指满足某个时间表达式的情况的发生。时间表达式可以用关键字when/after分别表示绝对时间/相对时间。示例:时间事件,27,信号,所谓的信号是指由一个对象异步发送并由另一个对象接收的命名对象。信号是作为对象之间通信的信息块的规格。信号是一个显式命名的类元素,其目标是在对象之间显示和通信。它有一些构成信息的属性。通过发送操作,它被明确地从一个对象

9、发送到另一个对象。信号事件表示对象接收到信号。信号可以作为状态机中的状态转换动作发送,也可以作为交互中的消息发送。28、(4)信号事件:表示对象接收到信号,并且信号事件通常触发状态转换。信号事件的语法格式与呼叫事件相同。信号事件是异步事件,调用事件通常是同步事件。信号事件,29,信号由带版本的类图标表示。信号可以有一个广义的关系,并形成一个层次结构。在UML中,异常是一种信号。示例:信号之间广义关系的示例。动作,一个动作是一个可执行的原子计算。它的执行将导致系统状态的改变或价值的回归。是基本的活动节点,也是UML能够表达的最小的计算单元。注意:从概念上讲,动作是瞬时的、原子的,不能被中断,并且

10、它的执行时间可以忽略。UML没有指定描述动作的语言格式,并且在建模时通常由实际的编程语言来描述。31,两个特殊动作:进入动作和退出动作。进入动作:进入状态时执行的活动,格式如下:“进入”/“动作表达式退出动作:退出状态时执行的活动,格式如下:“退出”/“动作表达式”(动作表达式可以使用对象本身的属性和输入事件的参数),例如;进入/设置模式(ontrack)退出/设置模式(offtrack),32,绘制状态图,查找主要状态,确定状态之间的转换,用组合状态扩展细节,33,查找主要状态,确定它们之间的转换,34,细化活动和状态内的转换,35,使用组合状态,36,过程注册系统中的状态图示例,37,注册

11、类型对象的状态图控制器:38,订单处理系统的示例,39,使用组合状态,40,状态图的工具支持,正向工程:根据状态图生成代码逆向工程:理论上可行,但实际上不可能。生成的代码示例:41,类消息解析器公共布尔put(char c) switch(state) case waiting : if(c=)state=get body;else token . append(c);休息;case GetIngBody : if(c=;)状态=等待;返回真;附加(c);返回false公共StringBuffer getToken() 返回令牌;公共StringBuffer getBody() 返回正文;私有

12、最终静态整数等待=0;私有最终静态int GettingToken=1;私有最终静态int GetIngBody=2;私有内部状态=等待;私有StringBuffer令牌,主体;,42,应用状态图,使用对象生命周期建模主要描述对象可以响应的事件,对这些事件的响应以及过去对当前行为的影响,并对反应对象建模。这个对象可能处于稳定状态,从一个状态转换到另一个状态所需的触发事件,以及每个状态改变时发生的动作状态。它可以用来表达商业领域的知识。它也可以用来描述设计阶段对象的状态转换,43,主要内容,状态图,活动图,44,活动图,它是任何系统活动和数据流的可视化表示或活动之间的判断。活动图是一种表达流程原

13、理、业务流程和工作流的技术。它可以用来为业务流程和工作流建模,也可以用来为用例实现甚至程序实现建模。活动图被广泛使用。它可以用来描述对象内部的操作(类的方法)、用例和工作过程的行为,也可以用来表示并行过程。45,描述:活动图是用于建模系统动态行为的五个图之一。活动图中的一个活动结束后,它将立即进入下一个活动(在状态图中,状态转换可能需要触发事件)。活动图是状态图的一个特例。对于UML 2.0,这个规则已经被删除了。46,活动图示例,47,活动图中的基本概念,活动转换,泳道,分支,分叉和连接对象流),48,活动,活动是对行为的描述,它描述了计算过程的顺序和并发性。活动侧重于计算过程,而不是执行计

14、算的对象或涉及的数据值,尽管这些可以表示为活动的一部分。活动意味着在某个过程中任务的执行,这意味着对算法过程中语句执行活动的解释取决于绘图的目的和抽象的水平。在概念描述中,活动意味着一些要完成的任务;在描述层和实现层,活动代表类中的方法。区分动作状态和活动状态动作状态:原子、不可分解、无内部转移、无内部活动、工作时间可忽略活动状态:非原子、可分解、工作需要一定时间、49、活动表示、活动节点用圆角框表示、活动名称被标记为代表活动、初始节点和活动终点、50、转移、当一个活动、转移描述了活动之间的关系和由隐藏事件引起的活动的变化,即转移可以连接各种活动和特殊活动(初始状态、最终状态、判断、同步线)。过渡由带箭头的直线表示,并且可以标记执行过渡的条件。没有标记意味着它是按顺序执行的。51,branch,对于同一个触发事件,它可以根据不同的警报条件转向不同的活动,并且每个可能的转换是分支表示分支的两种方式:方法1,方法2,52,fork and join,这表示系统或对象的并发行为的fork:一个控制流被两个或多个控制流替换(并行收敛)示例:fork and join示例。54,泳道,它进一步描述了完成活动并聚集一组活动

温馨提示

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

最新文档

评论

0/150

提交评论