
第8章状态图和活动图课件.ppt
66页第8章 状态图和活动图§因为对象参与系统的行为,所以他们会受到系统行为的影响§例如,每天驾车上班的时候§状态的变化影响车的性能,当轮胎老化时,车子的制动和转弯不再像以前那么灵活,而油箱空的时候,汽车不能继续正常运转车胎磨损油箱的油减少行驶里程增加汽车状态发生变化8.1 什么是状态图 状态图主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件,以及因状态转移而伴随的动作例如例如,8.1 什么是状态图判别对象是否需要状态图来描述判别对象是否需要状态图来描述Ø大多数对象都不需要建立状态图,因为他们只是被简单的创建、使用和析构,其状态和状态变化并不多也不复杂Ø有些对象出现在很多顺序图中,在每个顺序图中都有很多的箭头(消息)指向它,每条消息都是对该对象发出的命令,这些命令可以引起对象的变化,即出现在很多交互中并且是交互的目标的对象应该用状态图来表示Ø例如,剧院的showSheat对象,用于显示剧院的座位列表,该对象被创建的时机各种各样,如演出被安排的时候、被客户选中的时候、用户取消座位时等每个时机创建该对象的规则都不同8.1 什么是状态图§对象的任何一个属性都是一个状态,全部状态构成一个庞大的状态空间。
§对象的哪个属性应该作为建模的依据Ø明显影响对象行为的属性Ø属性拥有较少的可能取值Ø属性在这些值之间的转移有一定的限制例例1,剧院的座位,有两个属性:一个为颜色,一个为状态(选中,未选中,预定,退订)例例2,飞机,有属性:型号、使用状况、性能状况、累计飞行公里数和剩余使用年限对飞机影响较大的是使用状况可以建立“飞行”、“着陆”、“机场停放”、“维修”、“报废”状态8.2 状态图中的基本概念状态图的组成:状态图的组成:①状态(State)②转移(Transition)③事件(Event)④动作(Action)8.2 状态图中的基本概念示意图:8.2.1 状态§状态指在对象的生命期中的某个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件§对象在其生命周期内满足特定条件的存在,在此条件下,对象能执行特定的动作或等待事件的放生§状态是指对象当前的情形,通过对象的属性值反映出来§状态图标最多可分三部分:①名称②内部转移③状态变量名称进入动作退出动作内部活动8.2.1 状态状态分类状态分类①初态②终态③中间状态④组合状态⑤历史状态初态§初态标志出对象的创建状态,它是一个伪状态,因为它不具备真实状态所具有的特征,但它使得状态图更加清晰§初始状态代表状态图的起始位置,只能作为转换的源,而不能作为转换的目标。
§初始状态在一个状态图中只允许有一个终态§表示对象生命周期的终点在该点对象的状态不再发生迁移§终止状态是模型元素的最后状态,是一个状态图的终止点§终止状态只能作为转换的目标,而不能作为转换的源§终止状态在一个状态图中可以有多个 初态和终态§一个状态图只能有一个初态,但可以有多个终态或没有终态8.2.2 组合状态和子状态§组合状态(超状态)是可以包含一些嵌套的子状态的状态被包含的状态称为子状态§组合状态可以使用“与”关系分解为并发子状态,或者通过“或”关系分解为互斥子状态1.互斥子状态§如果一个组合状态的子状态对应的对象在其生命期内的任何时刻都只能处于一个子状态,即多个子状态之间是互斥的,不能同时存在,这种子状态称为互斥子状态2. 并发子状态§有时组合状态有两个或者多个并发执行的子状态,此时称组成状态的子状态为并发子状态 8.2.3 历史状态§历史状态代表上次离开组合状态时的最后一个活动子状态,它用一个包含字母“H”的小圆圈表示§当转换到历史状态时,对象便恢复到上次离开该组合状态时的最后一个活动子状态 8.2.3 历史状态 当组合状态存在多层嵌套时的子状态当组合状态存在多层嵌套时的子状态时的分类:时的分类:Ø浅历史状态指的是对象返回最外层的子状态即可 Ø深历史状态意味着对象必须返回确切的子状态,而不管子状态处于什么层次(内层或外层)8.2.4 转换§转换表示当一个特定事件发生或者某些条件得到满足时,一个源状态下的对象在完成一定的动作后将发生状态转变,转向另一个称之为目标状态的状态。
8.2.4 转换描述转移的格式:event-signature [ guard-condition ] / action 事件特征标记 警戒条件 动作事件特征标记的格式:event-name ( comma-separated-parameter-list ) 事件名 事件参数列表8.2.4 转换 警戒条件警戒条件Ø警戒条件是触发转换必须满足的条件,它是一个布尔表达式Ø从一个状态引出的多个转换可以有同样的触发器事件,但每个转换必须有不同的警戒条件 8.2.4 转换转换组成:转换组成:①源状态②目标状态③触发事件④警戒条件⑤动作转换种类:转换种类:①外部转换②内部转换③完成转换④复合转换1 外部转换§是一种改变对象状态的转换§用从源状态到目标状态的箭头表示 2 内部转换§转换后的状态仍旧是它本身,不改变状态,不需要执行入口和出口动作§例如,某个聊天状态的入口动作是验证密码,出口动作是清空聊天记录如果用户在聊天状态下只想改变除密码以外的个人信息,就可以使用内部转换3 完成转换§完成转换又称为自转换。
§完成转换没有标明触发器事件,是由状态中的活动的完成引起的转换§完成转换可以带一个监护条件,这个监护条件在状态中的活动完成时被赋值,而非活动完成后被赋值 内部转换和自转换内部转换和自转换(完成转换)不同:内部转换和自转换(完成转换)不同:①自转换是离开本状态后重新进入该状态,它会激发状态的入口动作和出口动作的执行②内部转换自始至终都不离开本状态,所以没有出口或入口事件,也就不执行入口和出口动作 4 复合转换§复合转换由简单转换组成,这些简单转换通过分支判定、分叉或接合组合在一起§除了两个分支的判定,还有多条件的分支判定§多条件的分支判定有分为链式的和非链式的分支 4 复合转换链式分支:非链式分支:NewStateNewState2NewState3NewState4NewState5Event1[ Condition1 ] / Action1[ Condition2 ] / Action2[ Condition3 ] / Action3[ Condition4 ] / Action4[ Condition5 ] / Action5[ Condition6 ] / Action68.2.5 事件§事件是对一个在时间和空间上占有一定位置的有意义的事情的详细说明。
它能够引起状态转换§事件产生的原因有发送信号、调用、时间段、满足条件的状态的出现、到达时间点等 8.2.5 事件事件种类:事件种类:①调用事件②变化事件③时间事件④信号事件⑤延迟事件⑥入口事件⑦出口事件⑧动作事件1 调用事件§调用事件是一个对象对调用的接收§调用事件的格式:event-name ( com-separated-parameter-list ) 事件名 事件参数列表2 变化事件§变化事件依靠特定属性值的布尔表达式所表示的条件的满足来触发状态的转换§变化事件表示了一种具有时间持续性的并且可能是涉及全局的计算过程§变化事件用关键字when表示when time = 11:59,when altitude < 1000 2 变化事件警戒条件与变化事件的区别:警戒条件与变化事件的区别:①警戒条件只是在引起转换的触发器事件触发时和事件接收者对事件进行处理时被赋值一次②变化事件则可以被多次赋值直到条件为真,多次赋值满足条件后转换也会被激发3 时间事件§时间事件代表时间的流逝§既可以被指定为绝对形式(天数),也可以被指定为相对形式(从某一指定事件发生开始所经历的时间)。
§时间事件可以描述一个通知信息,自进入状态以来某个时间期限已到,时间事件就会激发状态的转换 §时间事件用关键字after和when表示8.2.6 动作§动作是一组可执行语句或者计算处理过程§动作可以包括发送消息给另一个对象、操作调用、设置返回值、创建和销毁对象等§动作是原子的,不可中断的,动作或动作序列的执行不会被同时发生的其他动作影响或终止8.2.6 动作动作分类:Ø入口动作表示进入这个状态所要执行的动作格式:entry/要执行的动作要执行的动作Ø出口动作表示退出这个状态所要执行的动作格式:exit/要执行的动作要执行的动作Ø活动表示在一个状态内执行的处理过程格式:do/要执行的动作要执行的动作8.3 状态图建模技术建模步骤:建模步骤:①找出适合用模型描述其行为的类②确定对象可能存在的状态③确定引起状态转换的事件④确定转换进行时对象执行的相应动作⑤对建模的结果进行相应的精化和细化活动图8.5 活动图中的基本概念8.6 活动图的用途8.7 活动图的工具支持8.8 状态图和活动图的比较活动图§活动图用于描述系统的工作流程和并发行为§活动图被设计用于简化描述一个过程或操作的工作步骤。
例如,可以用活动图对一个软件的开发过程建模;还可以对诸如求Fibnacci数列第n个数的数值之类的操作进行建模§活动图可看作状态图的特殊形式特殊性在于活动图中的一个活动结束后将立即进入下一个活动而不需要事件触发活动的转移8.5 活动图的基本概念活动图的组成元素活动图的组成元素:①活动(Activity)②动作流(Action Flow)③分支(Branch)与合并(Merge)④分叉(Fork)和汇合(Join)⑤泳道(Swimlane)⑥对象流(Object Flow)8.5.1 活动§活动(activity)表示的是某流程中的任务的执行,它可以表示某算法过程中语句的执行§活动在活动图中表现为一个由一系列动作组成的非原子的执行过程§动作状态(Action State)§活动状态(Activity State)1 动作状态§动作状态是指执行原子的、不可中断的动作,并在此动作完成后通过完成转换转向另一个状态的状态 §动作状态使用平滑的圆角矩形表示,动作状态所表示的动作写在圆角矩形内部 2 活动状态§活动状态是可分解的,不是原子的,其工作的完成需要一定的时间§可把动作状态看作活动状态的特例。
§活动状态的表示图标也是平滑的圆角矩形,并可以在图标中给出入口动作和出口动作等信息8.5.2 动作流§所有动作状态之间的转换流称之为动作流 §活动图的转换不需要特定事件的激发,一个动作状态执行完后自动转换到另外一个状态§活动图的转换用带箭头的直线表示§可用条件限制转换8.5.3 分支与合并§分支一般用于表示对象类所具有的条件行为§条件行为用分支和合并表达 §一个分支有一个入转换和两个带条件的出转换,出转换的条件应当是互斥的§一个合并有两个带条件的入转换和一个出转换,合并表示从对应的分支开始的条件行为的结束§例, 8.5.3 分支与合并8.5.3 分支与合并8.5.4 分叉与汇合§分叉用于将动作流分为两个或者多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的§分叉可以用来描述并发线程§汇合代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才能继续往下进行§例, 8.5.4 分叉与汇合8.5.5 泳道§泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织,通常为对象§泳道区分了负责活动的对象,明确地表示了哪些活动是由哪些对象进行的。
§每个活动只能明确地属于一个泳道§泳道用垂直实线绘出,垂直线分隔的区域就是泳道在泳道上方可以给出泳道的名字或对象(对象类)的名字,该对象(对象类)负责泳道内的全部活动§泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线 8.5.5 泳道8.6 活动的分解§一个活动可以分为若干个动作或子活动,这些动作和子活动本身可以组成一个活动图§一个包含子活动的活动和嵌套了子状态的组合状态类似,概念上也相对统一§一个不含内嵌活动或动作的活动称之为简单活动;一个嵌套了若干活动或动作的活动称之为组合活动,组合活动有自己的名字和相应的子活动图 8.6 活动的分解8.7 活动图的用途§对系统工作流程建模 工作流工作流:是一个良好定义的动作序列,执行时将产生一个可观察的值,或者产生一个个体或实体的对象 §对具体操作建模1. 对系统工作流程建模2.对具体操作建模8.8 活动图与状态图的比较活动图与状态图的相同点:活动图与状态图的相同点:都是对系统的动态行为建模活动图与状态图的区别:活动图与状态图的区别:①两者描述的重点不同活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程;状态图着重描述对象从一个状态到另一个状态的流程,主要有外部事件的参与。
②两者使用的场合不同如果想显示一个对象在其生命周期内的行为,则使用状态图较好;如果是为了分析用例或理解涉及多个用例的工作流程,或处理多线程应用等,则使用活动图较好8.9 活动图建模技术①识别要对其工作流描述的类或对象②确定工作流的初始状态和终止状态,明确工作流的边界③对动作状态或活动状态建模④对动作流建模⑤对对象流建模⑥对建立的模型进行精化和细化 8.11图书馆管理系统状态图和活动图1. 书的状态图2. 借阅凭证的状态图3. 借阅者的活动图4. 图书管理员的活动图5. 系统管理员的活动图1. 书的状态图2. 借阅凭证的状态图3. 借阅者的活动图4. 图书管理员的活动图 5. 系统管理员的活动图①系统管理员维护借阅者帐户的活动图②系统管理员进行书目信息维护的活动图③系统管理员维护书籍信息的活动图(1)系统管理员维护借阅者帐户的活动图(2)系统管理员进行书目信息维护的活动图(3)系统管理员维护书籍信息的活动图。












