状态图和活动图_第1页
状态图和活动图_第2页
状态图和活动图_第3页
状态图和活动图_第4页
状态图和活动图_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

状态图和活动图第1页,共54页,2023年,2月20日,星期日8.1什么是状态图○定义:用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件,以及因状态转移而伴随的动作。图8.1状态图的例子第2页,共54页,2023年,2月20日,星期日8.1什么是状态图○动作与状态相关VS动作与转移相关所有的动作与状态相关:称这个状态机为Moore机所有的动作与转移相关:称这个状态机为Mealy机理论上证明:

Moore机和Mealy机在表示能力上是等价的第3页,共54页,2023年,2月20日,星期日8.1什么是状态图○状态图应该在具有以下两个特性的属性上建模□属性拥有较少的可能取值□属性在这些值之间的转移有一定的限制例如:如果类SellableItem有两个属性salePrice和status,①salePrice类型为Money,正实数。②status枚举类型,取值received、inInspection、accepted、rejected。√第4页,共54页,2023年,2月20日,星期日8.2状态图中的基本概念○状态:指在对象的生命期中的某个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。状态名进入/退出动作内部转移子状态延迟事件图8.2状态的例子第5页,共54页,2023年,2月20日,星期日8.2.2组合状态和子状态□嵌套在另一个状态中的状态称作子状态(substate),一个含有子状态的状态被称作组合状态(compositestate)。如图8.3所示是组合状态和子状态的例子,其中W是组合状态,E、F是子状态。第6页,共54页,2023年,2月20日,星期日8.2.2组合状态和子状态图8.3组合状态和子状态

第7页,共54页,2023年,2月20日,星期日8.2.2组合状态和子状态□子状态之间可分为or关系和and关系两种。□or关系说明在某一时刻仅可到达一个子状态。图8.4子状态之间的or关系

第8页,共54页,2023年,2月20日,星期日8.2.2组合状态和子状态□and关系说明组合状态中在某一时刻可同时到达多个子状态。图8.5子状态之间的and关系

第9页,共54页,2023年,2月20日,星期日8.2.3历史状态□历史状态(historystate)是一个伪状态(pseudostate),其目的是记住从组合状态中退出时所处的子状态。当再次进入组合状态时,可直接进入这个子状态,而不是再次从组合状态的初态开始。第10页,共54页,2023年,2月20日,星期日8.2.3历史状态□在UML中,历史状态用符号H表示或H*表示,其中H是浅(shallow)历史状态的符号,表示只记住最外层组合状态的历史;H*是深(deep)历史状态的符号,表示可记住任何深度的组合状态的历史。第11页,共54页,2023年,2月20日,星期日8.2.3历史状态图8.6历史状态第12页,共54页,2023年,2月20日,星期日8.2.4转移□转移(transition)是两个状态之间的一种关系,表示对象将在第一个状态中执行一定的动作,并在某个具体事件发生而且某个特定的警戒条件满足时进入第二个状态。■描述转移的格式如下:event-signature'['guard-condition']''/'action■其中event-signature是事件特征标记,guard-condition是警戒条件,action是动作,而事件特征标记的格式为:event-name'('comma-separated-parameter-list')'□其中event-name是事件名,comma-separated-parameter-list是逗号分割的参数列表。第13页,共54页,2023年,2月20日,星期日8.2.4转移【例8.1】转移的例子。

