面向对象暑期课程总结

面向对象暑期课程总结

未完成作业原因及改进

在春季学期中,未完成的作业是第三单元第三次作业和第四单元的作业。

第11次作业

未完成原因

在第三单元的前两次作业中,由于没有考虑到性能的问题,在存储数据时使用了Arraylist,导致第二单元强测没有通过,代码重构难度比较大。而且对于图的一些算法缺少了解,在图方面的知识掌握得不是很好,因此并没有通过这次作业。

改进

UML类图

难点处理

  • queryMinPath(int id1, int id2):Dijkstra算法
    • 容器初始化
      • distance:用来存储目前每个节点到初始节点的最短路径长度。
      • prev:用来存储已经浏览过的节点。
    • 遍历并更新各节点到初始节点的最短距离
      • 该节点不在prev中,则distance=父节点的distance+value。
      • 该节点在prev中,且distance>父节点的distance+value,则更新。
      • 该节点在prev中,且distance≤父节点的distance+value,则保持不变。
    • 返回id为id2的节点的distance
  • queryStrongLinked(int id1, int id2)
    • 调用isCircle方法进行第一次深度优先遍历,判断是否连通,并将访问过的节点存储到visited容器中。
    • 进行第二次深度优先遍历,跳过访问过的节点,若id为id2的节点为id1的相邻节点,则跳过其继续遍历。

第15次作业

未完成原因

第四单元的代码阅读量比较大,同时也需要充分的理解关于UML图的知识。当时并没有完全理解整个代码的架构以及各个UML元素的使用方法,所以在实现方面出现了一些困难。

改进

UML类图

image-20200821110929033

难点处理

  • R001:重名检查
    • 出现的bug:会对名称为null的元素进行重名报错
    • 解决方法:在遍历元素时遇到名称为null的元素直接跳过
  • R004:任何一个类不能重复实现同一个接口
    • 出现的bug:在方法运行过程中会出现死循环,未查明具体原因
    • 解决方法:重构该方法
    • 重构思路:之前的思路为从接口开始从上到下寻找实现该接口的方法,重构之后改为了从每个方法开始从下到上寻找该方法实现的接口。

收获和进步

通过暑期课程的学习,我弥补了春季学期知识上的一些漏洞,对于java代码的阅读能力和编写能力都得到了进一步的锻炼。同时,我对自己在数据结构方面的知识进行了查漏补缺,尤其是在图这部分的知识,通过老师的讲解和指点,明白了问题所在和自己应该着重去学习的部分。

对补给站的建议

可以增开每单元前两次作业的评测。虽然我们在补给站需要完成的作业只有最后一次,但是我们在完成时依然需要和春季学期一样以递进的方式完成。增开前两次作业的评测可以帮助我们提早发现一些bug,从而及时解决。

心得体会

在这门课程中我最大的收获就是培养了面向对象的设计思维,明白了设计与架构在代码工程中的重要性,好的架构可以让后续的工作变得事半功倍。当然,我也在一次次的作业中锻炼了自己对于代码的阅读能力和编写能力。

在课程中我除了收获以外,也得到了一些教训。在春季学期中做事拖拖拉拉的习惯和面对问题产生的畏难情绪让我没能通过后面几次的作业。以前的知识掌握得不牢固的问题也在越来越难的作业中展现了出来。在之后的学习中要脚踏实地地学习好应该学习的知识,以更好的心态去面对之后遇到的问题。

最后感谢老师和助教们的辛勤付出,也愿OO这门课可以越来越好。

posted @ 2020-08-21 11:53  SpookyDreamer  阅读(177)  评论(0编辑  收藏  举报