OO第四单元总结

OO第四单元总结(完结撒花)

作业架构

  这次作业用的最多的就是适配器模式,将Umlxxx写到适配器MyUmlxxx中,并将与其相关的UML和有关方法放进去。同时建立一个MyElement类,便于在遍历的时候存储。UML图如下:

  因为后一次作业都基本沿用了上一次的代码,所以只放了最后一次的。
  存在的不足之处有:将三种图上的操作写在了一个类中。当然这要好有坏,好处在于可以牢牢掌握大局,实现各种方法更加灵活;坏处在于代码的聚合度低,而且代码行数过长。(导致代码风格分很低)
  代码整体思路大家基本一致:第一次生成各种自定义类存起来,第二次遍历建立各种关系(主要是指令输入不保证逻辑顺序),然后要什么做什么就行了。

架构设计和OO方法的演进

  其实刚开始接触OO是在上学期高工开设的数据结构课上,当时使用的是面向对象的python。我一直觉得面向过程的代码很反人类,面向对象的思想才是符合正常人思维的。所以刚上OO课的时候对OO的概念不能说是完全陌生。但是OO真实博大精深。同一份作业,不同的理解能诞生出不同的架构,代码水平也是天上地下。从我个人来说,在OO架构方面还是很有收获的。在第一单元的时候,因为怕出错经常同一个方法在不同类里面实现好多次,或者该列出类的时候不列出来。到了第四单元的时候(第三单元毕竟架构已经写好了),我已经对冗杂代码有了一点本能的抗拒了,而且思想也从之前的“能过就行”变成了“争取写一个漂亮简洁”的代码。在方法方面,掌握了一些中级的思想(很大一部分是从OO实验和研讨课上学到的),包括工厂模式、适配器模式还有很多细节上的代码规范。

测试实践的演进

  测试方面做得不是很好,相比与大佬们从第一单元就开始手撸评测机,我是到了第三单元才有了属于自己的全自动评测机。前两单元的测试可以说做得很不充分,有两次强测爆炸就是因为测试做得非常不充分(甚至连手写的测试集也不充分),因此后面长记性了,不经过测试锤炼的代码是没有理由相信的。
  在互测方面,收获的分并不是很多(大部分原因也是因为没有自己的评测机),尤其是到了第三单元,大家的测试热情少了很多......

课程收获:

  OO第一单元最大的收获是字符处理,里面还涉及到很多优化。感觉第一单元是最难的一单元,强测最后一次极限DEBUG然后引入了新BUG,喜提36分;第二单元感觉自己有点懒了,没有好好地去设计算法,三次都是SCAN加一点点随机优化,测试也没充分,最后一次又栽了。最大的收获是对线程的理解,这对OS的学习也很有帮助;第三单元收获是JML,代码规范;第四单元是UML。
  不吹不黑,OO是这学期上的最有收获的课。即使是当时挑灯夜战的各种回忆,也必将是大学生涯的宝贵财富。总的来说,代码水平有了很大的提高;同时也认识到了自己和别人的差距、编程的博大精深。目前最大的制约应该还是算法方面的,在这个暑假可以好好补一补。
  虽然经历了很多痛苦和绝望,但是看到测试结果一片绿色时内心的兴奋与满足,绝对是值得的。

课程改进建议:

  1.希望理论课能够和实验课结合紧密一些。有时候理论课和实验课步调甚至不一致,做实验的时候各种自学,实验做完了理论课又去汤刚做过的实验的剩饭。个人觉得仅仅调整一下顺序,就能够得到很好的效益。
  2.希望OO实验能够降低一点难度......
  3.我对作业的设计上还是有些想法的。我觉得应该把抽象、架构设计作为重点。然而第一单元更像是考察字符处理,第二单元还好,第三单元难度剧减,变成了代码补全(以及对图的考察),第四单元UML最后变成了对UML文件的解析(其实UML完全可以作为辅助内容在OO刚入门的时候讲述的)。当然OO不仅仅是面向对象,算法之类的是基本功,不过我还是觉得不应该喧宾夺主。
  在知乎上了解了OO改革前的状况,我觉得我们这一届是很幸福的,课程的设计已经非常合理科学了。但是改革永远在路上,希望OO课程能够越来越好,成为北航的金牌课程。

线上学习OO课程的体会

  总体感觉良好,没听懂的可以倒回去看,觉得已经会的可以快进。
  线上学习OO的话,同学之间的讨论还是有些影响的,毕竟微信回消息太慢,所以会少了一些在寝室自主讨论的氛围(以祭祖为例)。
  (目前还没有见到老师和助教长啥样,虽然声音都挺好听的......

posted @ 2020-06-14 10:21  P1Y2P1Y2  阅读(147)  评论(0)    收藏  举报