OO2分析4-其他模型2

上传人:野鹰 文档编号:3118975 上传时间:2017-07-30 格式:PPT 页数:58 大小:1.31MB
返回 下载 相关 举报
OO2分析4-其他模型2_第1页
第1页 / 共58页
OO2分析4-其他模型2_第2页
第2页 / 共58页
OO2分析4-其他模型2_第3页
第3页 / 共58页
OO2分析4-其他模型2_第4页
第4页 / 共58页
OO2分析4-其他模型2_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《OO2分析4-其他模型2》由会员分享,可在线阅读,更多相关《OO2分析4-其他模型2(58页珍藏版)》请在金锄头文库上搜索。

1、1,第五章 建立辅助模型,2017/9/17,Junwei Ge,2,Microwave Oven,如何获得行为?,状态图 人的生命货物运输定单 可能需要建模的事物:系统、窗口、控制者、事务、设备、自身类型或角色发生变化的事物。对事物所处的状态及其变迁的考虑:大多数事物在其生命周期中经历了不同的状态;在特定的时间,一个事物精确地位于一个状态;在现实世界存在着引起事物的状态发生变化的事件;事物在其状态间按次序转化;事物从一个状态到另一个状态的转化通常是即时的。当事件发生时,事物可能需要采取一些动作。,事物的一般生命周期形式: 目前主要有两种对生命周期进行建模的形式: 周期性生命周期 如:飞机、微

2、波炉 出生-死亡生命周期 把状态图赋予一个对象 一个对象的状态:创建、状态变化序列、撤消 它有明确的生命期阶段(状态),且需要通过状态分析对其复杂性进行深刻地认识。 在实际系统中,无法建立全系统的状态图。 为了可视化、详述、构造和文档化一个单独对象的动态特性,状态图可以被附加到类(把一个状态模型作为定义一个类的一部分)、用例或整个系统上。,什么是对象的状态?关于对象状态的不同解释状态 = 属性 只是一个别名,没有更多的意义状态 = 属性值没错,但没有必要辨别这么多状态,对象技术词典的另一种定义:对象或者类的整体行为(例如响应消息)的某些规则所能适应的(对象或类的)状况、情况、条件、形式或生存周

3、期阶段。按某种规定,按对象的属性值划分等价类,2017/9/17,Junwei Ge,6,States,States are used to abstract each stage of a lifecycleLight Globe - on, off, brokenLibrary Book - available, borrowed, lostCar - stopped, accelerating, decelerating, cruisingStates are determined from the rules, policies, regulations and physical la

4、ws of the domain being modeled,例1:一个容量为1000的栈,需要区分几种状态*?,在此例中 ,每一种状态是一组使对象呈现共同行为规则的属性值组合。,例2:为“设备”对象设立一个属性,名为“状态”。 属性值:关闭、待命、运行、故障等。 在这里,“状态”是一个专门设置的属性,它的值反映了实际事物的状态。,状态图示例,概念与表示法1、事件 从一般意义上讲,事件是指在时间和空间上可以定位并具有实际意义、值得注意的所发生的事情。 在OO中,事件是对一个可观察的事情的规格说明,这种事情的发生可以引发状态的转换。,2017/9/17,Junwei Ge,11,Events,E

5、vents are abstractions of incidents that occur in the domain being modeledLight Globe - power applied/removed, filament breaksLibrary Book - book is requested, book is lost, book is returnedCar - brakes applied/released, accelerator pushed/released, engine started/stoppedEvents tell us that somethin

6、g has happened,通常事件后面还跟有一个监护条件(布尔表达式)。当事件发生后,还要检验其监护条件。如果监护条件为假,则该事件不触发转换。可以按如下的格式定义事件:事件名(用逗号分隔的参数列表)参数的格式如下:参数名: 类型表达式参数值由监护条件和动作表达式使用.,2017/9/17,Junwei Ge,13,Events - Representation,In addition to showing Events on the State Chart, they can also be shown on Class Diagrams,概念与表示法1、事件事件可以分为多种: 1)信号

7、事件 一个对象对一个信号实例(在不引起混淆的情况下,以下简称信号)的接收,导致一个信号事件。 可在一个类的符号中加一个附件的信号栏,列出其能接收的信号。 信号可以作为状态机中的状态转换上的动作被发送,或者作为交互中的一个消息被发送。,2)调用事件 对操作的调用的接收(这样的操作由接收事件的对象实现)。调用事件一般来说是同步的。 3)时间事件 经过了一定的时间或到了指定日期/时间,导致一个时间事件。 时间经历事件能用后跟有计算时间量的表达式的关键词“after”表示,例如: “after (5 秒)”或者”after (从状态A退出后经历了10秒)”。 如果没指明时间起始点,那么从进入当前状态开

