1、第第七七讲讲 状态图状态图唐姗唐姗计算机与信息学院计算机与信息学院状态图是状态图是UMLUML中对系统的动态行为进行建模的中对系统的动态行为进行建模的图形之一图形之一状态图是系统分析的一种常用工具,它通过状态图是系统分析的一种常用工具,它通过建建立对象立对象的生存周期模型来描述对象随时间变化的生存周期模型来描述对象随时间变化的动态行为的动态行为2一一个状态图本质上就是一个状态机个状态图本质上就是一个状态机状态机状态机可表现对象响应事件所经历的状态序列以可表现对象响应事件所经历的状态序列以及伴随的动作及伴随的动作在计算机科学中,状态机的使用非常普遍在计算机科学中,状态机的使用非常普遍在在编译技术
2、编译技术中通常用有限状态机描述词法分析过程中通常用有限状态机描述词法分析过程在在操作系统操作系统的进程调度中,通常用状态机描述进程的各的进程调度中,通常用状态机描述进程的各个状态之间的转化关系个状态之间的转化关系UMLUML用状态机对软件系统的动态特征建模用状态机对软件系统的动态特征建模3一个一个状态图主要状态图主要用于表现从一个状态到另一个用于表现从一个状态到另一个状态的控制流状态的控制流状态图不仅可以展现一个对象拥有的状态,还状态图不仅可以展现一个对象拥有的状态,还可以说明事件(如消息的接收、错误、条件变可以说明事件(如消息的接收、错误、条件变更等)如何随着时间的推移来影响这些状态更等)如
3、何随着时间的推移来影响这些状态组成组成UMLUML的图形元素有:状态、转换、初始状的图形元素有:状态、转换、初始状态、终结状态和判定等态、终结状态和判定等4表示表示一个模型在其生存期内的状况,如满足某些条件、执行一个模型在其生存期内的状况,如满足某些条件、执行某些操作或等待某些事件。一个状态的生存期是有限的一个某些操作或等待某些事件。一个状态的生存期是有限的一个时间时间段段表示两个不同状态之间的联系,事件可以触发状态之间的转表示两个不同状态之间的联系,事件可以触发状态之间的转换换是在某个时间产生的,可以触发状态转换,如信号、对象的是在某个时间产生的,可以触发状态转换,如信号、对象的创建和销毁、
4、超时和条件的改变创建和销毁、超时和条件的改变等等是状态机中进行的一个非原子的执行,由一系列动作是状态机中进行的一个非原子的执行,由一系列动作组成组成是一个可执行的原子计算,它导致状态的变更或者返回一个是一个可执行的原子计算,它导致状态的变更或者返回一个值值5678事件 监护条件 / 动作源状态目标状态910状态1状态2状态3 满足监护条件 不满足监护条件 状态1entry/ 动作1事件1状态2exit/ 动作2状态3do/ 动作3状态4do/ 动作4( 监护条件为真 )( 监护条件为假 )事件2事件3( 监护条件 )11121314UnusedUsedIC Card Certification
5、RingConnectingTalkingHung UpMaintainingIC Card CertificationRingConnectingTalkingHung UpExceptionNobody ResponseCancleInsert CardRepairRepair Completed15RunningForwardBackwordHigh SpeedLow SpeedForwardBackwordHigh SpeedLow Speed16171819202122232425262728Sombody go intoUsedUnusedMaintainingSombody go
6、 intoThe train go runningThe train stopSombody go out2930313233 Condition2 / Action2NewState4NewStateNewState2NewState3NewState5Event1 Condition3 / Action3 Condition4 / Action4 Condition5 / Action5 Condition6 / Action6 Condition1 / Action1NewState4NewStateNewState2NewState3NewState5Event1 Condition1
7、&Condition3 / Action1,Action3Event1 Condition1&Condition4 / Action1,Action4Event1 Condition2&Condition5 / Action2,Action5Event1 Condition2&Condition6 / Action2,Action634在转换被激发之前,对象所处的状态就是转换的源在转换被激发之前,对象所处的状态就是转换的源状态状态源状态就是被转换影响的状态源状态就是被转换影响的状态一个转换可以有多个源状态,这表示状态机所在对一个转换可以有多个源状态,这表示状态机所在对象中的多个控制流在转换发生
8、时会合成一个控制流象中的多个控制流在转换发生时会合成一个控制流在在UMLUML中,多源状态的转换通常使用中,多源状态的转换通常使用活动图活动图表示表示35363738394041New bookAvailableDeleteReservedBorrowedReserveBorrowBorrowCancelTime outReturn book42New BorrowerAccount AvailableAccount UnavailableDelete AccountThe number of book is okThe number of book extends the limitReturn some books43On first floorMoving upIdleMoving downMoving to first floorgo uparrivedgo uparrivedgo downtime-outarrived4445