欢迎来到天天文库
浏览记录
ID:17950805
大小:171.93 KB
页数:10页
时间:2018-09-11
《uml电梯系统建模》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.需求陈述一个无人值守电梯的轿箱通常停放在大楼的第一层.当某楼层有乘客按下按钮,电梯轿箱便会按照指令上升到该楼层接乘客,然后按照乘客的指令升降到指定楼层,到达后的乘客走下电梯。电梯轿箱停在该楼层,等待下一个乘客的按钮指令。系统对于等待的时间有一定的限制,在时间限制之内又有乘客按下按钮,电梯则重复前面的动作,电梯轿箱仍按照指令上升或下降到指定楼层,到达后,电梯轿箱继续等待下一个乘客的按钮指令,在每次的等待中,如果等待时间超过限制,电梯轿箱会自动返回到大楼的第一层,在那里继续等待乘客。2.1用例图电梯系统用例图如下,主要包括用例、
2、角色和关系。用例图乘客作为电梯里的角色,参与系统的5个用例,呼叫电梯、指定楼层、打开电梯门、关闭电梯门和拨打报警电话。工作人员参与接受报警的用例。2.2类图类图对系统进行静态建模,静态图主要描述系统功能需求-系统给最终用户提供服务。类图描述一组类、接口和协作,及他们的关系。类图各类的详细声明如下:(1)Button类一个抽象类,电梯停或启动的指示器。(2)Elevator_button电梯内的人需要到达的楼层。(1)Building_button处于某楼层的人需要进入电梯上行或下行的指示。(2)help_button紧急情况下的
3、报警。(3)controlor用来控制电梯的上行、下行、关门、开门以及电梯调度工作等。BState:电梯或楼层按钮的状态,若按下,则给控制器发送一个上行下行命令,否则,控制器控制电梯开门或停止。3.1建动态模型l用户A在3楼按上行按钮呼叫电梯,用户希望到7楼去l上行按钮指示灯亮l一部电梯到达3楼,电梯内的用户B已按下到9楼的按钮l上行按钮指示灯熄灭l电梯开门l用户A进入电梯l用户A按下电梯内到7楼的按钮l7楼按钮指示灯亮l电梯关门l电梯到达7楼l7楼按钮指示灯熄灭l电梯开门l用户B走出电梯l电梯在等待超时到后关门l电梯载着用户A
4、继续下行到达1楼3.2异常情况l用户A在3楼按上行按钮呼叫电梯,用户A希望到1楼去l上行按钮指示灯亮l一部电梯到达3楼,电梯内的用户B已按下了到9楼的按钮l上行按钮指示灯熄灭l电梯开门l用户A进入电梯l用户A按下电梯内到1楼的按钮l1楼按钮指示灯亮l电梯在等待超时后关门l电梯上行到9楼l电梯内9楼按钮指示灯熄灭l电梯开门l用户B走出电梯l电梯在等待超时后关门l电梯载着用户A继续下行到达1楼3.3状态图状态图4.1序列图序列图4.2协作图协作图5.其它工作及部分代码:电梯设置l电梯分为三种状态:静止,上升,下降。跟随着电梯还有一个
5、数据,就是电梯当前所在楼层数floor_lift,其中floor_lift<=30&&floor_lift>=1。l在系统中我们用数组来保存进入电梯的乘客的信息,即目标层数。。l关于超时问题,我们定义时间上限为30分钟。乘客分析l乘客的需求分为“上”和“下”两种。此外乘客还有当前层数floor_from以及目标层数floor_to。当然floor_from、floor_to也是在1~30之间的整数。初始化l电梯需要初始化,其中状态为静止state=0,层数floor_lift设置为1。目标层数数组需要初始化,即:for(i=0;
6、i<30,i++)lfloor[i]=0;电梯工作分析电梯的上升下降电梯的上升下降设置为一秒一层,即Switch(state)//state分为0—静止,1—下降,2—上升{case0:break;case1:floor_lift-=1;break;case2:floor_lift+=1;break;default:cout<<”errorstate”<7、loor_lift进行比较,floor_from>floor_lift,那么把电梯状态改为上升,相对的当小于时改为下降。当floor_from=floor_lift的时候,将乘客的信息加入数组,将乘客目标层数对应的数组元素设置为1。即floor[floor_to-1]=1。此时将电梯的状态改为用户的目标方向,即state==direction。电梯为上升或下降状态时将用户输入与电梯状态相比:if((direction==state)&&(floor_lift==floor_from))//用户目标方向与电梯方向一致时floor[8、floor_to-1]=1;//允许用户进入并且输入目标层数超时设置当电梯的状态state为0时开始计时While(i<1800)//每秒检测一次,静止状态保持30分钟则回到一层{If(state=!0)//检测状态,一旦状态改变,则停止计时break;Slee
7、loor_lift进行比较,floor_from>floor_lift,那么把电梯状态改为上升,相对的当小于时改为下降。当floor_from=floor_lift的时候,将乘客的信息加入数组,将乘客目标层数对应的数组元素设置为1。即floor[floor_to-1]=1。此时将电梯的状态改为用户的目标方向,即state==direction。电梯为上升或下降状态时将用户输入与电梯状态相比:if((direction==state)&&(floor_lift==floor_from))//用户目标方向与电梯方向一致时floor[
8、floor_to-1]=1;//允许用户进入并且输入目标层数超时设置当电梯的状态state为0时开始计时While(i<1800)//每秒检测一次,静止状态保持30分钟则回到一层{If(state=!0)//检测状态,一旦状态改变,则停止计时break;Slee
此文档下载收益归作者所有