首页 > 代码库 > 结对项目-地铁出行路线规划程序(续)

结对项目-地铁出行路线规划程序(续)

项目地址: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类对绘图函数进行封装,使得绘制地图更加容易。

地图支持放大缩小和平移,还能够设置是否显示站名。因为我们用了自己封装好的方法,使得这一切实现起来很容易。

在地图的下方增加一个状态栏,进行各种信息的输出。

 

结对项目-地铁出行路线规划程序(续)