targetAt(p)[isThreat]/t.addTarget(p)□其中事件名是targetAt,p是事件的参数,isThreat是警戒条件,t.addTarget(p)是要做的动作,这里动作的参数p就是事件的参数。这个例子中的转移包含了事件特征标记、警戒条件、动作3部分,根据实际情况,这3部分可以省略一部分或全部省略。第14页,共54页,2023年,2月20日,星期日8.2.4转移□一般状态之间的转移是由事件触发的,因此应在转移上标出触发转移的事件表达式。如果转移上未标明事件,则表示在源状态的内部活动执行完毕后自动触发转移。第15页,共54页,2023年,2月20日,星期日8.2.4转移□对于一个给定的状态,最终只能产生一个转移,因此从相同的状态出来的,事件相同的几个转移之间的条件应该是互斥的。图8.7相互之间互斥的转移第16页,共54页,2023年,2月20日,星期日8.2.5事件□事件(event)是对一个在时间和空间上占有一定位置的有意义的事情的详细说明。事件产生的原因有调用、满足条件的状态的出现、到达时间点或经历某一时间段、发送信号等。第17页,共54页,2023年,2月20日,星期日8.2.5事件□在UML中,事件分为4类:①调用事件②变化事件③时间事件④信号事件第18页,共54页,2023年,2月20日,星期日8.2.5事件1、调用事件(callevent)。调用事件表示的是对操作的调度,其格式如下:event-name'('comma-separated-parameter-list')'□其中event-name是事件名,comma-separated-parameter-list是逗号分割的参数列表。第19页,共54页,2023年,2月20日,星期日8.2.5事件□如图8.8所示是调用事件的例子,其中事件名是startAutopilot,参数是normal。图8.8调用事件第20页,共54页,2023年,2月20日,星期日8.2.5事件2、变化事件(changeevent)。如果一个布尔表达式中的变量发生变化,使得该布尔表达式的值相应地改变,从而满足某些条件,则这种事件称作变化事件。变化事件用关键字when表示,如图8.9所示是变化事件的例子。第21页,共54页,2023年,2月20日,星期日8.2.5事件图8.9变化事件

第22页,共54页,2023年,2月20日,星期日8.2.5事件3、时间事件(timeevent)。时间事件指的是满足某一时间表达式的情况的出现,例如到了某一时间点或经过了某一时间段。时间事件用关键字after或when表示,如8.10所示是时间事件的例子。第23页,共54页,2023年,2月20日,星期日8.2.5事件图8.10时间事件

第24页,共54页,2023年,2月20日,星期日8.2.5事件4、信号事件(signalevent)。信号事件表示的是对象接收到了信号这种情况,信号事件往往会触发状态的转移。第25页,共54页,2023年,2月20日,星期日8.2.5事件□在UML中,信号用版型<<signal>>的类表示,信号之间可以具有泛化关系,形成层次结构。如图8.11所示是信号之间泛化关系的例子。第26页,共54页,2023年,2月20日,星期日8.2.5事件图8.11信号之间的泛化关系第27页,共54页,2023年,2月20日,星期日8.2.6动作□动作(action)是一个可执行的原子计算。也就是说,动作是不可被中断的,其执行时间是可忽略不计的。□UML并没有规定描述动作的具体语法格式,一般建模时采用某种合适的程序设计语言的语法来描述就可以了。第28页,共54页,2023年,2月20日,星期日8.2.6动作□UML规定了两种特殊的动作:进入动作(entryaction)和退出动作(exitaction)。■进入动作表示进入状态时执行的动作,格式如下:

'entry''/'action-expression■退出动作表示退出状态时要执行的动作,格式如下:

'exit''/'action-expression□其中action-expression可以使用对象本身的属性和输入事件的参数。第29页,共54页,2023年,2月20日,星期日8.2.6动作【例8.2】进入动作和退出动作的例子。

