UML电梯系统建模.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1. 需求陈述 一个无人值守电梯的轿箱通常停放在大楼的第一层.当某楼层有乘客按下按钮,电梯轿箱便会按照指令上升到该楼层接乘客,然后按照乘客的指令升降到指定楼层,到达后的乘客走下电梯。电梯轿箱停在该楼层,等待下一个乘客的按钮指令。系统对于等待的时间有一定的限制,在时间限制之内又有乘客按下按钮,电梯则重复前面的动作,电梯轿箱仍按照指令上升或下降到指定楼层,到达后,电梯轿箱继续等待下一个乘客的按钮指令,在每次的等待中,如果等待时间超过限制,电梯轿箱会自动返回到大楼的第一层,在那里继续等待乘客。 2.1 用例图 电梯系统用例图如下,主要包括用例、角色和关系。 用例图 乘客作为电梯里的角色,参与系统的5个用例,呼叫电梯、指定楼层、打开电梯门、关闭电梯门和拨打报警电话。工作人员参与接受报警的用例。 2.2 类图 类图对系统进行静态建模,静态图主要描述系统功能需求-系统给最终用户提供服务。类图描述一组类、接口和协作,及他们的关系。 类图 各类的详细声明如下: Button类 一个抽象类,电梯停或启动的指示器。 Elevator_button 电梯内的人需要到达的楼层。 Building_button 处于某楼层的人需要进入电梯上行或下行的指示。 help_button 紧急情况下的报警。 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=30floor_lift=1。 在系统中我们用数组来保存进入电梯的乘客的信息,即目标层数。。 关于超时问题,我们定义时间上限为30分钟。 乘客分析 乘客的需求分为“上”和“下”两种。此外乘客还有当前层数floor_from以及目标层数floor_to。当然floor_from、floor_to也是在1~30之间的整数。 初始化 电梯需要初始化,其中状态为静止state=0,层数floor_lift设置为1。目标层数数组需要初始化,即: for(i=0;i30,i++) floor[i]=0; 电梯工作分析 电梯的上升下降 电梯的上升下降设置为一秒一层,即 Switch(state) //state分为0—静止,1—下降,2—上升 { case 0: break; case 1: floor_lift-=1; break; case 2: floor_lift+=1; break; default: cout”error state”endl; } 静止状态检测 当数组全部为0时,将state设置为0. 电梯为静止状态时 用户输入,信息分为direction和floor_from。Floor_from跟电梯所在楼层floor_lift进行比较,floor_fromfloor_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; //允许用户进入并且输入目标层数 超时设置 当电梯的状态s

文档评论(0)

新起点 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档