OO第四单元总结

OO第四单元总结

一、作业架构设计

1.第一次作业

第一次作业的做法基本上按照指导书的要求,依次实现指令的方法来解决,需要什么类的时候再去写这个类,这就导致代码的结构十分混乱,虽然能够从需求指令上依次找到类和相应的方法来理解,但是有很多地方会出现重复的工作。

类图

2.第二次作业

在第二次作业中,吸取第一次作业的教训,进行了重构,将许多代码重复实现的地方进行了整合,规划了继承。其次,本次的指令比较多,将其分为了不同的部分和不同的图进行处理。

类图

二、架构设计及OO方法理解的演进

  • 第一单元主要内容对多项式的求导。因为是一开始,主要目的在于让我们掌握Java的一些基本语法知识和对面向对象思想的初步理解和尝试。比如,在这一单元我才理解了什么是继承,接口和实现,学会了正则表达式的使用。学会了构造抽象层次,将一些表达式进行归一化处理。
  • 第二单元是多线程电梯的编写。首先是如何去划分线程,好的划分会使得代码结构更加清晰,效率更高和具有更好得扩展性。其次也学会了如何去判断线程是否安全,知道了死锁问题出现得原理等。除了关于线程得学习,也了解并实现了一些设计模式,比如生产者-消费者模式,观察者模式,工厂模式等,这一些他人总结下来的设计方法确实给我带了更清晰设计思路,使得代码实现起来更顺畅。
  • 第三单元引入了JML的规格。让我们能够去读懂和写一些JML的规格,对于平时作业也采用了,从PathContainer到Graph和Railway的方式,由较高的抽象层次向更实际的方向去实现。这也使得我们能够体验到逐层构造的感觉。
  • 第四单元是关于UML模型,在于理解UML,格式解析以及对于模型图的结构化搜索,提取相关的对象并进行检查。在于前3个单元的积累下,本单元虽然内容较多,但实现起来还是比较的容易的。

三、测试理解与实践的演进

对于代码的测试方式,从一开始的仅仅依靠课程的测试样例,以及自己对代码的肉眼debug,到针对具体问题,边界问题自己出测试样例,并尽可能实现随机生成数据去测试。再到采用Junit的单元测试,使得测试的覆盖性更广,测试更合理,更体系化。

四、课程收获

第一点肯定是java的编程能力,这是一个进步比较大的方面,从0基础java到写出2000多行左右复杂代码的改变。其次是面向对象的思想和部分设计模式的应用,这一点在每一次作业中都渐渐去体会,不能说用得多好,但是理解确实逐渐深刻。多线程的编程,这是一个比较新的方面,以前从没接触过,有了初步的了解,算是入门了吧。然后是代码风格的训练,确实在默默地改变我的代码风格。工具的使用,比如Junit进行单元测试等。

五、建议

1.理论课与实验课时间间隔太短,说实话理论课有时候新的内容还没掌握就上机测试,有点来不及。

2.第一单元作业的难度略大,主要是因为对于输入格式的判断比较难写。

3.关于互测,一开始还是有看他人代码的兴趣的,但是到后面,比较困难去阅读所有人的代码,大都会采取其他方式测试别人的代码,建议减少互测屋的人数。

posted @ 2019-06-21 23:05  YX0119  阅读(191)  评论(0编辑  收藏  举报