结对编程人员:张迎春,赵梓皓。下面是我们一起编程的照片。

  结对编程的优点:

  首先,结对编程的目的是为了减少编程的错误,在编程的时候,大家一起检查错误,一起分析有没有更加合理的编写方法,所以这是结对编程的第一个优点。第二个优点是两个人可以交流思想,可以一起探讨更加好的算法,提高算法的质量。而且两个人可以交替编写程序,将任务分散,更高效的利用时间。

  缺点:

  结对编程的缺点是开始时两个人需要一定的磨合期,需要在程序编写前知道对方的编写习惯,并且尽量先统一一下编写的格式,命名的方式等,不想一个人编程那样随意。其次结对编程时,当一个人做出修改时,必须要写好完整的注释,让对方知道自己程序的含义。最后结对编程要解决两个人的分工问题,合理的分配工作的每个环节。

  程序的好设计方法:

  信息的隐藏,或者说是程序的封装性,这是为了保证程序的安全性,保证程序的内部信息不会被随便的获得和改写,这使得程序变得更加具有独立性,高内聚,面向对象的特征更加明显,为了保证这一点,我们在程序中对一些需要被外部访问的属性设定了专门的方法,通过方法的方式将内部属性传递出去。

   接口的设计。接口的设计在一定程度上决定了继承该接口的类的功能。传递数据信息是接口的一个比较重要功能,通过接口完成相互独立的模块之间的信息传递,很好的保护了程序的封装性。

  程序模块间的低耦合性。这使得程序之间的联系尽可能的少,不再会“牵一发而动全身”。低耦合性使得程序的维护变得简单,某个程序更改后,其他的程序只需要做很小的修改,甚至不需要修改就可以使用。

  关于契约式编程:

  契约式编程可以减少软件开发的成本,要求软件设计者为软件组件定义正式的,精确的并且可验证的接口,这样,为传统的抽象数据类型又增加了先验条件、后验条件和不变式。契约式编程就是函数调用者应该保证传入函数的参数是符合函数的要求,如果不符合函数要求,函数将拒绝继续执行。按照契约式编程的思想编写代码,就要求我们写函数时检查函数参数。契约式编程使得软件开发的分工更加合理,加强了开发的安全性,降低了开发的困难程度。

  Unite test结果如下

  

  我们对绝大多数的方法进行了全方面的测试(主要是后来我们修改过或者自行添加的函数,一些get和单纯的传递属性的函数没有进行测试,因为意义不大)。

  UML截图如下,我们选取了该程序中主要的五个类做出了UML图,以便于更加清晰的反映各个类之间的关系。主要有电梯类,调度类,乘客类,请求类,调度规划类。具体如下。

  

  我们的算法:

  由于实现实时分配调度任务比较困难,所以我们采用了及时分配的策略。具体如下:

  我们更改了程序的接口,放弃了原来的调度队列,并将其分解为四个独立的调度队列,分别对应于四个电梯。当有一个乘客发出方向请求时,我们会根据电梯当前的状态计算出电梯来接这位乘客的花费(包括到该层的时间和电梯中原有的乘客要在这层等待的时间花费),选择当前花费最小的电梯,将该请求加入到这部电梯的调度队列之中。如果所有的电梯调度花费都是无穷大(比如电梯当前不顺路或者电梯根本无法到达该层),那么这个乘客的请求将会被搁置,直到某个时刻有电梯到该层的花费不是无穷大,由该电梯来接受请求。对于电梯去接乘客,但是发现乘客要求去得楼层电梯不能够到达时,乘客不会进入电梯。该乘客将再次发出请求(实际情况也是这样),并且乘客会记住这个电梯,对这个不能到达目的地的电梯进行标记,从其他的电梯中进行选择。为了优化上下班高峰期的情况,我们对电梯的请求队列内的请求数进行了优化。当该电梯的请求过多时,电梯便不会再接受请求,这样一方面减少了乘客们等待的时间,另一方面也是的请求尽量分配到多个电梯,使电梯的调度分配更加合理。还有就是一些小的细节上的优化,比如电梯不会接受在自己的最高层发出的向上的请求,不会接受在自己的最底层发出的向下的请求等等。

