OO第四单元总结

本单元总结

  1. 第一次作业

    • 需求分析:对UML类图相关属性进行相关查询操作
    • 架构总览
    • 分析
      • 按照要求逐层细化
      • 由下而上的建立具有更多信息的原子
        • 如:UmlClass扩充为有AttributeList、FatherList等附加属性的MyClass
      • 根据层次从属关系将原子组合为架构
      • 将架构搭好后,具有针对性的查询更加简单便捷
  2. 第二次作业

    • 需求分析:对类图、顺序图、状态图进行相关查询操作
    • 架构总览

    • 分析
      • 与上一次作业相似,按照需求搭建具有更多细节的架构
      • 类图部分没有太多变化
      • 顺序图与状态图按照特征模仿类图进行层次化搭建
        • 添加附加细节
        • 由下至上不断构建
      • 有效性检查考察递归知识等操作,加深对UML图的理解

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

​ 回想一下第一次作业的代码,在不知不觉间其实还是有了相当的进步。第一单元纯粹是未入门的瞎写,还记得第一次作业我甚至搞不懂如何将代码拆分成几个文件、如何互相引用,于是使用了一个巨大的类和一堆内部类一main到底。第二单元魔鬼电梯的现实问题让我对OO的对象的拆分、对象间关系、架构有了更多的理解,在这个单元里,我有了初步的架构思维并尝试着拆分代码。值得一提的是观赏了331大佬的代码,头一次对代码有了冲击性的观感体验,头一次认识到代码的美感。而在第三四单元中,架构的概念本身就很明显,代码的实现基于本身的架构特性即可,层次与组合的使用更加常见。

​ 关于OO的方法、思维更是有了不小的改变。从最开始的搞不懂概念,不明白如何从面向对象的角度分析问题,到现在能够将问题抽象出对象,从面向对象的角度看待问题。不断地练习和分析反思问题对OO帮助巨大。


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

​ 第一单元开始时对测试的理解只是停留在想想测测的水平,对问题的测试覆盖甚至相当不全面。在了解同学的测试后,学习到了代码需要进行覆盖式的测试。从问题的各个方面,从代码的每一行,从情况的多种可能性出发,全面地不重不漏地对代码进行测试。并且对测试有了更深的理解,测试的编写实际与代码本身的编写息息相关,测试的考虑基于对问题的考虑,因此存在测试导向的代码编写。

​ 第二单元接触的是情况纷繁复杂的多线程调试。使用朴素的print调试方法,思考问题可能存在的结点,从多线程并行纷繁运行的过程中,使用自己输出的信息进行调试测试,让我对测试应该如何找可能出现问题的结点有了更深的理解。

​ 第三四单元则是单元测试的接触。单元测试能更具体更细节的测试代码的每个部分,对代码每个部分进行针对性的测试,对全覆盖化的测试更有优势。

​ 整个课程的学习中,认识到测试的重要性。对代码进行自我测试,一方面是找出代码中的问题,另一方面更是不断思考需求及代码实现可能出现的问题,与代码实现相辅相成。


课程收获

​ 首先是对JAVA语言有了一定的理解和练习,明白了一门语言的入门过程其实并不是太难,难的是语言在实际应用中对特性的灵活理解运用。其次学习到了一些工程化的开发技巧,从第二单元中学习到了如何将实际问题抽象模拟为代码,从第三四单元中学习到了架构和规范化的重要性,以及认识到了测试的重要性。

​ 其次互测环节的出现,让我有机会阅读别人的代码,并尝试找出别人的bug。这一体验是新颖的,并且在阅读别人代码的过程中,感受到了每个人对于问题的理解实现不同,在解决问题时有了尝试不同思路的想法。


课程建议

  1. 入门需要更多一些的指导。最开始JAVA入门时,基本理解了语法等规则就以为自己差不多入门了,但是第一次作业写下来完全不是这么回事。对于如何抽象对象、如何结构化设计等问题都有相当一段困惑时间。
  2. 单元间的连续性或许能够更流畅。个人认为四个单元作业风格有些迥异,对更全面理解OO有相当的好处。但是问题在于,每次进入新的单元都有一个新内容入门的过程,或许单元间有一些连贯性会让作业体验感更好。
  3. 互测环节的激励不足。或者说有些作业设计本身不是很适合互测,导致了互测环节兴致不高。

OO是一次感受比较复杂的体验,希望课程设计越来越好,越来越能让人感受到“真实学到了什么”,老师助教们辛苦了。

posted @ 2019-06-21 22:16  pampamda  阅读(164)  评论(1编辑  收藏  举报