首页 > 其他 > 详细

OO第四单元总结

时间:2020-06-14 16:19:11      阅读:40      评论:0      收藏:0      [点我收藏+]

本单元的架构演进

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

技术分享图片

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

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

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

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

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

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

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

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

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

课程收获

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

对课程的改进建议

实验课

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

研讨课

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

测试点相关

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

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

线上学习OO的体验

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

OO第四单元总结

原文:https://www.cnblogs.com/maxu/p/13125052.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!