结对项目-地铁出行路线规划程序(续)
项目地址:https://github.com/jisuozhao/SE2
说明:项目是两个人一起做的,但是每次更新都是用的我的Github账号来上传。每个人的贡献是一样多的~
结对编程伙伴:14061218 韩慧敏
结对编程
结对编程照片
结对编程的优点:两个人共同设计程序的架构,减少错误的产生。可以随时对代码进行复审和交流。提高程序的初始质量,省下修改时间。
结对编程的缺点:两个人有可能一起陷入思维误区,可能导致错误更难发现。
结对伙伴的优点:思维敏捷,善于设计程序架构,善于发现错误。
结对伙伴的缺点:没什么缺点~
怎样用好这些好的设计方法
Information Hiding
信息隐藏
在写程序的时候需要注意:多层设计中的层与层之间加入接口层;所有类与类之间都通过接口类访问; 类的所有数据成员都是private,所有访问都是通过访问函数实现的;
Interface Design
接口设计需要满足单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则
简单的说,自己设计接口的时候需要让功能清晰,好用。接口的数量不能太多,功能也不能太复杂。
Loose Coupling
松耦合
减少不同模块之间的依赖,在系统设计的时候增加中间层来实现松耦合性,在开发语言时,通过增加抽象类或者接口来实现对象之间的松耦合。
契约编程
优缺点:保证了程序内部的变量名,方法名,方法功能,前置后置条件的一致性。利用契约编程技术可以充分提高代码的可重用率。缺点是使得开发时耗时更多,不太适合小程序或者小功能的开发。
如何融入到自己的作业中:在开发之前就订好设计和代码的规范,在结对编程的过程中严格遵守。
单元测试
对计算核心Core的每个方法进行了单元测试。SE2UnitTestProject是我们的测试项目
单元测试截图
UML图
算法的关键和独到之处
程序截图
本程序使用了上一次个人项目中使用的算法来实现计算核心Core,Core中定义了两个方法Spath和Tpath,分别用来计算站点最少路线和换乘最少路线。
程序仍然支持个人项目中的-b,-c等命令行参数。
本程序的GUI使用winform来实现,程序运行时点击绘图按钮,会在左侧显示地铁图。
重置按钮能够使图像回到初始位置。
下面的六个按钮分别用于放大缩小和平移地铁图,同时程序还支持使用鼠标拖动来平移图像。
下面的列表框中选择站数最少和换乘最少,实现对两个功能的切换。
在起点和终点两个文本框中输入站点,点击查询,会在地图上绘制出对应的路线,然后在下方的状态栏中实时显示乘客经过的站数。
程序的独到之处:
地铁图的绘制。我们写了一个DrawTool类对绘图函数进行封装,使得绘制地图更加容易。
地图支持放大缩小和平移,还能够设置是否显示站名。因为我们用了自己封装好的方法,使得这一切实现起来很容易。
在地图的下方增加一个状态栏,进行各种信息的输出。