《UML电梯系统建模.docx》由会员分享,可在线阅读,更多相关《UML电梯系统建模.docx(10页珍藏版)》请在金锄头文库上搜索。
1、1. 需求陈述一个无人值守电梯的轿箱通常停放在大楼的第一层当某楼层有乘客按下按钮,电梯轿箱便会按照指令上升到该楼层接乘客,然后按照乘客的指令升降到指定楼层,到达后的乘客走下电梯。电梯轿箱停在该楼层,等待下一个乘客的按钮指令。系统对于等待的时间有一定的限制,在时间限制之内又有乘客按下按钮,电梯则重复前面的动作,电梯轿箱仍按照指令上升或下降到指定楼层,到达后,电梯轿箱继续等待下一个乘客的按钮指令,在每次的等待中,如果等待时间超过限制,电梯轿箱会自动返回到大楼的第一层,在那里继续等待乘客。2.1 用例图电梯系统用例图如下,主要包括用例、角色和关系。用例图乘客作为电梯里的角色,参与系统的5个用例,呼叫
2、电梯、指定楼层、打开电梯门、关闭电梯门和拨打报警电话。工作人员参与接受报警的用例。2.2 类图类图对系统进行静态建模,静态图主要描述系统功能需求-系统给最终用户提供服务。类图描述一组类、接口和协作,及他们的关系。类图各类的详细声明如下:(1) Button类一个抽象类,电梯停或启动的指示器。(2) Elevator_button电梯内的人需要到达的楼层。(3) Building_button处于某楼层的人需要进入电梯上行或下行的指示。(4) help_button紧急情况下的报警。(5) controlor用来控制电梯的上行、下行、关门、开门以及电梯调度工作等。BState:电梯或楼层按钮的状
3、态,若按下,则给控制器发送一个上行下行命令,否则,控制器控制电梯开门或停止。3.1建动态模型l 用户A在3楼按上行按钮呼叫电梯,用户希望到7楼去l 上行按钮指示灯亮l 一部电梯到达3楼,电梯内的用户B已按下到9楼的按钮l 上行按钮指示灯熄灭l 电梯开门l 用户A进入电梯l 用户A按下电梯内到7楼的按钮l 7楼按钮指示灯亮l 电梯关门l 电梯到达7楼l 7楼按钮指示灯熄灭l 电梯开门l 用户B走出电梯l 电梯在等待超时到后关门l 电梯载着用户A继续下行到达1楼3.2异常情况l 用户A在3楼按上行按钮呼叫电梯,用户A希望到1楼去l 上行按钮指示灯亮l 一部电梯到达3楼,电梯内的用户B已按下了到9楼
4、的按钮l 上行按钮指示灯熄灭l 电梯开门l 用户A进入电梯l 用户A按下电梯内到1楼的按钮l 1楼按钮指示灯亮l 电梯在等待超时后关门l 电梯上行到9楼l 电梯内9楼按钮指示灯熄灭l 电梯开门l 用户B走出电梯l 电梯在等待超时后关门l 电梯载着用户A继续下行到达1楼3.3状态图状态图4.1序列图序列图4.2协作图协作图5. 其它工作及部分代码:电梯设置l 电梯分为三种状态:静止,上升,下降。跟随着电梯还有一个数据,就是电梯当前所在楼层数floor_lift,其中floor_lift=1。l 在系统中我们用数组来保存进入电梯的乘客的信息,即目标层数。l 关于超时问题,我们定义时间上限为30分钟
5、。乘客分析l 乘客的需求分为“上”和“下”两种。此外乘客还有当前层数floor_from以及目标层数floor_to。当然floor_from、floor_to也是在130之间的整数。初始化l 电梯需要初始化,其中状态为静止state=0,层数floor_lift设置为1。目标层数数组需要初始化,即:for(i=0;i30,i+)l floori=0;电梯工作分析电梯的上升下降电梯的上升下降设置为一秒一层,即Switch(state) /state分为0静止,1下降,2上升case 0:break;case 1:floor_lift-=1;break;case 2:floor_lift+=1;
6、break;default:cout”error state”floor_lift,那么把电梯状态改为上升,相对的当小于时改为下降。当floor_from=floor_lift的时候,将乘客的信息加入数组,将乘客目标层数对应的数组元素设置为1。即floorfloor_to-1=1。此时将电梯的状态改为用户的目标方向,即state=direction。电梯为上升或下降状态时将用户输入与电梯状态相比:if(direction=state)&(floor_lift=floor_from)/用户目标方向与电梯方向一致时floorfloor_to-1=1;/允许用户进入并且输入目标层数超时设置当电梯的状
7、态state为0时开始计时While(i1800)/每秒检测一次,静止状态保持30分钟则回到一层If(state=!0)/检测状态,一旦状态改变,则停止计时break;Sleep(1000);i+;State=1;/设置为下降状态,目标层数改为1楼floor0=1;6. 设计总结经过了一个学期的学习和小组成员的共同努力,终于完成了这个作业。由于我们只是在系统的设计思想上进行了统一的分析,并没有进行系统代码的设计,所以每人负责部分的方法可能名字上有些出入,不影响实际设计。虽然完成的效果可能不是很好,但是小组的每个成员都很努力了,我们觉得还是有很多收获的。由于刚刚学习UML这种统一建模语言,对很多概念和问题的理解不是很到位,所以肯定会犯很多错误,希望老师多多指正。不过,虽然遇到好多不懂的问题,但是小组的每一位成员都能主动地去查阅相关资料了解并在一起讨论,通过这次作业,不仅让我们学到了知识,而且培养了团队协作精神,我想这也是我们在课堂里面学不到的东西吧。7.小组成员信息: 姓 名 学 号李洪岩 2012110238 负责序列图及协作图李东豫 2012110021 负责用例分析及类图建模张建华 2012111177 负责状态图实现及实验报告