2021-OO-第四单元总结

第四单元及课程总结

一、本单元作业架构设计

  • 按照UML的层级结构,对官方包进行了包装,以适应自己的需求,同时隐含UML逻辑结构

    •  

       

       

  • 对存储容器和UML解析进行了封装,精简了代码

    •  

       

     

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

  • 正确性需求——是否正确

    • 典型:第一单元的递归下降

      • 是真的不知道怎么实现,在大佬的指导下才知道了递归下降,然后用C的方式写了一个较为面型过程的程序,勉勉强强过了。考虑面向对象的方面只是写了很多类,并尽量让他们各司其职,但实际上解耦做的不好,(也许是这个题目就要求有很强的耦合性?)

  • 精简性需求——是否必要

    • 典型:第二单元的电梯

      • 大家都在纠结是否写调度器,我第一作业就写了,最后一次才发现貌似没啥用,我们的调度过于幼稚,反而一个bug送进cRoom一次,性能分也不好。

      • 以及checkstyle中的方法不能超过60行、类不能超过500行的要求。

  • 审美性需求——是否优雅

    • ???我写的一点也不优雅

    • 但是很希望自己的代码能够具有一定的“正交原子性”

    • 就是这一个类的角色,不会冗余;一个方法,不会重复在不同类中实现,他们各司其职我就会很开心。

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

  • 样例级测试

    • 对于指导书中的给出的样例进行测试

    • 对于指导书中给出的样例进行改编测试

  • 随机级测试

    • 使用评测机随机生成样例进行评测

    • 主要是在不急不慢,又很懒的时候找一些浮于表面的bug

  • 压力级测试

    • 对于程序的边界性(时间、数据类型)进行测试

    • 对于程序的鲁棒性进行测试

  • 覆盖性测试

    • 当有一个bug真的搞不定了,就使用程序遍历每一种可能的情况,进行覆盖测试,但是对于特定单元不太有效,属于究极杀招

  • 针对性测试

    • 对每个功能的情况进行思考,构造典型的样例

    • 一般在有bug了再使用这种方法

四、课程收获

  • 技能上

    • 对于Java语言有了很好的训练机会,借此机会学习了CoreJavaⅠ、Ⅱ中的内容

    • 对于Git的使用,IDE的进阶操作等也都更加熟练。

    • 对于自己搭建评测机也有了一定的了解。

  • 方法论上

    • 对于面向对象思想的理解更加深入,从最开始的“多写几个类”到理解与之前写C语言程序的区别,再到能够写出更加抽象更加解耦的更优雅的代码。

    • 通过互测,阅读了很多大佬同学以及官方包的源码,感觉看不大懂,却大受震撼(。

  • 想法上

    • 感觉在6系,很期待这些重课。OO给人的感受可以说是这些重课里最棒的,有挑战有压力,但是也有机会做好,每个水平的同学都能够在其中找到自己的位置。

五、改进建议

  • 关于指导书

    • 指导书的编写可以更加清楚一点,比如UML单元总感觉在猜谜语,(当然现在指导书写的已经很厉害了,有股离散1的味儿)。

  • 关于评测

    • 感觉每周一次的DDL确实压力很大,我感觉自己对于架构的理解可能就被“通过、正确”的压力推到一边了。(也许可以减少点任务量,然后在测试时对“架构”这方面做一些评测。)

  • 关于互测

    • 互测的机制对于分数没有太大的直观感受,大家不测貌似也没啥大问题,就很容易让人躺平。

    • 但我觉得互测主要还是让大家互相阅读彼此的代码,在“收益”甚微的情况下,只有特别特别积极的同学才能做到这一点吧,也许可以对于互测的评价做一些调整(或者是要求同学写java doc之类的,降低互测阅读代码的门槛),减少评测机轰炸,让大家互相读读代码。

posted @ 2021-06-26 15:17  WuhuAirforce  阅读(64)  评论(0)    收藏  举报