PairProject 总结的更多相关文章

  1. 关于软件工程结对编程作业 PairProject : Elevator Scheduler(电梯调度算法的实现与测试)的总结

    1)结对编程队友 1106xxxx 张扬 1106xxxx 杨军 其中,此项目的编程实现主要由前者完成. 2)关于结对编程 结对编程的优点: 最直接的一点:在结对编程中,由于有另一个人在你身边和你配合 ...

  2. 软件工程——PairProject

    结对编程组员: 马辰     11061178 柴泽华  11061153 1)    照至少一张照片, 展现两人在一起合作编程的情况. 结对编程的优点 1)在编程过程中,任何一段代码都不断地复审,同 ...

  3. Pairproject 移山之道 阅读随笔和一些问题

    首先不得不承认这本书的写作方式很独特,不像其他的计算机类的图书那样枯燥,让人读起来感觉很有意思,他也颠覆了我对计算机类图书的看法,这种写作方式值得我们学习. 先谈谈收获吧.读了两年大学,这是第一次写类 ...

  4. PairProject——结对编程

    成员:12061162  王骜 12061225  钟毅恒 一.合作过程中的照片 . 二.结对编程的优缺点 优点: 1)在编程过程中,任何一段代码都不断地复审,同时避免了将写代码的责任抛给一个人的问题 ...

  5. PairProject 电梯调度 【附加题】

    [附加题] 改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享. 目前的设计有什么缺点, 你会如何改进它? 1.之前判断电梯是否闲置的函 ...

随机推荐

  1. 为PHP7安装Windows Server 2012 R2过程记录

    因为要安装php-7.0.6-Win32-VC14-x64,需要先安装vcredist2015_x64_14.0.23026.0. 之前安装了Windows Server 2012 R2后,一直无法成 ...

  2. Redis的安装和Jedis的使用

    Redis的安装和学习资料 Redis的安装可以参考 https://www.cnblogs.com/dddyyy/p/9763098.html Redis的学习可以参考https://www.cnb ...

  3. BookStrap之模板继承

    模板继承 (extend) Django模版引擎中最强大也是最复杂的部分就是模版继承了.模版继承可以让您创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 block ...

  4. [零基础学python]为什么要开设本栏目

    这个栏目的名称叫做"零基础学Python". 如今网上已经有不少学习python的课程.当中也不乏精品.按理说,不缺少我这个基础类型的课程了.可是,我注意到一个问题.无论是课程还是 ...

  5. BZOJ4170:极光(CDQ分治)

    Description "若是万一琪露诺(俗称rhl)进行攻击,什么都好,冷静地回答她的问题来吸引她.对方表现出兴趣的话,那就慢慢地反问.在她考虑答案的时候,趁机逃吧.就算是很简单的问题,她 ...

  6. windows下基于IIS配置ssl证书

    我这边用的是阿里云的免费证书,下面展示一下操作步骤. 首先登陆阿里云,搜索ssl证书进入ssl证书控制台.点击购买 然后选择免费版,配置如下: 选择立即购买,购买成功后回到ssl控制台即可查看证书.然 ...

  7. M100 对频

  8. 转载 WebService 的CXF框架 WS方式Spring开发

    WebService 的CXF框架 WS方式Spring开发   1.建项目,导包. 1 <project xmlns="http://maven.apache.org/POM/4.0 ...

  9. Linux系统学习之字符处理

    管道 管道是一种使用非常频繁的通信机制,我们可以使用管道符"|"来连接进程,由管道连接起来订单进程可以自动运行,如同有一个数据流一样,所以管道表现为输入输出重定向的一种方法,它可以 ...

  10. 20175310 《Java程序设计》第3周学习总结

    20175310<Java程序设计>第3周学习总结 教材学习内容总结 本周学习了第四章的内容,相比前三章来说,第四章内容较多而且比较复杂,花了大量的时间学习.学习的主要内容如下: 类.方法 ...