结对编程的优点:
1.可以通过讨论与合作增进算法的实现;
2.在编写代码的过程中相当于时时刻刻在DEBUG,提高DEBUG效率;
3.同伴的监督使自己更加专心。
----------------------------------------------------------------------
结对编程的缺点:
必须寻找两人的共同时间工作。
学号后三位191同学的优点:
1.对于C#的各种语法很熟悉
2.对于调度算法方面思维敏捷
3.将程序与实际结合的能力强
缺点:
不擅长阅读他人的代码
学号后三位192同学的优点:
1.有责任心:能时刻想着要完成的项目并且有序地完成,能管理好自己的时间从而得到最大的效益
2.积极沟通: 能主动地发表自己的意见并且清晰明确地表达出来,从而使团队效率更高氛围更好
3.基本功扎实:能够编出高效、实用的代码,是团队中的砥柱。
不苛求完美:所以不能编出最厉害最牛的代码。
契约式设计,运用到interface design,结合information hiding,将不必要的信息隐藏,要求
软件设计者为软件组件定义正式的,精确的并且可验证的接口,这样,为传统的抽象数据类型又
增加了先验条件、后验条件和不变式。作业中定义了各种接口,结合了契约式编程。
简单UML类图如下:
关于算法:
每一个tick都会对AllPassengers进行检测,如果当前tick等于请求时间
将请求分配给某一个电梯,分配规则:
1.该电梯的不可达楼层不包括请求楼层和目标楼层
2.计算电梯到达请求楼层的最短时间(考虑电梯的HistoryDirection和CurrentDirection,例如:
有一个从5层到10层的请求,电梯A在1层,正在往上运动,电梯B在6层,正在往上运动,该请求会赋给电梯A)
3.将请求分配给到达请求楼层最短时间的电梯
分配给电梯之后进行电梯的调度(每tick更新一次电梯状态)
算法的关键就是分配规则的制定以及电梯状态的更新。
结对小组成员后三位学号:
191
192
附:结对编程的照片