航空货运系统总结性Blog
一、前言
两次航空货运系统结束
在这两次题目当中,知识点主要为:
- 继承
- 多态
- 接口
- 类如何设计
- 类设计的各种原则
题量:
较少,给予的时间完全可以编写完所有题目
难度:
适中,在这两次题目当中,最主要考验的并不是算法,而是如何好的去设计类,以便于编写代码,并符合拓展性等设计原则,在写代码前,要花较多的时间去思考如何设计,如果设计不好,会导致在代码需要更新的情况下,对原本的代码进行修改,就不符合开闭原则等,并且要花费许多时间重新设计。
二、设计与分析
第一次航空货运管理系统:
类图:

在第一次航空货运管理系统的类设计时,花了许多时间
考虑到单一职责原则,每个方法的作用都设计的较为合理,没有出现一个方法做了多个事情的情况。
考虑到程序的可拓展性和开闭原则,在写顾客类,货物信息类和支付类时分别编写了其父类People类,Cargo类和PayWay类,使顾客类和货物信息类继承它们,以便于后续如果有需要添加,可以直接再设计一个类去继承,不用修改原本的代码。
考虑到复用性,在订单中把货物信息作为ArrayList型属性
考虑到解耦,使用控制类链接几个类之间的关系
SourceMonitor分析图:

可以看到,各项数据都还不错,代码的复杂程度和深度都未超出范围。其中平均复杂度和方法平均语句数比较少,应该是get和set函数较多的原因。
第二次航空货运管理系统:
类图:

这一次的类图在上一次的基础上对顾客类型和订单类型进行了细分,并新加了支付方式,于是使用了继承来合理的进行拓展。整体上类结构改变不明显。
SourceMonitor分析图:

在这一次的分析图中,出现了一个很大的问题,那就是代码的注释量太少了,这意味着代码的可读性将很差,如果编写的代码很长,而只有很少的注释,就会出现一个非常严重的问题--过一段时间,再来编写这段代码,就发现自己已经看不懂了,并且,在团队协作中也会出现问题,少的注释量意味着团队中其他人将花费很多时间用于理解代码,这是不好的,在编写程序时,应当附有合适的注释,这样的代码才更好。
三、踩坑心得
- 在第一次航空货运管理系统中,使用int类型储存了电话号码,电话号码的长度超过了int类型能储存的长度,导致代码报错。
- 在整个编码过程中,经常出现输入异常的问题,经过检查,大多数是由于在利用类似sc.nextDouble这样的输入后,直接使用nextLine来输入后续的字符串,这个时候就会出现问题。在第一步输入Double型数据后,这一行还会留下一个回车符号,而nextLine就是以检测到回车符号截至,这会导致nextLine这行输入没有读取到东西导致错误,因此在类似sc.nextDouble输入后常需要加上一个sc.nextLine来读取掉剩余的回车。还有就是要仔细检查输入的数据类型,以免出现错误。
四、改进建议
- 设计类图十分重要,类图设计好了程序才利于去迭代,否则在添加需求时,可能就需要重新设计代码,好的类设计也能让编程速度更快,应当更加注重类图的设计。
- 要经常性的添加代码的注释,有注释的代码才更容易看懂,可读性更佳。
- 要熟练输入输出等基础知识,以免再出现类似输入错误的情况。
五、总结
收获:
对类如何设计更熟悉了,再编写代码时会更加注重代码是否符合编码规范和各个原则。对继承,多态等也有了更深的了解,也更加熟悉了输入输出的使用。
建议:
希望在题目集中能多一些用于练习不同知识点的题目,在题目集结束后可以给出规范些的答案代码或类图,供学生参考学习。
浙公网安备 33010602011771号