8、始计时。 使用关键字at来指出在某个绝对时间点上发生的时间事件。例如,at(1 Jan 2005, 12:00 UT)指出该事件发生在格林尼治时间2005 年1 月1 日的中午12点。,4)改变事件(条件变为真事件) 用布尔表达式描述的指派条件变为真,就导致了一个改变事件。与改变事件关联的布尔表达式的值变成真时事件发生一次,即使之后布尔表达式的值变为假,产生的事件仍将保持,直到它被处理为止。 用后有跟布尔表达式的关键词“when”表示变为真的条件,比如 when (altitude 1000) 可以把其看作是连续测试条件,直到它为真。,2、状态 状态是一个对象的生命期的一个阶段。在该阶段中该对

9、象要满足一些特定的条件、执行特定的活动或等待某个(些)事件。 状态表示成四角均为圆角的矩形,并可以分栏: a) 名称分栏 b) 内部转换分栏:列出对象在这个状态中所执行的内部动作或活动。 各表项的表示法的基本格式为:,延迟事件 延迟事件是指在当前状态下暂不处理,但将推迟到该对象的另一个状态下排队处理的事件。 用特殊的动作defer表明一个事件被延迟: 事件/defer 延迟事件形成了一个事件列表。 如果一个事件发生,并被列为延迟事件,则进入队列。 一旦对象进入一个不延迟这些事件的状态,就按某种算法从队列中除掉这些事件,这些事件开始发挥作用。有可能在某时刻要撤消延迟事件。 伪状态 初始状态是状态

10、图的缺省开始状态,终止状态是状态图执行已经毕后的结束状态。,2017/9/17,Junwei Ge,19,State Transition Tables,2017/9/17,Junwei Ge,20,Finding new Transitions,2017/9/17,Junwei Ge,21,Finding new States and Events,3、动作 动作是在状态内或在状态转化时所执行的操作,是原子的和即时的。 动作可分为:设置或修改本对象的属性操作;向一个对象发送信号;调用另一个对象的一个可见性为公共的操作;创建或撤消对象;返回一个值或值集;在转换中、在状态的入口、在一个对象处于一

11、个状态的整个期间或在状态的出口,都是执行动作的时机。,保留了一些动作标号,它们不能用作事件名。1) entry/进入动作表达式 在进入状态时首先执行该动作。不能有参数或监护条件。 2)exit/退出动作表达式 在退出状态时最后执行该动作。不能有参数或监护条件。 3)do/活动 这个标号标识正在进行的活动(“do 活动”)。活动是一个动作表达式,它在执行中可以被事件中断。,活动: 在对象处于一个状态中的整个阶段执行的一个动作或动作的集合。 活动不是原子的,在执行中可以被事件打断。 用特殊的内部转换do来说明执行了进入动作后在一个状态内部所做的工作。 一个do转换的活动可能命名另一个状态机(子状态

12、), 也可以说明一个动作序列如do/op1(a);op2(b);op3(c) 。 动作是从不中断的,但动作序列是会中断的。也即,在每两个动作之间(由分号分开),由于事件的出现,导致一个离开此状态的转换。,4、状态转移 状态转换状态间的转移 转换是两个状态之间的一种关系,表示当一个特定事件出现时,如果满足一定的条件,对象就从第一个状态(源状态)进入第二个状态(目标状态),并执行一定的动作。转换本身也是原子的。,源状态,目标状态,事件名(用逗号分隔的参数表)监护条件 /动作表达式,事件可能有参数,这样的参数可由转换中的监护条件和动作使用,也可由与源状态和目标状态相关的退出和进入动作分别使用。,动作

13、表达式是由一些动作组成的动作序列。 监护条件是布尔表达式,根据触发事件的参数和拥有这个状态机的对象的属性和链来书写这样的布尔表达式。 如果表达式取值为真,则触发转换; 如果为假,则不触发转换,而且如果没有其他的转换被此事件所触发,则该事件丢失。 在一个状态中,当事件发生时,根据监护条件决定触发那个转换。,对于这样的状态的改变,把转换称为“点火”。 如果转换点火,就执行动作表达式(如果有的话)。 每次处理一个事件。 如果事件没有触发任何转换,就丢弃它。 如果在同一个顺序区域(不是在不同的并发区域)里触发了多于1个转换,就只对一个点火。 如果这些相冲突的转换具有相同的优先权,就随机地选择和触发一个

14、。转换示例: right-mouse-down(location)location in window/object := pick-object(location); 触发到自身的转换,要先退出当前状态,再进入该状态,这样要执行退出动作和进入动作。 即使发生了事件且执行了相应的动作,对象仍然处于原来的状态,故把这样的事件触发的转换称为内部转换。 触发内部转换,不需要退出当前状态。,EnterPassword,entry/password.reset()exit/password.test()digit/handle characterClear/password.reset()help/display helpprint/deferdo/suppress echo,内部转换,延迟事件,内部活动,入口和出口动作,状态转换状态内的转移:,5、状态图 一个状态图描述一个对象在其生命期内响应事件所经历的状态序列,以及对这些事件所做出的反应。 通常用状态图描述类的行为,也可以用它描述其他模型实体(如用例、参与者、子系统)的行为。,状态图示例,例题1 下图描述了一个负责监视某些传感器的控制器的状态机。,clearing,例2 绘制一个状态图,它能分析如下格式的字符流:字母串;如deFCAccount;,Waiting,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号