电梯控制模型
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
状态转换图
状态转换图(简称为状态图)通过描绘系统的状态 及引起系统状态转换的事件,来表示系统的行为。
状态是任何可以被观察到的系统行为模式,一个 状态代表系统的一种行为模式。在状态图中用圆形框 或椭圆框表示状态,通常在框内标上状态名。状态规 定了系统对事件的响应方式。系统对事件的响应,既 可以是做一个(或一系列)动作,也可以是仅仅改变系 统本身的状态。通常,在表示状态的框内用关键字 do(后接冒号)标明进入该状态时系统的行为(即所做的 动作)。
3. 把策略形式化
在以上这段描述非形式化策略的文字中,共有八 个不同的名词:按钮、电梯、楼层、运动、大厦、指 示灯、请求和门。这些名词所代表的事物可作为控制 对象的初步候选者。其中,楼层和大厦是处于问题边 界之外的,因此可以忽略;运动、指示灯、请求和门 可以作为其他类的属性,例如,指示灯(的状态)可作 为按钮类的属性,门(的状态)可作为电梯类的属性。 经过上述筛选后只剩下两个候选类,即电梯和按钮。 补充了电梯控制器类之后,得到了图1所示的对象 模型。
图1电梯系统对象模型的第一次迭代
图2 电梯系统对象模型的第二次迭代
三、
建立动态模型
1. 编写脚本 这一步的目的是,决定每一个类应该做的操作。 达到这个目的的一种有效的方法,是列出用户和系统
之间相互作用的典型情况,即写出脚本(包括正常情况
脚本和异常情况脚本)。表1和表2分别是正常情况脚本 和异常情况脚本。
事件是在某个特定时刻发生的事情,它是对引起 系统从一个状态转换到另一个状态的外界事件的抽象。 简而言之,事件就是引起系统状态转换的控制信息。 在状态图中,从一个状态到另一个状态的转换用 箭头线表示,箭头表明转换方向,箭头线上标上事件
名。必要时可在事件名后面加一个方括号,括号内写
上状态转换的条件。也就是说,仅当方括号内所列出 的条件为真时,该事件的发生才引起箭头所示的状态 转换。 图3.7给出了状态图中使用的主要符号。
表1
电梯系统正常情况脚本
· 用户A在3楼按上行按钮呼叫电梯,用一部电梯到达3楼,电梯内的用户B已按下了到9楼的按 钮 · 上行按钮指示灯熄灭 · 电梯开门
· 用户A进入电梯
· 用户A按下电梯内到7楼的按钮
· 7楼按钮指示灯亮 · 电梯关门 · 电梯到达7楼 · 7楼按钮指示灯熄灭 · 电梯开门 · 用户A走出电梯 · 电梯在等待时间到后关门 · 电梯载着用户B继续上行到达9楼
模型的第三次求精结果,如图5所示。
修改了对象模型之后,必须重新审查动态模型和 功能模型,看看是否需要进一步求精。显然,必须修 改功能模型,把数据存储“电梯门”和“请求”标识 为可做类.
图5
电梯系统对象模型的第三次迭代
楼层,当到达由按钮指定的楼层时指示灯熄灭。
C2:除了大厦的最低层和最高层之外,每层楼都有两个 按钮分别指示电梯上行和下行。当这两个按钮之一被 按下时相应的指示灯亮,当电梯到达此楼层时灯熄灭, 电梯向要求的方向移动。
C3:当电梯无升降动作时,关门并停在当前楼层。
二、 建立模型 分析的第一步是构造控制对象模型。在这个步骤 中将抽象出控制对象和它的属性,并用模型图描绘控 制对象及它们彼此之间的关系。控制对象所提供的服 务将在分析后期或设计阶段再确定下来。 为了抽象出问题域中包含的控制对象,可以用下 述三个过程产生候选对象,并对所得到的结果加以精 化。 1、精确地定义问题 应该尽可能简洁地定义所需要的产品,最好只用 一句话来描述目标系统。例如,对电梯系统可以像下 面那样描述。 在一个m层楼的大厦里,用每层楼的按钮和电梯内 的按钮来控制n部电梯的移动。
2. 提出非形式化策略
为了提出一种解决上述问题的非形式化策略,必 须确定问题的约束条件。在上面已经对电梯问题提出 了三种约束。最好能用一小段文字把非形式化策略清 楚地表达出来,对电梯问题来说,解决问题的非形式
化策略可表达如下。
在一幢有m层楼的大厦里,用电梯内的和每个楼 层的按钮来控制n部电梯的运动。当按下电梯按钮以请 求在某一指定楼层停下时,按钮指示灯亮;当请求获 得满足时,指示灯熄灭。当电梯无升降操作时,关门 并停在当前楼层。
表2
电梯系统异常情况脚本
· 用户A在3楼按上行按钮呼叫电梯,但是用户A希望到1
楼
· 上行铵钮指示灯亮 · 一部电梯到达3楼,电梯内用户B已按下了到9楼的按钮 · 上行按钮指示灯熄灭 · 电梯开门 · 用户A进入电梯 · 用户A按下电梯内到1楼的按钮
· 电梯内1楼按钮指示灯亮 · 电梯在等待超时后关门
电梯控制分析
一、 需求陈述 我们将要讨论的是电梯的控制问题,下面给出对 这个问题的描述。 在一幢有m层楼的大厦中需要一套控制n部电 梯的产品,要求这n部电梯根据下列约束条件在楼层间 移动。
C1:每部电梯有m个按钮,每个按钮代表一个楼层。当按 下一个按钮时该按钮指示灯亮,同时电梯驶向相应的
· 电梯上行到达9楼
· 电梯内9楼按钮指示灯熄灭
· 电梯开门
· 用户B走出电梯 · 电梯在等待超时后关门 · 电梯载着用户A下行驶向1楼
2. 画状态转换图 电梯控制器是在电梯系统中起核心控制作用的类, 我们将画出这个类的状态转换图。为简单起见,仅考 虑一部电梯(即n=1)的情况。电梯控制器的动态模 型如图3所示,这个状态图的画法读者可对照电梯系统 的脚本来理解它。
图3.7 状态图中使用的主要符
为了具体说明怎样用状态图建立系统的行为模型,
下面举一个例子。图3.8是人们非常熟悉的电话系统的
状态图。
图3.8 电话系统的状态图
图3 电梯控制器类的动态模型
四、建立功能模型
五、
进一步完善
根据从功能模型中获得的信息,重新审查对象模型
(图2)和动态模型(图3),以便进一步完善控制对象分 析的结果。 增加了“电梯门”类和“请求”类之后,得到对象