




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六状态图和活动图演示文稿1/336当前1页,总共73页。2/336(优选)第六状态图和活动图当前2页,总共73页。状态图状态机:一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成。状态机是一个状态和装换的图,它说明对象在它的生命期中响应事件所经历的状态序列以及它对那些事件的响应。状态图:状态图实际上是一种由状态、变迁、事件和活动组成的状态机。状态图描述从状态到状态的控制流,常用于系统的动态特性建模。当前3页,总共73页。状态图的用途UML的状态图主要用于:建立一个对象在其生存期间的动态行为表现一个对象所经历的状态序列引起状态转移的事件以及因状态转移而伴随的动作当前4页,总共73页。状态是对象的一组属性值,这组属性对所发生的事件具有相同性质的反应。状态图所描述的对象往往具有多个属性,一般状态图应该在具有以下两个特性的基础上建模:属性拥有很少的值;属性在这些值之间的转移有一定的限制。例:类SellableItem有两个属性salePrice:Money和status:枚举型。其中salePrice的取值范围为正实数,status的取值为received,inInspection,accepted,rejected等,则应根据属性status建立状态图。当前5页,总共73页。说明:状态图是对系统的动态行为建模。状态图描述了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移。状态图是显示状态机的一种方式,另一种显示状态机的方式是活动图。Rose中,状态图不生成代码,但状态图在检查,调试和描述类的动态行为时非常有用。当前6页,总共73页。状态机图与交互图的区别:交互图不显示对象所有可能的动态行为,只显示特定交互(一个具体的用例)中多个对象的行为。状态图适合于描述跨越多个用例的单个对象的行为。当前7页,总共73页。状态图中的基本概念State(状态)Transition(转移)Event(事件)Action(动作)当前8页,总共73页。基本组成当前9页,总共73页。状态(State)定义:一个状态是指在对象的生命期中的一个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。说明:对象在任何时候都会处于某种状态中,所有对象都具有状态。对象所处的状态决定它如何响应所检测的事件或所接收的消息。通常,事件使对象从一个状态转向另一个状态。当前10页,总共73页。一个状态有以下几个部分:状态名进入/退出动作(entry/exitaction)内部转移(internaltransition)不导致状态改变的转移,不会执行entry和exit动作子状态(substate)嵌套在另外一个状态中的状态延迟事件(deferredevent)延迟到下一状态中处理的事件状态的构成当前11页,总共73页。状态的类型分为:初态一个状态图只能有一个初态终态终态可以有一个或多个,也可以没有中间状态组合状态历史状态状态的类型当前12页,总共73页。组合状态子状态是嵌套在另一个状态中的状态。一个含有子状态的状态被称作组合状态。当前13页,总共73页。例:组合状态和子状态的例子。当前14页,总共73页。说明:组合状态中也有初始状态和终结状态。从源状态可以转移到组合状态本身,也可以直接转移到组合状态中的子状态。子状态之间可分为“or”关系和“and”关系两种。“or”关系说明在某一时刻仅可到达一个子状态,“and”关系说明复合状态中在某一时刻可同时到达多个子状态。当前15页,总共73页。例2:子状态之间“and”关系的例子。例1:子状态之间“or”关系的例子。当前16页,总共73页。历史状态(HistoryState)一种伪状态,其目的是记住从组合状态中退出时所处的子状态,当再次进入组合状态时,可直接进入到这个子状态,而不是再次从组合状态的初态开始。当前17页,总共73页。历史状态例当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开时的历史状态。也就是说,转到购物或结账区之后,再回到“浏览目录”的页面时,其中的内容是不变的,仍然保留原来的信息。当前18页,总共73页。H和H*的区别:H只记住最外层的组合状态的历史。H*可记住任何深度的组合状态的历史。当前19页,总共73页。转移(Transition)一个转移是两个状态之间的一种关系,当指定的事件发生,指定的监护条件得到满足的时候,处于第一个状态的对象执行的指定的效果(指转移激发时执行的动作或活动),进入第二种状态。转换表示在一个对象的生命历史中所有状态之间可能有的路径,以及在状态变化时执行的动作。转移说明了处于一个状态的对象响应事件发生的方式。当前20页,总共73页。状态的之间的转移通常是由事件触发的,此时应在转移上标出触发转移的事件表达式。如果转移上未标明事件,则表示在源状态的内部活动执行完毕后自动触发转移。Transition的格式:
event-signature‘[’guard-condition‘]’‘/’action其中event-signature的格式为:
event-name‘(’comma-separated-parameter-list‘)’当前21页,总共73页。对于一个给定的状态,最终只能产生一个转移,因此从相同的状态出来的、事件相同的几个转移之间的条件应该是互斥的。例:当前22页,总共73页。Event(事件)事件是系统执行中发生的值得建模的事物。一个事件是对一个在时间和空间上占有一定位置的有意义的事情的规格说明。在状态机中,一个事件的出现可以触发状态的转换。事件产生的原因包括:调用、满足条件的状态的出现、到达时间点或经历某一时间段、发送信号等。在UML中,事件分为四类:(1)Callevent(调用事件)(2)Changeevent(变化事件)(3)Timeevent(时间事件)(4)Signalevent(信号事件)当前23页,总共73页。(1)
表示一个操作的调度。请求调用另一个对象的操作。Callevent的语法格式如下:事件名([逗号分隔的参数列表])其中参数列表中的参数格式为:参数名:类型例:调用事件当前24页,总共73页。(2)Changeevent:如果一个布尔表达式中的变量发生变化,该布尔表达式的值相应的变化,从而满足某些条件,则这种事件称为变化事件。变化事件隐含了对于控制条件的不间断测试。Changeevent
用关键字when表示。Changeevent和警戒条件(guardcondition)的区别:警戒条件只在所相关的事件出现后计算一次,如果值为false,则不进行状态转移。变化事件表示的是一个要不断测试的事件变化事件当前25页,总共73页。(3)Timeevent:是指满足某一时间表达式的情况的出现。时间表达式可以表示绝对时间/相对时间分别用关键字when/after表示。例:时间事件当前26页,总共73页。Signal(信号)所谓信号,是指由一个对象异步地发送、并由另外一个对象接收的一个已命名的对象。信号是作为对象之间的通信的信息块的规范。信号是一个显式命名的类元,其目标是对象之间进行显示通讯,它有一些属性,构成它的信息。通过一个发送动作,它被显式地从一个对象发送到另一个对象。信号事件表示对象接收到某个信号。信号可以作为状态机中一个状态转换的动作而被发送,也可作为交互中一个的消息发送。当前27页,总共73页。(4)Signalevent:表示的是对象接收到了信号这种情况,信号事件往往会触发状态的转移。Signalevent的语法格式和Callevent一样。信号事件是一个异步事件,调用事件一般是一个同步事件。信号事件当前28页,总共73页。信号用版型为<<signal>>的类图标表示。信号之间可以具有泛化关系,形成层次结构。在UML中,例外(exception)是信号的一种。例:信号之间泛化关系的例子。当前29页,总共73页。Action(动作)一个动作是一个可执行的原子计算。它的执行会导致系统状态的改变或者值的返回。是基本的活动节点,是UML能够表达的最小计算单元。说明:从概念上讲,动作时瞬间的,是原子的,不可被中断的,其执行时间可忽略不计的。UML并没有规定描述action的语言格式,一般建模时采用实际的程序设计语言来描述。当前30页,总共73页。两种特殊的动作:entryaction(进入动作)和exitaction(退出动作)。Entry动作:进入状态时执行的活动,格式如下:‘entry’‘/’action-expressionExit动作:退出状态时执行的活动,格式如下:‘exit’‘/’action-expression(其中action-expression可以用到对象本身的属性和输入事件的参数)例如;entry/setMode(onTrack)exit/setMode(offTrack)当前31页,总共73页。绘制状态图寻找主要的状态确定状态之间的转换细化状态内的活动与转换用组合状态来展开细节当前32页,总共73页。寻找主要的状态,确定之间的转换当前33页,总共73页。细化状态内的活动与转换当前34页,总共73页。使用组合状态当前35页,总共73页。课程注册系统中的状态图例子当前36页,总共73页。类型为RegistrationController的对象的状态图:当前37页,总共73页。订单处理系统的例子当前38页,总共73页。使用组合状态当前39页,总共73页。状态图的工具支持正向工程:根据状态图生成代码。逆向向工程:理论上可行,但实际上不大可能。所生成的代码示例:当前40页,总共73页。classMessageParser{publicbooleanput(charc){switch(state){caseWaiting:if(c=='<'){state=GettingToken;token=newStringBuffer();body=newStringBuffer();}break;caseGettingToken:if(c=='>')state=GettingBody;elsetoken.append(c);break;caseGettingBody:if(c==';'){state=Waiting;returntrue;}
elsebody.append(c);}returnfalse;}publicStringBuffergetToken(){returntoken;}publicStringBuffergetBody(){returnbody;}privatefinalstaticintWaiting=0;privatefinalstaticintGettingToken=1;privatefinalstaticintGettingBody=2;privateintstate=Waiting;privateStringBuffertoken,body;}当前41页,总共73页。状态图的应用用途对象生命周期建模主要描述对象能够响应的事件,对这些事件的响应以及过去对当前行为的影响对反应型对象建模这个对象可能处于稳定状态,从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作状态及既可以用来表示一个业务领域的知识,也可以用来描述设计阶段对象的状态变迁当前42页,总共73页。主要内容状态图活动图
当前43页,总共73页。活动图(ActivityDiagram)活动图是任何系统活动以及活动之间数据流或判断的可视表示。活动图是一种表述过程基理、业务过程以及工作流的技术。它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模。活动图(ActivityDiagram)的应用非常广泛,它既可用来描述操作(类的方法)的行为,也可以描述用例和对象内部的工作过程,并可用于表示并行过程。当前44页,总共73页。说明:活动图是对系统的动态行为建模的五个图之一。活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的转移可能需要事件的触发)。活动图是状态图的特例。UML2.0而言,去除了这一规定。当前45页,总共73页。活动图的例子当前46页,总共73页。活动图中的基本概念活动(activity)转移(transition)泳道(swimlane)分支(branch)分叉和汇合(forkandjoin)对象流(objectflow)当前47页,总共73页。活动(activity)活动是对行为的说明,它描述了计算过程顺序和并发的步骤。活动关注计算的过程而不是执行计算的对象或涉及的数据值,尽管这些可以表示为活动的一部分。活动表示某流程中的任务的执行,可以表示某算法过程中语句的执行活动的解释依赖于作图的目的和抽象层次,在概念层描述中,活动表示要完成的一些任务;在说明层和实现层中,活动表示类中的方法。区分动作状态和活动状态动作状态:原子的,不能分解,没有内部转移,没有内部活动,工作时间可忽略活动状态:不是原子的,可分解的,工作需要一定的时间当前48页,总共73页。活动的表示活动节点用圆角框表示,标注活动名,用来表示一个活动初始节点和活动终点初态终态当前49页,总共73页。转移(transition)当一个活动结束时,控制流就会马上传递给下一个活动节点,称之为转移。转移描述活动之间的关系,描述由于隐含事件引起的活动变迁,即转移可以连接各活动及特殊活动(初态、终态、判断、同步线)。转移用带箭头的直线表示,可标注执行该转移的条件,无标注表示顺序执行。当前50页,总共73页。分支(branch)对同一个触发事件,可根据不同警戒条件转向不同的活动,每个可能的转移是一个分支表示分支的两种方法:方法1方法2当前51页,总共73页。分叉和汇合(fork和join)表示系统或对象的并发行为分叉(fork):一个控制流被两个或多个控制流代替并发汇合(join):两个或多个控制流被一个控制流代替当前52页,总共73页。说明:利用fork和join可以表示系统中或对象中的并发行为。例:fork和join的例子。当前53页,总共73页。泳道(Swimlane)泳道进一步描述完成活动的对象,并聚合一组活动。活动图是另一种描述交互的方式,描述采取何种动作,做什么(对象状态改变),何时发生(动作序列),以及在何处发生(泳道)。泳道也是一种分组机制。活动图中的区域划分,根据活动职责划分每个泳道代表一个责任区泳道和类不是一一对应泳道关心的是其所代表的职责一个泳道可能由1或n个类实现每个泳道都必须有一个唯一的名称。每个活动节点、分支必须只属于一个泳道。转换、分叉与汇合可以跨泳道。当前54页,总共73页。例:使用泳道的例子。当前55页,总共73页。例:使用泳道的例子当前56页,总共73页。例:用活动图描述Java中使用多线程的过程。当前57页,总共73页。对象节点(ObjectNode)
活动主要是对动作之间的控制流和控制结构进行建模。它也可以对动作之间的值流进行建模。对象节点一种活动节点,表示存在一个对象,它由活动的一个动作产生,并被其他动作使用。对象节点代表了一个对象值,它存在于计算过程中的某个时刻。对象可以是一个活动节点的输出,并作为其他活动节点的输入。当前58页,总共73页。对象流(ObjectFlow)对象流是连接两个活动节点的活动边。这两个活动节点通常是一个可执行节点和一个对象节点。对象可以作为活动的输入或输出,,用虚箭头表示。活动图的对象流表示活动和对象之间的关系如一个活动创建对象或使用对象当前59页,总共73页。对象流的例子。当前60页,总共73页。对象流的例子。当前61页,总共73页。绘制活动图“活动图”比较直观易懂;与传统的流程图十分的相近,只要能够读懂活动图,就不难画出活动图绘制时首先决定是否采用泳道:主要根据活动图中是否要体现出活动的不同实施者然后尽量使用分支、分叉和汇合等基本的建模元素来描述活动控制流程如果需要,加入对象流以及对象的状态变化。活动图的建模关键是表示出控制流,其它的建模元素都是围绕这一宗旨所进行的补充当前62页,总共73页。活动图的用途为什么要在UML中引入活动图?在OMT,Booch,OOSE方法中没有活动图的概念。活动图对表示并发行为很有用。活动图的应用非常广泛,包括:1.对系统的工作流(workflow)建模,即对系统的业务过程建模。(UseCase分析)2.对具体的操作建模,描述计算过程的细节。当前63页,总共73页。活动图应用说明(工作流建模)对工作流建模:用于业务建模的时候,每一条泳道表示一个职责单位,该图能够有效地体现出所有职责单位之间的工作职责,业务范围及之间的交互关系、信息流程建模时应遵循以下策略:为工作流建立一个焦点,除非你所涉及的系统很小,否则不可能在一张图中显示出系统中所有的控制流选择对全部工作流中的一部分有高层职责的业务对象,并为每个重要的业务对象创建一条泳道识别工作流初始节点的前置条件和活动终
点的后置条件,这可有效地实现对工作流
的边界进行建模。当前64页,总共73页。活动图应用说明(工作流建模)从该工作流的初始节点开始,说明随时间发生的动作和活动,并在活动图中把它们表示成活动节点将复杂的活动或多次出现的活动集合归
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 古墓葬保护行业跨境出海战略研究报告
- 2025-2030中国宠物筹码行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国宝石和珠宝行业市场发展趋势与前景展望战略研究报告
- 普通中式正餐企业制定与实施新质生产力战略研究报告
- 2025-2030中国安全云分析行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国孕妇奶粉行业发展分析及发展前景与投资研究报告
- 龙头花洒行业跨境出海战略研究报告
- 2025-2030中国婴儿头定型枕行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国女性游戏行业市场发展分析及发展趋势与投资研究报告
- 2025-2030中国天然气制油市场运行形势及未来竞争格局展望研究报告
- 七年级生物上册 3.2.1 种子的萌发说课稿1 (新版)新人教版
- 2025年临床医师定期考核必考复习题库及答案(1000题)
- 2024年中国男式印花T-恤衫市场调查研究报告
- 保安指挥车辆标准手势培训
- 【MOOC】医学心理学-北京大学 中国大学慕课MOOC答案
- 中建塔式起重机安装、拆除专项施工方案
- 《光明乳业公司企业应收账款管理现状及优化建议(10000字论文)》
- 邀请招标文件模板
- 金融投资项目立项管理制度
- 大学生职业规划学习通超星期末考试答案章节答案2024年
- 教育目的-(第五章)
评论
0/150
提交评论