- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OO分析-状态图选编
第六章 状态图
人的生命
货物运输定单
可能需要建模的事物:系统、窗口、控制者、事务、设备、自身类型或角色发生变化的事物。
对事物所处的状态及其变迁的考虑:
大多数事物在其生命周期中经历了不同的状态;
在特定的时间,一个事物精确地位于一个状态;
在现实世界存在着引起事物的状态发生变化的事件;
事物在其状态间按次序转化;
事物从一个状态到另一个状态的转化通常是即时的。
当事件发生时,事物可能需要采取一些动作。 ;事物的一般生命周期形式
目前主要有两种对生命周期进行建模的形式:
■周期性生命周期
如:飞机、微波炉
■出生-死亡生命周期
把状态图赋予一个对象
一个对象的状态: 创建、状态变化序列、撤消
只是要对这样的事物进行状态考察:它有明确的生命期阶段(状态),且需要通过状???分析对其复杂性进行深刻地认识。
在实际系统中,无法建立全系统的状态图。
为了可视化、详述、构造和文档化一个单独对象的动态特性,状态图可以被附加到类(把一个状态模型作为定义一个类的一部分)、用况或整个系统上。 ;什么是对象的状态?
关于对象状态的不同解释
状态 = 属性
只是一个别名,没有更多的意义
状态 = 属性值
没错,但没有必要辨别这么多状态 ;例1:一个容量为1000的栈,需要区分几种状态*?;例2:为“设备”对象设立一个属性,名为“状态”
属性值:关闭、待命、运行、故障等。
在这里,“状态”是一个专门设置的属性,它的值反映了实际事物的状态。;;5.3 .1 概念与表示法
1、事件
从一般意义上讲,事件是指在时间和空间上可以定位并具有实际意义、值得注意的所发生的事情。
在OO中,事件是对一个可观察的事情的规格说明,这种事情的发生可以引发状态的转换。
事件可以分为多种:
? 1)信号事件 一个对象对一个信号实例(在不引起混淆的情况下,以下简称信号)的接收,导致一个信号事件。
可在一个类的符号中加一个附件的信号栏,列出其能接收的信号。
把这样的事件的特征标记放由它所触发的转换上。
信号可以作为状态机中的状态转换上的动作被发送,或者作为交互中的一个消息被发送。; 2) 调用事件
对操作的调用的接收(这样的操作由接收事件的对象实现)
调用事件一般来说是同步的
3)时间事件
在指定事件(经常是当前状态的入口)后,经过了一定的时间或到了指定日期/时间,导致一个时间事件。时间经历事件能用后跟有计算时间量的表达式的关键词“after”表示,比如“after (5 秒)”或者”after (从状态A退出后经历了10秒)”。如果没指明时间起始点,那么从进入当前状态开始计时。使用关键字at 来指出在某个绝对时间点上发生的时间事件。例如,时间事件at(1 Jan 2005, 12:00 UT)指出该事件发生在格林尼治时间2005 年1 月1 日的中午12点。
;4)改变事件(条件变为真事件)
用布尔表达式描述的指派条件变为真,就导致了一个改变事件。无论表达式的值何时由假变成真,事件都发生。与改变事件关联的布尔表达式的值变成真时事件发生一次,即使之后布尔表达式的值变为假,产生的事件仍将保持,直到它被处理为止。
用后有跟布尔表达式的关键词“when”表示变为真的条件,比如
when (altitude 1000) 可以把其看作是连续测试条件,直到它为真。
; 通常事件后面还跟有一个监护条件(布尔表达式)。当事件发生后,还要检验其监护条件,如果监护条件为假,则该事件不触发转换。
可以按如下的格式定义事件:
事件名 ‘(‘用逗号分隔的参数列表‘)’
参数的格式如下:
参数名 ‘:’ 类型表达式
参数值由监护条件和动作表达式使用. ;2、状态
状态是一个对象的生命期的一个阶段,在该阶段中该对象要满足一些特定的条件、执行特定的活动或等待某个(些)事件。
把状态表示成四角均为圆角的矩形(看下图),并把状态的名称放在其中。
可以有选择地把表示状态的矩形划分成由水平线相互分隔的多个分栏:
a)?????? 名称分栏
可以在该分栏中放置状态名。没有名称的状态是匿名的,但同一张图中的匿名状态是各不相同的。
b) 内部转换分栏
用该分栏给出对象在这个状态中所执行的内部动作或活动的列表。各表项的表示法的基本格式为:
事件名[‘(’用逗
文档评论(0)