7.1.1什么是状态图7.1.2状态图的要素7.1.3状态图的作用7.1状态图7.1.1什么是状态图1.状态图的概念状态图(statechartdiagram):用来描述一个特定的对象所有可能的状态,以及由于各种事件的发生而引起的状态之间的转换和变化。状态:是对象取值和链接的抽象。状态图的例子:一个机器的状态图:一个发货单的状态图:7.1.2状态图的要素1、事件是指在确定的时间和位置所发生的对对象起作用的事情。事件和状态有某种对称性,事件表示时间点,状态表示时间段。2、状态是指对象在其生命周期中,满足某些条件、执行某些活动、或等待某些事件时的一个状况。3、转换是一个状态向另外一个状态的转换。7.1.2状态图的要素开始状态事件状态结束状态转换货品发货的状态图事件1.事件的概念事件(event):是指在某一特定时间或空间内出现的能够引发状态改变的运动变化。活动:是对为响应事件而执行的行为的引用。活动表示法是“/”和活动的名称。例如:按下右键/菜单显示,鼠标移动/高亮显示的菜单项更新3.事件的类型信号是指从一个对象到另一个对象的明确的单向信息流动①信号事件:是指发送或接收信号的事件。事件2.事件的描述•格式:event-name[‘(‘parameters’)’][‘[’guard-condition’]’][’/’action]字符串,常为接收对象类中的一个操作。②变化事件:因满足某种条件而引起的事件,变化条件用when表示。事件③时间事件:满足某一时间表达式而引起的事件,时间事件用after、when表示。事件2状态1.状态的概念状态(state):是指对象在其生命周期中,满足某些条件、执行某些活动、或等待某些事件时的一个状况。状态指的是对象的状态。例如:●发票(对象)被支付(状态)●小车(对象)正在停着(状态)●发动机(对象)正在工作(状态)●电灯(对象)开着(状态)2.状态的表示●状态的表示:用圆角的矩形框表示状态。●状态的要素:1.状态名(黑体、首字母大写)2.内部转换:不改变对象的状态,也不执行entry和exit动作3.入口、出口动作4.子状态(嵌套在另外一个状态中的状态)状态名进入动作退出动作内部转换动作(内部转换:不改变对象的状态,也不执行entry和exit动作)例如:警示灯在复印机卡纸状态下会闪烁。表示方法:do/flashwarninglightdo活动状态名进入动作退出动作内部转换动作活动绑定在某状态的入口和出口表示方法:在状态框内用entry/和exit/表示进入、退出动作状态名进入动作退出动作内部转换动作3.状态的类型①初始状态(只能一个)②原子状态③终结状态(可以0或多个)④组合状态⑤历史状态④组合状态组合状态:含有子状态的状态,用于描述对象的某个复杂状态。组合状态也可以有初态和终态。子状态:被嵌套在另外一个状态中的状态,可分为顺序子状态和并发子状态。(1)顺序子状态对象在任何时刻只能处于组成状态的某一个子状态,即多个子状态之间是互斥的,不能同时存在。例:IC电话卡的状态有空闲、维护、工作。其中,工作就是组合状态。工作状态包括验卡、拨号、通话、挂断。每个嵌套状态会接收其组合状态的输出迁移。IC卡电话机状态图组合状态子状态(2)并发子状态并发子状态:指一个对象在同一时刻可以处于多种子状态。•聚合并发•对象内的并发聚合并发装配件的状态图由一系列状态图组成,每个部件对应一个状态图。部件状态可能会发生交互。例如:汽车的状态显示成部件状态的聚合:点火装置、传动装置、加速器、刹车。聚合并发汽车点火装置传动装置加速器刹车对象内的并发某些对象可以被划分成属性或链接的子集,每一个都有自己的子图。子图并不需要独立,同一事件会在一个以上的子图内引起迁移。例如:汽车的运行状态对象内的并发车的运行状态顺序子状态顺序子状态并发子状态RunningHighSpeedLowSpeedBackwordForwardand关系or关系⑤历史状态记录组合状态退出时所处的子状态,以便再次进入从这个状态开始工作。历史状态3转换(迁移)1.转换的概念转换(transition):是一个状态向另外一个状态的转换。对象处在源状态时,发生一个事件,如果条件满足,则执行相应的动作,对象由源状态转换到目标状态。转换用箭头表示,如果没有标注事件,则本转换为自动转换。警戒条件:是为了要让转换发生而必须为真的布尔表达式。例如:当你早上出门的时候(事件),如果温度在冰点以下(条件),那你要戴手套(下一状态)。表示:出门[冰点以下]转换3转换2.转换的类型①自转换:源状态和目标状态为同一状态的转换。自转换注意内部转换和自转换的区别:自转换会激发状态的入口动作和出口动作,而内部转换不会。②自动转换:一个状态根据本状态的有关情况,自动触发进入目标状态,在转换上没有事件。自动转换③条件转换:通过分支判断所确定的转换。条件转换7.1.3状态图的作用状态图:用来描述一个对象在其生命周期中所表现出来的状态和行为。当在系统建模过程中需要描述某个事物或对象的不同状态,以及状态之间转换的事件和动作时,用状态图。但状态图并不是对每一个对象都需要的。状态图建模技术建模的时候要找出对象所处的状态、触发状态改变的动作,以及对象状态改变时应执行的动作具体步骤如下:1、找出适合用模型描述其行为的类。2、确定对象可能存在的状态。3、确定引起状态转换的事件。7、确定转换进行时对对象执行的相应动作。5、对建模的结果进行相应的精化和细化。实例1:图书馆中“图书”的状态图具体步骤如下:1、找出适合用模型描述其行为的类。2、确定对象可能存在的状态。3、确定引起状态转换的事件。7、确定转换进行时对对象执行的相应动作。5、对建模的结果进行相应的精化和细化。实例1:图书馆中“图书”的状态图图书状态有:订购、编目、馆藏、借出。实例2:手机的状态图手机对象的各种场景1、呼叫对方成功2、呼叫对方不成功3、被呼叫,接听7、被呼叫,未听见铃声5、被呼叫,拒绝接听手机状态图实例3:一个股票订单的状态图教学进程实例7:OS中“进程”的状态图实战状态图实战状态图练习:1、绘制打印机的状态图2、绘制电梯的状态图3、绘制电脑状态图