第六章 状态图

目录

m 1 .状态图概述
m 2. 状态图基本符号
m 3. 状态图组成要素
m 4. 活动图与状态图比较

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)说明,进入(退出)时执行

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

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

m 2)do 事件

 UML标准事件

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

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

 执行可被中断。

m 3 include 事件

 UML标准事件

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

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

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

1)调用事件

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

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

 可以同步或异步调用


Ø 2 )信号事件

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

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


Ø 时间事件:
1 after 事件

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

   括号内条件为真时执行

2 defer 事件

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

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

3 when 事件

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

  条件为真时触发迁移。


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

迁移语法格式:

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

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

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

迁移语法格式:

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

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

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

状态迁移的分类



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

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

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


状态图之间的通信联系


4 活动图与状态图比较

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

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

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

小结

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








  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值