结对编程作业之王泓洋篇
我是王泓洋,负责细节修改与完善,刘俊伟负责主要代码编写。
这次的PairProject还是稍有难度的,主要是使用c#语言还不够熟练,在面向对象思想方面还存在一些问题,而且此次的代码框架就已经写好,虽然所给的框架很符合这次的要求,但是没有注释的代码还是理解起来稍有困难,总的来说还是自己编程经验不足造成的。
结对编程优点
(1)集思广益,完善想法,两个人总比一个人考虑得多。
(2)不同方向思考,查补纰漏,不同的想法之间相互弥补,能有效的查补BUG。
(3)合理的工作分配让工作变得轻松。
缺点: (1)由于不是一个班级,思路不统一时缺少有效沟通
工作时的照片:
我的优点:思维慎密,工作耐心,对BUG的寻找以及细节完善有一定经验。
缺点:编程经验稍有不足。
刘俊伟同学优点:能较快提出整体规划,在遇到问题时能很快找到解决方法,遇到无法解决的问题会考虑用另一方法来绕过问题,工程能力较强。
缺点:项目进度较慢。
UML图
关于信息隐藏: 在命名方式上,定义的变量和方法可以再前面加上一个下划线"_"来标识,可以避免无意中对私有成员进行赋值,同时也能避免不注意间变量的二次定义。类与类之间交换信息时,要交流私有变量时,要用事先设计好的方法来访问,这样如果我们在其它类里面调用另外一个类的私有变量,那么我们必须定义一个获得该类私有变量的方法;要在另一个类里面改变另外一个类里面的变量时,我们也要定义一个改变该类私有变量的方法。在C#里特别方便的一点就是有set和get,我们可以很方便的定义访问一个类私有变量的方法。
对于契约式编程: 约式设计是一种设计计算机软件的方法。这种方法要求软件设计者为软件组件定义正式的,精确的并且可验证的接口,这样,为传统的抽象数据类型又增加了先验条件、后验条件和不变式。这种方法的名字里用到的“契约”或者说“契约”是一种比喻,因为它和商业契约的情况有点类似。所谓契约,也就是合约,规定两个交互物件上的权利和责任。雇佣合同规定你的工作时数和你必须遵守的行为规则,作为公司则付你薪水,双双履行义务,双双受益。
契约式设计优点
契约能使文档更出色;契约是类特性的公开视图中的固有成分; 有着更可靠的文档,运行时要检查断言,以便保证制定的契约与程序的实际运行情况一致;
契约式设计缺点
契约过于死板,不容易让创意得到实现,也不容易添加新的功能,因为函数功能已经约定好。
此次编程所采用的算法:
对模版程序而言,电梯接送人员的功能已经完善,缺少的只有引导电梯的方法,因此我们的思路就是给电梯正确的指引,让电梯停在需要停靠的楼层。在代码中用elevto0~3来记录。
每当乘客发出请求,进行一次判定,若有电梯顺路能接上(方向相同,路过该楼层且重量不超限),则在电梯的目的地数组里加入该楼层(需判断是否已存在该目的地)。而每当电梯确定了下次的目的地,该目的地都需要从目的地数组里删除(使用的为arraylist类,remove/removeAt即可)。
虽然说这种算法效率不是最高的,但是也能保证所有人员都能够成功到达楼层。
程序运行截图
20人的
bus版
我们的版本
这种算法应该能够比bus快……