UML电梯系统建模

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.需求陈述

一个无人值守电梯的轿箱通常停放在大楼的第一层.当某楼层有乘客按下按钮,电梯轿箱便会按照指令上升到该楼层接乘客,然后按照乘客的指令升降到指定楼层,到达后的乘客走下电梯。电梯轿箱停在该楼层,等待下一个乘客的按钮指令。系统对于等待的时间有一定的限制,在时间限制之内又有乘客按下按钮,电梯则重复前面的动作,电梯轿箱仍按照指令上升或下降到指定楼层,到达后,电梯轿箱继续等待下一个乘客的按钮指令,在每次的等待中,如果等待时间超过限制,电梯轿箱会自动返回到大楼的第一层,在那里继续等待乘客。2.1 用例图

电梯系统用例图如下,主要包括用例、角色和关系。

用例图

乘客作为电梯里的角色,参与系统的5个用例,呼叫电梯、指定楼层、打开电梯门、关闭电梯门和拨打报警电话。工作人员参与接受报警的用例。

2.2 类图

类图对系统进行静态建模,静态图主要描述系统功能需求-系统给最终用户提供服务。类图描述一组类、接口和协作,及他们的关系。

类图

各类的详细声明如下:

(1)Button类

一个抽象类,电梯停或启动的指示器。

(2)E levator_button

电梯内的人需要到达的楼层。

(3)B uilding_button

处于某楼层的人需要进入电梯上行或下行的指示。

(4)help_button

紧急情况下的报警。

(5)controlor

用来控制电梯的上行、下行、关门、开门以及电梯调度工作等。

BState:电梯或楼层按钮的状态,若按下,则给控制器发送一个上行下行命令,否则,控制器控制电梯开门或停止。

3.1建动态模型

●用户A在3楼按上行按钮呼叫电梯,用户希望到7楼去

●上行按钮指示灯亮

●一部电梯到达3楼,电梯内的用户B已按下到9楼的按钮

●上行按钮指示灯熄灭

●电梯开门

●用户A进入电梯

●用户A按下电梯内到7楼的按钮

●7楼按钮指示灯亮

●电梯关门

●电梯到达7楼

●7楼按钮指示灯熄灭

●电梯开门

●用户B走出电梯

●电梯在等待超时到后关门

●电梯载着用户A继续下行到达1楼

3.2异常情况

●用户A在3楼按上行按钮呼叫电梯,用户A希望到1楼去●上行按钮指示灯亮

●一部电梯到达3楼,电梯内的用户B已按下了到9楼的按钮●上行按钮指示灯熄灭

●电梯开门

●用户A进入电梯

●用户A按下电梯内到1楼的按钮

●1楼按钮指示灯亮

●电梯在等待超时后关门

●电梯上行到9楼

●电梯内9楼按钮指示灯熄灭

●电梯开门

●用户B走出电梯

●电梯在等待超时后关门

●电梯载着用户A继续下行到达1楼

3.3状态图

状态图4.1序列图

序列图

4.2协作图

协作图

5. 其它工作及部分代码:

电梯设置

●电梯分为三种状态:静止,上升,下降。跟随着电梯还有一个数据,

就是电梯当前所在楼层数floor_lift,其中floor_lift<=30&&floor_lift>=1。

●在系统中我们用数组来保存进入电梯的乘客的信息,即目标层数。。

●关于超时问题,我们定义时间上限为30分钟。

乘客分析

●ﻩ乘客的需求分为“上”和“下”两种。此外乘客还有当前层数fl

oor_from以及目标层数floor_to。当然floor_from、floor_to也是在1~30之间的整数。

初始化

●ﻩ电梯需要初始化,其中状态为静止state=0,层数floor_lift

设置为1。目标层数数组需要初始化,即: for(i=0;i<30,i++)

●ﻩﻩfloor[i]=0;

电梯工作分析

电梯的上升下降

电梯的上升下降设置为一秒一层,即

ﻩSwitch(state) //state分为0—静止,1—下降,2—上升{

ﻩcase 0:

ﻩbreak;

ﻩﻩcase1:

ﻩﻩfloor_lift-=1;

ﻩbreak;

ﻩcase 2:

ﻩﻩfloor_lift+=1;

ﻩbreak;

ﻩﻩdefault:

ﻩcout<<”error state”<

}

静止状态检测

ﻩ当数组全部为0时,将state设置为0.

电梯为静止状态时

ﻩ用户输入,信息分为direction和floor_from。Floor_from跟电梯所在楼层floor_lift进行比较,floor_from>f loor_lift,那么把电梯状态改为上升,相对的当小于时改为下降。当floor_from=floor_lift的时候,将乘客的信息加入数组,将乘客目标层数对应的数组元素设置为1。即floor[floor_to-1]=1。

ﻩ此时将电梯的状态改为用户的目标方向,即state==direction。

电梯为上升或下降状态时

ﻩ将用户输入与电梯状态相比:

if((direction==state)&&(floor_lift==floor_from))ﻩ//用户目标方向与电梯方向一致时

floor[floor_to-1]=1;ﻩﻩ//允许用户进入并且输入目

标层数

ﻩ超时设置

ﻩ当电梯的状态state为0时开始计时

While(i<1800) //每秒检测一次,静止状态保持30分钟则回到一层

{

If(state=!0)ﻩ//检测状态,一旦状态改变,则停止计时

ﻩﻩbreak;

ﻩSleep(1000);

i++;

ﻩ}

State=1; //设置为下降状态,目标层数改为1楼

ﻩfloor[0]=1;

6.设计总结

经过了一个学期的学习和小组成员的共同努力,终于完成了这个作业。由于我们只是在系统的设计思想上进行了统一的分析,并没有进行系统代码的设计,所以每人负责部分的方法可能名字上有些出入,不影响实际设计。虽然完成的效果可能不是很好,但是小组的每个成员都很努力了,我们觉得还是有很多收获的。由于刚刚学习UML这种统一建模语言,对很多概念和问题的理解不是很到位,所以肯定会犯很多错误,希望老师多多指正。不过,虽然遇到好多不懂的问题,但是小

相关文档
最新文档