Pair Project 1 elevator
结对编程——电梯调度
12061181 高孟烨
12061182 郝倩
1、结对编程的优缺点:
优点:结对编程可以结合两个人各自擅长之地,充分发挥两个人各自的优势,两个人一起合作效率会更高。一份工作两个人一起完成,每个人的强项、弱项不同,如果分工合理,便可以事半功倍
缺点:如果两个人的实力相差太大,则会造成沟通困难,一起写程序也会遇到一定的麻烦。或者如果有人态度不端正,无法进行好的沟通交流,则会使任务失败,两个人也得不到应有的锻炼。
2、各自优缺点:
高孟烨:算法构建能力较强;做事认真,细致;善于思考。动手能力相对较弱。
郝倩:时间观念强;代码能力不弱;很认真。做事情不是很细致,构建算法时会有一些漏洞。
3、一起合作编程的照片

4、Design by Contract, Code Contract
契约式设计的核心是断言(assertion)。所谓“断言”,是指永远为真的布尔型语句,如果不为真,则程序必然存在错误。它使用了三类断言:后继条件(post-conditions),前提条件(pre-conditions),以及不变量(invariants)。
由于信息隐蔽原则,我们在调用一个接口时,并不知道它内部实现的细节。为了顺利使用接口,首先需要满足前提条件。这个前提条件就是指在执行操作之前,期望具备的环境。满足前提条件接口使用顺利后,自然而然得到了一个后继条件——指操作执行完之后的情况。不变量是关于类(class)的断言,无论是否能对该对象调用某种操作都需要满足的条件。
5、算法思想:
电梯的状态从大的方面无非可以分为两种:
(1)电梯停止时:若电梯内有人,则目的地为该楼层的乘客离开电梯,发出请求的楼层为该楼层的乘客进入电梯,接着调度离当前楼层最近的请求。若电梯内没人,选择等待队列里离当前楼层最近的请求,如果等待队列也为空,则电梯停止不动。
(2)电梯运动时:在每层判断是否有该层到当前目标楼层之间的的外部请求,若有则判断方向是否与电梯运行方向一致,以及请求发出时间是否在电梯到达发出请求所在楼层的时间之前,若符合以上条件,则电梯在该外部请求发出的楼层停,开门使乘客进入,关门;若不符合,则继续顺序执行。
另外在判断以上各条件完成之后,能使乘客真正进入电梯并有电梯完成其请求,还要判断一下几个条件:
a)该请求的fromfloor以及tofloor是否为该部电梯的可达楼层
b)若乘客可以进入电梯,电梯是否会超载(参考每部电梯的重量和人数限制)
如果这两个条件至少有一个不满足,那么这位乘客就不能进入这部电梯到达自己的目的地,只能等待其他符合条件的电梯来搭乘。
6、unittest

7、UML图
Pair Project 1 elevator的更多相关文章
- 软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] [附加题]
软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] [附加题] 首先,在分组之前,我和室友薛亚杰已经详细阅读了往届学长的博客,认为电梯调度 ...
- 软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]
软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] 说明结对编程的优点和缺点. 结对编程的优点如下: 在独立设计.实现代码的过程中不 ...
- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]:谢勤政-11061197,吴润凡-11061185
一,关于结对编程 结对编程的优点: 1)在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力. 2)对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高 ...
- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]:刘耀先-11061183,罗凡-11061174
本次为我们两个人的第一次结对编程.从总体而言,我们对结对编程比单人编程略显不适应.但是经过一段时间的磨合,我们逐渐的习惯了这种编程方式. 1. 结对编程的优缺点 结对编程的优点: (1) ...
- Pair project(刘昊岩11061156 黄明源11061186)
Pair project members:刘昊岩11061156,黄明源11061186 两周时间,工程下午刚刚结束,现做一些总结. 在现有工程基础上修改schedule 包下方法,主要思想是,也就是 ...
- 结对项目 Pair Project
结对项目 Pair Project 一人编程,一人操作,共同检查. 源码 https://github.com/dpch16303/test/blob/master/%E5%AE%9E%E8%B7%B ...
- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]
作业提交时间:10月9日上课前. Design and implement an Elevator Scheduler to aim for both correctness and performa ...
- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] --11061188刘强
结对编程总结 队员:刘强(11061188) 林谋武(11061169) 结对编程: 结对编程的优点: 1. 两个人合作,相比于一个人自己奋斗而言,更能激发自己的潜能:我们在合作过程中,互相学习,互 ...
- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]:思考题——谢勤政11061197
第一题: 大楼里面的电梯一般分区域,或考虑思考题第四题的情况,运行楼层不一样的电梯属于不同的区域.然后在接口IRequest和IPassenger还有IElevator里面都加上int area这个属 ...
随机推荐
- Instruments模板介绍(更新中...)
第一章.Instruments(仪器)快速入门 Instruments可以用来收集关于一个或者多个系统进程的性能和行为的数据,并跟踪睡着时间产生的数据.它提供了好几个分析模板: Blank 任何类型都 ...
- Java设计模式之八 ----- 责任链模式和命令模式
前言 在上一篇中我们学习了结构型模式的享元模式和代理模式.本篇则来学习下行为型模式的两个模式, 责任链模式(Chain of Responsibility Pattern)和命令模式(Command ...
- Html body的滚动条禁止与启用
在写一个在页面中,经验证用户没有登录或session失效时候弹出登录框禁止页面滚动用到今天搞了一个功能,上下左右居中,模仿QQ空间里的样式,把横向和纵向滚动条禁止掉代码如下:<script ty ...
- attachBaseContext
at android.content.ContextWrapper.attachBaseContext(ContextWrapper.java:66) at android.view.ContextT ...
- win7下面搭建angularjs开发环境
每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 1.安装git,添加环境变量2.github上有一个比较好的纯净AngularJs app的种 ...
- Coprime (单色三角形+莫比乌斯反演(数论容斥))
这道题,先说一下单色三角形吧,推荐一篇noip的论文<国家集训队2003论文集许智磊> 链接:https://wenku.baidu.com/view/e87725c52cc58bd631 ...
- Git基础命令的使用——详细教程2
Git安装默认完成后,在左面点击鼠标右键,鼠标右键菜单中会多出来两个选项: a) Git GUI Here <—> 图型界面模式 b) Git Bash Here <—> ...
- 双目SLAM(1) 总配置
kitti 数据集 图像+相机参数 sgbm gpu 算深度 cuda sifi 算匹配点 rabsac 随机筛选 1)CUDA配置(自己配置)8.0 参考网页 ...
- usb-cam (2)摄像机标定
http://blog.csdn.net/heyijia0327/article/details/43538695 官方也给出了单目的标定教程和双目视觉的标定教程.本教程基于usb_cam pack ...
- linux grep 的使用
常用的 grep 选项有: -c 只输出匹配行的个数. -i 不区分大小写(只适用于单字符). -h 查询多文件时不显示文件名. -l 查询多文件时只输出包含匹配字符的文件名. ...