entry/setMode(onTrack)exit/setMode(offTrack)第30页,共54页,2023年,2月20日,星期日8.3状态图的工具支持□对状态图的工具支持包括两方面的内容:正向工程和逆向工程。正向工程指的是根据和状态图生成代码,逆向工程指的是从源代码逆向得到状态图。第31页,共54页,2023年,2月20日,星期日8.4什么是活动图□活动图是对系统的动态行为建模的5个图之一。在OMT、Booch、OOSE方法中并没有活动图的概念,UML中的活动图的概念是从别的方法中借鉴来的。与JimOdell的事件图、Petri网、SDL建模技术等类似,活动图可以用于描述系统的工作流程和并发行为。活动图其实可看作状态图的特殊形式,活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的转移可能需要事件的触发)。第32页,共54页,2023年,2月20日,星期日8.5活动图中的基本概念□下面讨论活动图中的几个基本概念:①活动②泳道③分支④分叉和汇合⑤对象流第33页,共54页,2023年,2月20日,星期日8.5.1活动□活动(activity)表示的是某流程中的任务的执行,它可以表示某算法过程中语句的执行。□在活动图中需要注意区分动作状态和活动状态这两个概念。第34页,共54页,2023年,2月20日,星期日8.5.1活动□动作状态是原子的,不能被分解,没有内部转移,没有内部活动、动作状态的工作所占用的时间是可忽略的。动作状态的目的是执行进入动作(entryaction),然后转向另一个状态。□活动状态是可分解的,不是原子的,其工作的完成需要一定的时间。可以把动作状态看作是活动状态的特例。第35页,共54页,2023年,2月20日,星期日8.5.2泳道□泳道(swimlane)是活动图中的区域划分,根据每个活动的职责对所有活动进行划分,每个泳道代表一个职责区。泳道和类并不是一一对应的关系,泳道关系的是其所代表的职责,一个泳道可能由一个类实现,也可能由多个类实现。第36页,共54页,2023年,2月20日,星期日8.5.2泳道图8.13泳道第37页,共54页,2023年,2月20日,星期日8.5.3分支□在活动图中,对于同一个触发时间,可以根据不同的警戒条件转向不同的活动,每个可能的转移是一个分支(branch)。第38页,共54页,2023年,2月20日,星期日8.5.3分支□在UML中表示分支有两种方法,如图8.14所示,这两种标识方法的区别是,右边的活动图采用菱形符号表示分支。图8.14分支的两种表示方法第39页,共54页,2023年,2月20日,星期日8.5.4分叉和汇合□8.5.3节介绍的分支表示的是从多种可能的活动转移中选择一个,如果要表示系统或对象中的并发行为,则可以使用分叉(fork)和汇合(join)这两种建模元素。第40页,共54页,2023年,2月20日,星期日8.5.4分叉和汇合□分叉表示的是一个控制流被两个或多个控制流代替,经过分叉后,这些控制流是并发进行的;□汇合正好与分叉相反,表示两个或多个控制流被一个控制流代替。第41页,共54页,2023年,2月20日,星期日8.5.4分叉和汇合图8.15分叉和汇合第42页,共54页,2023年,2月20日,星期日8.5.5对象流□在活动图中可以出现对象。对象可以作为活动的输入或输出。活动图中的对象流表示活动和对象之间的关系,如一个活动创建对象(作为活动的输出)或使用对象(作为活动的输入)等。第43页,共54页,2023年,2月20日,星期日8.5.5对象流□对象流属于控制流。所以如果两个活动之间有对象流,则控制流就不必重复画出了。如图8.16所示是使用了对象流的活动图。第44页,共54页,2023年,2月20日,星期日8.5.5对象流图8.16对象图

第45页,共54页,2023年,2月20日,星期日8.6活动图的用途□活动图对表示并发行为很有用,其应用非常广泛。一般活动图可以对系统的工作流程建模,也可以对具体的操作建模,用于描述计算过程的细节。第46页,共54页,2023年,2月20日,星期日8.6活动图的用途例8.3用活动图对工作流程建模的例子。图8.17用例图第47页,共54页,2023年,2月20日,星期日8.6活动图的用途□在进行用例分析时,可以用活动图来描述具体的工作流程。第48页,共54页,2023年,2月20日,星期日8.6活动图的用途□活动图除了可以对工作流程建模外,也可以对具体的操作建模。第49页,共54页,2023年,2月20日,星期日8.7活动图的工具支持□利用工具可以对活动图进行正向工程和逆向工程,正向工程是利用活动图生成代码。活动图既可以表

温馨提示

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

评论

0/150

提交评论