OO第四单元总结

本单元的架构演进

​ 本单元相对来说可能是最简单的(当然如果不小心一开始在架构上走偏可能需要花时间重构),我没有设计太复杂的架构,因为课程组给的源码以及结构足够清晰,只是类的属性不太够,没办法描述树、图这样的结构。因此,我只是简单的为常用的元素设计了包装类(wrapper),添加了相互之间的关系以及缓存等。由于三次作业架构基本一样,这里只贴出第三次作业的类图。

​ 架构还是比较简单的,最上方的两层都是包装类,第二层的类继承自第一层的MyUmlElement,与课程组所给的源码结构比较类似。下方的四个类中,MyUmlInteraction是要求实现的类,MyGraph是把建图的过程提取了出来,Util是一些用到的函数,Main是启动类。

四个单元中架构设计OO方法理解的演进

​ 在OO课程刚开始时,我对面向对象以及架构设计的理解都停留在很表层。比如第一单元,我就有点过度设计的感觉,虽然用了大量的继承与接口的实现,但是到最后感觉很多都没有太大作用。在第二单元时,我也需要参考别人的设计以及与别人讨论。到了最后,虽然最后一单元本身比较简单,但是我对自己的设计很满意,没有多余的东西,而且也保证了可扩展性。

​ 总的来说,我从一开始的需要“刻意”设计,到现在能够快速找到简单又有效的架构,我认为我对面向对象的理解和架构的设计能力都有了很大的进步。

四个单元中测试理解与实践的演进

​ OO课程的另一大收获就是测试能力的提高。

​ 首先是尝试了通过程序自动化生成测试数据。在OO课程之前,我还是习惯于手动构造一些数据对自己的程序进行测试,但当程序复杂到一定程度时,自动生成测试数据也是一个很不错的方法。

​ 其次是测试方法的改进。学会了利用Junit这样的单元测试框架,也学会了自己搭建评测机进行自动化的测试,这让我的测试能力有了质的飞跃。

​ 当然,单元测试带来的另一个收获就是对TDD(测试驱动开发)的了解。虽然很多情况下还是难以做到在写代码之前写测试,但是每写完一个类或一个模块就进行单元测试还是可以做到,而且确实使我的程序出现bug的几率降低了很多。我觉得这是一个值得长期坚持的习惯。

课程收获

  • 对Java基本语法以及常用容器的熟悉
  • 对多线程及相关设计模式的了解
  • 常用设计模式的了解
  • 测试能力大幅提高
  • 编码能力的提高

对课程的改进建议

实验课

​ 说实话现在OO经过多年的改进,各方面以及很完善,给同学们的体验也很不错。但是实验课确实让人比较难受。首先是不知道自己做的对不对,不知道自己的成绩,这就让实验课的收获大打折扣,而且我也不太理解公布成绩有什么难点。而且我觉得实验课的出题可以改进,向正常作业的水准靠近。就比如最后两次UML的实验,我觉得题目描述的并不清晰,可能需要去猜出题者的心思。

研讨课

​ 当然这学期由于疫情可能影响了正常的计划,但是这学期研讨课感觉太多了,而且只局限在一个小班,可能有值得分享的东西的同学可能并不是很多,这导致大家参加研讨课的热情并不是很高。请一些真正在工业界工作的人来分享可能会更好。

测试点相关

​ 第三单元中测的难度可以再提升一点。当然我也理解第三单元可能是鼓励大家用单元测试。

​ 是否可以减少一些高级算法的应用。树、图这样的结构当然很正常,包括DFS、BFS这种常用的算法。但是,像连通分量相关的,放在OO课真的有必要吗?把重心放在架构的设计上是不是更好一点,当然这可能太难量化评测了。

线上学习OO的体验

​ 其实线上和线下差距不大,因为OO的作业毕竟是个人项目,需要与别人交流的还是比较少。一些别的需要团队合作的课程,线上学习体验就真的很差了。

posted @ 2020-06-14 15:34  max2333  阅读(208)  评论(0)    收藏  举报