圣公方腊

第二次作业 结对编码

博客
组员:10061145 刘昕
      10061193 杨鹏飞


结对编程对我们来说都是一个比较新鲜的概念,因为从我的学习经历中,组队一般都会有三个人以上,一个人负责一部分的代码,大家一起确定算法分工什么的,这样每人的工作量都是平均的思路也比较统一。这次作业中,两个人在平常都不大了解彼此。所以这次对我们两个来说都是一次很新鲜的经历。
在具体分工的时候,比较擅长编写代码的杨鹏飞同学自己提出了要包揽程序的主体算法和程序编写,担当Driver。在这种情况下,不擅长编写代码的我负责了一些比较边边角角的工作,担任着Observer的职责。
结对编程的好处在于由两个人组队进行程序编写,在代码质量上会有很大的提高,减少错误率。同时双方在讨论中也会有很大程度的进步。
缺点在于会比一个人编码的速度慢不少,而且对Driver压力太大,对Oberserver在无事可做时会有强烈的负罪感。
杨同学的优点在于,有想法有远见,做事情独立性自主性强,对自己高标准严要求。但是在编程工作中的独立性,让我们之间的交流有些被动,这算是缺点之一。
我的优点在于,接触新知识比较快,在交流沟通上主动性比较强,还有对网络需求资源有较好的把握性。缺点在于没有过硬的编程功底,在交流中都是处于学习的状态。

信息隐藏、接口设计和松散耦合。
信息隐藏的重点在于将不必要输出的信息隐藏起来,减少不必要的输出和提高程序的安全性和执行效率。信息的隐藏也在代码实现后修进工作中减少了改动所影响的工作量。对于我们来说就是对自己写的代码要有更深层次的了解。
接口设计上要尽量把不必要输出的信息隐藏在接口内,给予用户一个只能提供其功能,而不必让用户了解工作原理的黑盒即可。
松散耦合的重点在于设计时要保证接口与接口,对象与对象之间的联系不要太紧密,否则一次改动就会牵连很多代码,接口与接口,对象与对象之间恰当的“距离”使代码在安全性上和可修改性上都有了大大的提升。


契约式设计的重点在于断言。优点是在设计中可以最大化的满足客户的需求,对程序硬性的契约卡关可以减少在后期对每个对象和对应方法的无效输出。
在设计中重点对载重量,服务楼层等条件上进行卡关。在这些条件中考虑,并设计契约。

 

其余的等待代码出炉中....T_T

代码已经出炉,这里是杨同学对他作品的阐述

 

首先想到的算法是,对于一个外部请求,让一部当前到达请求楼层距离最短的电梯来完成,若最终未能完成请求,则重新生成请求让其他电梯按前面的方法来处理。然后根据这个想法写了两天代码,由于调试能力和语言基础比较差,程序陷入了死循环,最终也没有找到问题的所在,所以最终放弃了这个方法。然后我们又研究了一下原始的Bus算法,发现其实可以把这个算法改进一下,提升它的效率。这样做虽然不能使我们的算法有很大的用处,但对我们来说,应该也是一个非常好的锻炼机会。由于Bus算法没有对请求进行分析,在每一层都有停靠,而且四部电梯是同步运作的。那么就准备对其进行如下的改进:增加对请求的判断,让其在指定的楼层停靠。并且让电梯一开始分布在不同的楼层,以便对一些中间的请求及时作出反应。

 

vs2012的uml类图:

首先我们看一下测试的结果,每组图中,上边为Bus算法结果,下边为改进算法的结果(原测试文件中,电梯四的容量为1200,下面均为作业要求中的2000,测试文件为passenger1/2/3):

Passenger1.xml

 

Passenger2.xml

 

Passenger3.xml

 

posted on 2012-10-22 17:01  圣公方腊  阅读(241)  评论(0编辑  收藏  举报