Pair Project: Elevator Scheduler Report By Hu Renjun
0、结对人员
Hu(155) Tan(189)
1、关于结对编程
优点:coder的大部分错误可以在第一时间被reviewer发现,这省下了很多本应当在项目测试阶段花费的时间;
结对编程写出的每一个程序都体现了两个组员中的较高水平;
两个人轮流交换角色开发项目,加快项目进展速度;
两个人结对开发的过程就是两个人互相学习进步的过程。
缺点:有时候reviewer会整段时间处于无事可做的状态;
增加了意见统一成本。
Tan的优缺点:(优)接受新事物的能力强,在很短时间内理解了项目的基本框架;(优)算法设计水平高;(优)有追求卓越的精神,最终定下的版本是在最初版本的基础上进行了N次修改得到的,最后的平均花费时间仅仅是第一个版本的1/5;(缺)编程风格还是继续延续面向程序的。
Hu的优缺点:(优)算法水平还算过得去;(优)思维严谨,查错能力还算过得去;(优)和Tan大神的影响下追求卓越的精神还算过得去;(缺)开发大项目的经验不足,框架看了很久没。
(附上结对照片)
2、ASE的设计方法
信息隐蔽:类的成员变量的可见性统一成private,并设计相应的属性。
接口设计:设计接口是尽量细化,功能追去单一,不要设计功能臃肿的接口方法。
松散耦合:在一个系统中使各组件在最小的可行范围内彼此依赖,尽量限制类和类之间互相连接。
契约式设计:在调用方法前保证初始条件的正确性。
3、单元测试
4、UML类图
5、电梯调度的算法
先描述一下bus的算法,无视需求,每层依次停。
首先,我们分析了一下这个算法,这个算法很显然可以保证将每个人送到,但效率很低。
bus算法效率低的原因在于停了很多不需要停的楼层。
按照我们平常乘坐电梯的思想,很容易想到是哪一层按了电梯,电梯就去哪层,并不停中间层的。
这样,我们只需要记录电梯需要去哪层,把电梯派过去就可以了。
考虑两个变量,电梯、楼层。可以说这是一个二维的模型。由于二维模型处理比较麻烦。退化为两个一维。
(1)每个elev查找最适合的req
(2)每个req查找最适合的elev(离它最近的一个elev)
由于总感觉(2)有点问题,并结合编码,我们选择的方案(1)
对于方案(1),何为最适合的req呢
如果电梯处于运行状态,则查找电梯当时位置与要去的位置时,是否有人要进电梯,如果有,顺路把那人带上
如果电梯处于停止状态,则按如下顺序查找(在楼下往下走的,在楼下往上走的,在楼上往上走的,在楼上往下走的)
至于为什么是这个顺序,多次实践得到的结果
最后,有个小优化,即电梯空闲体重小于100,就视为超重,不停了
至于为什么是这个数,也是多次实践得到的结果
对于如何实现这个算法,我们存储了两个信息
_wait记录还没有进去电梯的req
elevStop[]记录该电梯将要去的楼层
当电梯处于停止状态时,若elevStop[]不为空,找到elevStop[]中最近的那个楼层去,若elevStop[]为空的时候,在_wait中找到最合适的楼层去
当电梯处于运行状态时,在_wait中寻找是否可以中途带人,可以的话将该楼层加入elevStop[]中,并将目标改为该楼层
胡仁君 2012/10/22
转载于:https://www.cnblogs.com/hurj/archive/2012/10/22/2733189.html
Pair Project: Elevator Scheduler Report By Hu Renjun相关推荐
- Pair Project: API设计 by Xiao Li and Yishi Xing
Pair Project API设计 本次 Pair Project 的内容是设计一个电梯调度系统. 我们认为一套完整的电梯调度系统应该包括以下三个类: (1) 乘客类 (2) 电 ...
- Pair project(刘昊岩11061156 黄明源11061186)
Pair project members:刘昊岩11061156,黄明源11061186 两周时间,工程下午刚刚结束,现做一些总结. 在现有工程基础上修改schedule 包下方法,主要思想是,也就是 ...
- G4Sui老师的pair project(197)
在做的云里雾里的individual project之后,这次的pair project让我开始找到了一下软件工程的感觉!其中原因除了C#能稍微捯饬明白了,还有就是合作的力量. 本次结对编程进程: 1 ...
- Pair Project:电梯控制程序 编写心得 最新版
(之前不知道这个博客两个人都要写完整的,所以现在补全) 小组:王安然:10061210 李斌:10061150 在这两个星期之中,我与李斌二人组成了一个小组,完成了Pair Project--电梯控制 ...
- PAIR PROJECT 总结 PART1 --韦昀
本次结对编程由我和王熹完成,先发图片 结对编程我们之前从没接触过,关于优缺点书上是这样写的: (1)在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力. (2)对于开 ...
- 【转自lzplzp】pair project总结
pairproject总结和结果 自从1.2后还有几次修改代码的历程 修改的2.0版本: 主要是针对状态机的优化 Idle 遍历当前请求楼层,如果有楼层,则跑过去. 如果该楼层的请求是destinat ...
- VS 2005 WEB PROJECT包括Crystal Report水晶报表的发布
VS 2003的WEB 项目发布没有什么难度,但在VS2003水晶报表的发布却很麻烦,如果你到现在为止还不知道的话,你大可在网上去找下帮助,如果你实在很懒,那你可以联络我,我可以发个安装包给你.注意邮 ...
- 电梯调度算法 软工 Pair Project
软工要求的结对编程,随机分组,然后,我(郭立轩)和六班的闫生辉分在了同一组.之前并不认识,虽然如此,这次结对编程的经历还是相当愉快的,也学到了不少东西. OK,下面进入正文 关于结对编程 如何利用结对 ...
- Pair Project
第二次作业的结对编程项目:电梯调度系统 结对编程小组成员:吴煜10061149 全风楠10061186 这次的作业与个人项目不同,不是从头写一个新的程序,而是在一个已有的程序之上做修改然后实现新 ...
最新文章
- Jackson的简单用法
- 仿iOS中图标的抖动
- JSONProxy - 获取跨域json数据工具
- Linux软件安装的几种常见方式介绍
- python时间函数报错_Python Day11-LEGB-global-时间函数
- Spring和石英:多作业计划服务
- 以太坊智能合约 编译脚本
- Windows 下OpenGL的基本安装与配置(基于Visual Studio 2019 与 MinGW)
- mysql 1698 错误
- MFC建立简单绘图板
- 2个鸡蛋100层楼--动态规划
- 为什么一些linux基础静态库(如libc.a)里面包含那么多目标文件.o呢? 为什么不将这些.o文件进行提前糅合呢?
- GITHUB无法打开与下载失败解决方法总结
- IWDG和WWDG分析
- 美狐美颜SDK动态贴纸代码浅析
- 如何将Nginx的版本号隐藏
- 局域网中资源共享(FTP)
- h5新增标签属性以及api
- 一篇学完:王道考研408数据结构(全)
- 海投简历无回应?是不是你写简历的方式错了?
热门文章
- 【Python学习系列十九】基于scikit-learn库进行特征选择
- centos下排查vsftpd出现put零字节问题的记录
- 线程的调度、优先级和亲缘性——Windows核心编程学习手札系列之七
- Pandas简明教程:一、Pandas简介与安装
- Hystrix 熔断器02 —— hystrix 案例之构建
- 数组树/fenwicktree/Binary Indexed Tree
- [YTU ]_2736指针练习--输出最大值
- Kth Largest Element in an Array
- 注视点估计(二维法)
- java菜单栏的功能怎么被关闭_【求助帖】 菜单栏的监听问题