UML 状态机视图

本文详细介绍了UML状态机的概念,包括状态机的定义、触发状态变化的事件、不同状态的解析以及状态之间的转换。通过学习,读者可以深入理解如何使用UML来描述系统的动态行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述

       状态机视图是通过对类的对象的生存周期建立模型来描述对象随着时间变化的动态行为。每一个对象都被看做通过事件进行探测反应来与外界其他部分进行交互的独立实体。事件是对象可以追踪到的,存在一系列运动状态的变化。状态就是对象的一组描述事件的属性值。状态机就是对象在对事件反应属性值描述和特定的行为。下面是我想到的一个例子:一台微波炉,具有关机状态,加热状态,保温状态等等。微波炉的每一个状态都有一些特定的行为,例如关机状态可以开机进入加热或者保温状态。

2.状态机

      状态机是展示状态与状态转换的图。通常一个状态机依附于一个类,描述一个类的实例对接收到事物做出的反应。状态机也可以依附于操作,用例和协作并描述它们的执行过程。状态机是一个类的对象所有可能的生命历程模型。状态机是一个对象的局部视图,一个将对象与其外部世界分离并独立考察其行为的图。

3.事件

       事件就是在时间和空间上发生的值得注意的事情,它是瞬时的。如果某一事情对状态机造成了影响,那么在状态机模型中它是一个事件。当我们使用事件这一个词的时候,通常是指一个事件的描述符号,即对所有具有相同型式的独立发生事件的描述。一个事件的具体发生叫做事件的实例。对类而言,信号利用泛化关系进行组织,以使不同的类共享公共的结构。事件可以明确的或者隐含的分为:信号事件、调用事件、改变事件、时间事件等等。下面是一个事件详细信息表:



      信号事件。信号事件通过发送信号来改变状态机的状态。例如:遥控器控制的机器。信号在类元中用<<signal>>表示,信号的参数被声明为属性。信号间可以存在泛化关系。信号间的层次图如下:



     调用事件是一个对象对调用的接受,这个对象用状态转化转换完成操作。举个非常有趣的例子,有一家旅馆,提供餐饮和住宿。你去这家旅馆说是要吃饭。那么这家旅馆会转换成为饭店的角色提供餐饮。如果想要住宿,那么这家旅馆就会转换成为旅店的角色。这种形式多处于集合了多个角色功能于一身的那种情形。
     改变事件。当是依赖于特定属性值的布尔表达式所表示的条件满足时,事件发生改变。这是特定条件得到满足的一种声明途径,一定要小心的使用它,因为它表示一种具有时间持续性的并且可能涉及全局的计算声明。好处是模型集中了真正的依赖关系上,坏处是模糊了修改系统潜在值与最终活动之间的因果关系。
    时间事件。是指随着时间的变化导致状态的转换。例如session的时间设置,超期自动切换为非登录状态。

4.状态

       状态描述了一个类对象的生命周期中的一个时间段。它可以用三种附加方式说明:在某些方面性质相似的一组对象值,一个对象等待一些事情发生时的一段时间,对象执行持续活动时的一段时间。在状态机中,一组状态由转换相连,虽然转换连着两个状态,但是状态转换只能由转换出发的状态处理。下面是状态的表示图:


5.转换

       通常,定义一个转换要有引发转换的触发器事件,监护条件,转换的动作和转换的目标状态。下面的图表列出了几种转换和由转换引起的隐含动作:



      外部转换是一种改变活动状态的转换,它是最普通的一种转换。它用从源状态到目标状态的箭头表示,其他属性用字符串添加到箭头旁边。如下图所示:



      触发器事件是引起转换的事件。事件可有参数,供转换使用。如果一个信号有后代,那么任何后代都可以引起状态转换。对象一次只处理一个事件,在对象处理事件时转换必须激发,事件过后是不被记住的。
      监护条件。转换可能具有一个监护条件,监护条件是一个布尔表达式。它会引用对象的属性值和触发事件的参数进行逻辑判断,以确定状态是否转换。
      完成转换。没有标明触发器事件的转换是由状态中的活动的完成引起的。完成转换也可以带监护条件,监护条件在转换完成后被赋值。
      动作是转换被引起时,它对应的动作被执行。动作的种类如下图所示:



      状态改变。当动作执行完毕后,转换的目标状态被激活,这时会触发出口动作或入口执行动作。
      嵌套状态,状态是可以嵌套的。内部转换有源状态,但是没有目标状态。内部转换只是改变内部的环境,并不会激发转换。下图是内部转换、出口入口动作图:
 


6.组成状态

       组成状态是一个可以分解为顺序的或者并发的状态的子状态的状态。状态的种类如下图所示:



       组成状态是一种复合形式的状态。下面一张图展示了一个并发子状态的状态机的图例:



       一个状态机可以引用其他状态机的一部分,这提高了重用性。下面一张图演示了子状态机的使用:



      
       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值