第六章 状态图

目录

m1.状态图概述
m2.状态图基本符号
m3.状态图组成要素
m4.活动图与状态图比较

1 状态图概述

状态图(State Diagram)一个对象在其生存期间的动态行为,表现对象响应事件所经历的状态序列以及伴随的动作。
并不是所有类都有相应的状态图。状态图只适用于:具有若干个确定状态,类的行为在这些状态下会受到影响且被不同的状态改变。
第六章 状态图

m状态机图与交互图的区别:
Ø交互图不显示对象所有可能的动态行为,只显示特定交互(一个具体的用例)中对象的行为。
Ø状态机图可以显示对象所有的动态行为。
m状态图与活动图的区别:
Ø状态机图只建模一个对象的行为,活动图可以建模多个对象的活动
Ø活动图中也允许建模特定活动中对象的某个状态

2 状态图的基本符号

第六章 状态图

3 状态图的基本组成

m状态
m转换
m事件

第六章 状态图

状态的分类与描述

什么是状态(state

    对象生命期中的某个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。

理解

    对象在任何时候都会处于某种状态中,所有对象都有状态。

    对象所处的状态决定了它如何响应所检测到的事件或所接收的消息。

    通常,事件使对象从一个状态转向另一个状态(即状态的转移)

状态分类

Ø初态
Ø终态
Ø中间状态
Ø组合状态
Ø历史状态
m初态(start state

       显示状态图执行的开始。一个状态图只能有一个初态。如果一个状态机用多张图描述,则多张图用同一个初态;嵌套状态中可以使用新的初态;

m终态(End State

     表示终端状态;

     终态数目可以不确定。

第六章 状态图

m一般状态的组成:
Ø状态名(name
Ø进入/退出动作(entry/exit action
Ø内部转换(internal transition):不导致状态改变的转换,不会执行entry exit 动作。
Ø子状态(substate): 嵌套在另外一状态中的状态
Ø延迟事件(deferred event):延迟处理的事件。
第六章 状态图

m延迟事件

      一种特殊的事件,它是指该事件不会触发状态的转换,当对象处于该状态时事件不会丢失,但会被延迟执行。

       例如,当E-mail程序中正在发送第一封邮件时,用户下达发送第二封邮件执令就会被延迟,但第一封邮件发送完成后,这封邮件就会被发送。这种事件就属于延迟事件

m嵌套状态:

           含有子状态的状态被称为嵌套状态。

第六章 状态图

m顺序复合状态图(嵌套)
第六章 状态图

m顺序复合状态图(分解指示符)
第六章 状态图

m并发复合状态图
第六章 状态图

m历史状态

      一种伪状态。可以存储退出组合状态时所处的子状态,则返回组合状态时可以直接回到到相应的子状态。

第六章 状态图


状态迁移的触发与描述

m迁移 (transition

       某个特定事件发生或某些条件满足时,一个源状态下的对象完成一些特定动作,使得对象从源状态迁移到新状态。

       格式: 事件[条件]/动作表达式 发送子句

m转换的五要素
Ø源状态
Ø目标状态
Ø触发事件
Ø监护条件
Ø动作
第六章 状态图

m触发状态迁移的事件

事件(Event

    对一个时间和空间上占有一定位置的有意义的事情的规格说明。事件触发状态的转移

      事件的描述格式:      事件名(参数表)

     说明:

     事件名:必须引用接收事件的对象类中的一个操

                  作或信号。

     参数表:传送给该事件的形式参数,为任选项。

m事件的分类
Ø状态内部事件

  1)入(出)口事件

   UML标准事件

         以关键字entry(exit)说明,进入(退出)时执行

         为隐式调用,不能中断执行

         入(出口)为进入(退出)状态时最先(后)执行的动作序列,不带条件。

m2)do事件

 UML标准事件

 以关键字do说明,在入口与出口事件之间执行

 do引用嵌套子图的全部动作序列

 执行可被中断。

m3include事件

 UML标准事件

 以关键字include说明,在入口与出口事件之间执行

 标识内嵌子图的引用,后动作表达式含该子图名称

m4)自定义事件
Ø消息:调用事件和信号事件

1)调用事件

 对象之间,一个对象请求另一个对象的操作,标在迁移线上。

 语法格式:事件名(参数表)

 可以同步或异步调用

第六章 状态图

Ø2)信号事件

 用发送/接收信号图符标识信号事件。

 发出信号图符表明发出子句,接收信号图符含有事件名称。

第六章 状态图

Ø时间事件:
1after事件

   时间事件,以“after(时间表达式)/动作” 说明。

   括号内条件为真时执行

2defer事件

   延迟事件,格式为“事件名/defer”

 本状态不处理,推迟到另一个状态才处理的事件。

3when事件

   改变事件,格式为“when(逻辑表达式)/动作” 。

  条件为真时触发迁移。

第六章 状态图

m引起状态迁移触发的条件

迁移语法格式:

             事件[条件] / 动作表达式   发送子句

     条件是一个由方括号围起的关系或逻辑表达式。若状态迁移既有事件又有条件,则事件发生且条件成立时触发状态迁移。

m触发状态迁移的动作表达式

迁移语法格式:

             事件[条件] / 动作表达式   发送子句

    动作表达式是一个触发状态迁移时可执行的过程表达式。表达式可引用该状态所表示的对象的属性、操作,或者事件参数。一个状态迁移可有多个动作表达式,但是必须用“/”隔开。动作表达式从左到右执行,不允许嵌套或递归。

    例如: [计时器=超时]/下降(第一层)

状态迁移的分类

第六章 状态图

第六章 状态图

m各种转换之间的区别
Ø进入和退出转换:

      当进入一个状态时,执行某个动作;或当退出某个状态时,执行什么动作。这时就可以使用进入和退出转换来表示

Ø内部转换:用来处理一些不离开该状态的事件
第六章 状态图

第六章 状态图

状态图之间的通信联系

第六章 状态图

4 活动图与状态图比较

m状态图可以表示一个对象在生存期的行为、所经历的状态序列、引起状态转移的事件以及因状态转移而引发的动作。   
m   
m活动图用来表示完成一个操作所需要的活动,或者是一个用例实例(场景)的活动。活动图实际上为一个流程图,描述系统从一个活动到另外一个活动的控制流,适合描述动作流和并发处理行为。
m相同点
Ø1)使用相同的图形符号。
Ø2)可以描述一个系统或对象在生存周期的状态或行为。
Ø3)可以描述系统或对象在多进程中的同步或异步操作的并发行为。
Ø4)可以用条件分支来描述系统或对象的行为控制流。
m不同点
Ø1)触发状态(活动)发生迁移的机制不同。

        活动状态迁移不需要事件触发,活动执行完毕可以直接进入下一个活动状态。

Ø2) 描述多个对象共同完成一个操作的机制不同。
v 活动图置于责任区(泳道)中,责任区将活动按责任目标和组织归属的原则分类。
v 状态图采用状态嵌套方式描述多对象协作。

小结

m活动图和状态图都是对系统行为进行建模技术。
m活动图本质上上流程图,但能展示并发和控制分支。
m状态图展示的上单个对象在生命周期内不同状态的控制流。
m对系统动态方面建模意义重大。