注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

薛沛然 廊坊师范学院 九期信息技术提高班

无脑地生活,像白痴一样成长,不给自己留感伤的时间。。。

 
 
 

日志

 
 

uml之状态图(state diagram)  

2013-02-16 17:44:19|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

一基本认识

状态图主要描述一个对象所经历的状态的变化。从状态图中可以看出,一个对象在受到了外界的刺激后,究竟会有什么样的反应。

二基本构成

 1状态

uml之状态图(state diagram) - 薛沛然 - 薛沛然 廊坊师范学院 九期信息技术提高班
 

 

状态名:每个单词首字母要大写

入口动作与出口动作:进入和离开状态时触发的动作

内部活动:当通过入口动作进入状态时,内部动作被触发。当内部动作完成后,等待转移的触发。如果转移已经触发而内部活动还没有结束,那么内部活动终止,进入转移。

2转移

uml之状态图(state diagram) - 薛沛然 - 薛沛然 廊坊师范学院 九期信息技术提高班

 

 转换用于表示一个状态机的两个状态之间的一种关系,即一个在某初始状态的对象通过执行制定的动作并符合一定的条件下进入第二种状态。

外部转移:外部转换是一种改变状态的转换,也是最普通最常见的一种转换。在UML中,它用从源状态到目标状态的带箭头的线段表示,其他属性以文字串附加在箭头旁。

 uml之状态图(state diagram) - 薛沛然 - 薛沛然 廊坊师范学院 九期信息技术提高班

 自转移:建模时对象会收到一个事件,该事件不会改变对象的状态,却会导致状态的中断,这种事件被称为自转移。它打断当前状态下所有的活动,使用对象退出当前状态,然后又返回该状态。

uml之状态图(state diagram) - 薛沛然 - 薛沛然 廊坊师范学院 九期信息技术提高班

 在此图中,自转移首先将当前状态全部停止,然后执行该状态的出口动作,接着执行转移。然后返回到状态,开始执行入口动作。

内部转移:

在建模时,有时会在不离开一个状态的情况下处理一些事情。如图书馆管理系统中系统管理员可以对借阅者信息进行查询,在系统列出借阅信息时还可以对其进行修改,此时并没有离开信息列表状态。

内部转移只有源状态而没有目标状态,转移激发的结果并不改变状态本身,不需要执行入口动作和出口动作。

3同步

使用同步条可以显示并发转移,并发转移中可以有多个源状态和目标状态。状态机图中使用到同步 是为了说明某些状态在哪里需要跟上或等待其他状态。

uml之状态图(state diagram) - 薛沛然 - 薛沛然 廊坊师范学院 九期信息技术提高班

 上图中,从开始状态将控制流分为两个同步分别进入NewState2和NewState3当两个控制流同时到达同步条时,两条控制流才汇合成一条控制流进入下一阶段。

4事件

事件是一个在时间和空间上都占据一定位置的有意义的规约,他能指示状态之间转移的条件。而事件的发生总能触发状态的转移。

调用事件: 一个调用事件代表一个操作的调用,它是同步的。当一个对象调用另一个具有状态机对象的某个操作时,控制就从发送者传送到接受者。该事件触发转移,完成操作后,接受者转到一个新的状态,并将控制返还给发送者。

uml之状态图(state diagram) - 薛沛然 - 薛沛然 廊坊师范学院 九期信息技术提高班
在一个完整的uml中,调用事件往往是类图中定义的一些方法事件。

信号事件:信号时对象异步地发送并由另一对对象接受的具有名字的对象。信号既可以作为状态机中的一个状态转移的动作而别发送也可以作为交互中的一条消息而被发送。信号事件可以定义任何需要的事件,而不用考虑是否存在该事件的对象。

uml之状态图(state diagram) - 薛沛然 - 薛沛然 廊坊师范学院 九期信息技术提高班
变化事件:变化事件是状态中的一个变化或者某些条件满足的事件。在uml中变化事件使用关键字when来标记。它隐含了对于控制条件的连续测试。相当于变成语言中的循环。
uml之状态图(state diagram) - 薛沛然 - 薛沛然 廊坊师范学院 九期信息技术提高班
 时间事件:时间事件是经过一定的时间或者到达某个绝对的时间后发生的事件。
uml之状态图(state diagram) - 薛沛然 - 薛沛然 廊坊师范学院 九期信息技术提高班
 延迟事件:在uml中,建模人员有时需识别某些事件,延迟对它们的影响直到以后某个合适的时刻才去执行。这时可以使用延迟事件。关键字是defer.
5动作
动作是由对象的操作和属性组成。 也可以由事件说明中的参数组成。在一个状态中,允许有多个动作。动作说明当事件发生时发生了什么。
entry型:标记入口动作,用来指定进入状态时发生的动作。在许多的情况下,当对象进入一个状态时,建模人员需要指定适时的动作。比如:图书管理系统中,无论是系统管理员还是图书管理员,都需要登录,每当进入帐号输入状态时,都应该清空输入框中的字符,此时应由entry来进行。entry/clear()
exit型:标记出口动作。指定一个状态将被另一个状态取代时,发生的动作。例如:在图书管理系统中,在离开帐号输入状态时,系统都需要对其输入内容检测。exit/test()
do型:标记内部活动。用来指定处于某种状态时发生的活动。当对象处于某个状态时,它可以进行与该状态关联的相关工作。这些工作被称为活动。执行顺序为入口,内部,出口
include型:引用子状态机状态。它的语法为:include子状态机名。这样可以调用另一个状态机
event型:语法为event-name(parameters)[guard-condation]/action.当event-name发生时,(守卫条件满足),会触发。(不理解。事件怎么就成了动作了???)
6组成状态
在简单状态外,还有一种可以包含嵌套子状态的状态。又称为组成状态。
顺序子状态或互斥子状态:
如果一个组成状态的子状态对应的对象在其声明周期内的任何时刻都只能处于一个子状态,也就是说状态机图中多个子状态是互斥的,不能同时存在。在此种图中最多只能有一个初态和一个终态。
uml之状态图(state diagram) - 薛沛然 - 薛沛然 廊坊师范学院 九期信息技术提高班
 如上图的使用IC卡公用电话状态,两大基本状态,unused和used不能同时存在。因此,这是一个顺序子状态。
并发子状态:
有时组成状态有两个或多个并发的子状态。并发子状态说明很多事情发生在同一时刻。为了分离不同的活动,组成状态被分解成区域。每个区域都包含一个不同的状态机图,每个状态机图在同一时刻运行。
uml之状态图(state diagram) - 薛沛然 - 薛沛然 廊坊师范学院 九期信息技术提高班
  评论这张
 
阅读(169)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017