张慧的博客

张慧的博客

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  45 Posts :: 0 Stories :: 24 Comments :: 0 Trackbacks

 状态图主要描述一个对象在其生命周期内的状态变化,对象由事件驱动并满足一定的条件从一个状态转换到另一个状态。状态图显示了一个状态机。


下面是一个表示借书的状态图(描述书的状态转换)



状态图都由哪些元素组成呢?

一、初始状态


      初始状态是状态机的起始位置,它不需要事件的触发。一个状态图只能有一个初始状态。状态图总是以初始状态开始,以终止状态结束

二、状态


状态是对象执行某项活动或等待某个事件时的条件。状态可以由以下几部分组成:

1、Name:状态名称
2、Entry/Exit Action:进入和退出动作
3、Internal Transition:内部转移(对事件作出响应,执行一定的动作,但不会发生状态的转换)
4、Do:状态保持不变时执行的动作
5、SubStage:子状态(当状态是复合状态时)
6、Deferred Event:延迟事件(未在本状态中处理,但不被丢弃,而是延迟到其它状态中处理的事件)


下面是一个灯的点燃状态的例子


       如果一个状态比较复杂,那么它还可以拥有子状态,拿上面借书的例子,书的被借状态又可包含两个子状态:被正常借、被续借


三、转移

      上面已经讲过了一种特殊的转移:内部转移,但是这种转移只是响应一定的事件,执行一定的动作,并不会放生状态的转移
下面介绍一下一般转移的格式:


状态的转移一般由三部分组成

1、event(事件):触发状态转移的原因
2、Guard Condition(保卫条件):是一个布尔表达式,当事件被触发时要判断保卫条件的值,值为True才会发生状态的转换
3、Action(活动):状态转换时执行的活动

下面是一个电水壶烧水的状态转换


       当事件turn on放生时,只有水壶内有水(have water)才能由off状态转换到on状态,并发生烧水的动作(Boiling Water)。其实动作也可以放在on状态中。

四、结束状态



结束状态表示状态机执行结束或对象生命的终结,一个状态图可以有多个结束状态


      在实际的应用中,不必为每个对象都创建状态图,而是只为那些比较复杂的,状态比较多的对象创建状态图。状态图是一种很有用的图,它可以帮助我们分析复杂对象的状态转换和对象在什么时候执行什么样的动作。网上购物过程中,我们会经常查看订单的状态,描述订单的状态机就是一个比较经典的状态图,网上有很多关于订单状态图的例子,大家可以查一下,我在这里就不再赘述了。
posted on 2012-08-08 23:38 张慧 阅读(6895) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: