BUAA OO 第四单元

OO第四单元总结

本单元架构

关于本单元本人的架构并不是特别理想,原因是本单元第一次作业时使用了大量的hashmap嵌套,导致代码冗余严重。

整体思想就是利用hashmap存储各个信息,尽量进行o(1)的查找。

其中,对于getStateIsCriticalPoint()函数,本人通过建立并查集判断联通的方式进行查找,因此复杂度大于o(1)。

 

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

  在四个单元中,我的架构设计思维于面向对象方法理解逐步提升:

  第一单元时,我刚刚接触面向对象的概念,在设计架构时总是会不自觉地一main到底。同时在设计架构时总是会有冗余,代码风格不好。但是在应用分块思想处理表达式后,我的架构能力有了提升。

  第二单元开始接触电梯线程,一开始对于线程的概念我是非常不适应的,总是觉得其与正常的编程思维相悖。后来发现线程思想是十分重要的。在架构前拿起笔去写去画,将每一个类需要的资源想明白,自然迎刃而解。

  第三单元接触了JML,本单元我认为真正对我有帮助的是算法部分。因为为了满足强测需要,需要采用很多优化算法,例如堆优化的迪杰斯特拉算法等。本单元我也意识到了架构过程也要考虑程序的复杂度,做到设计简洁,算法简洁有效。

  第四单元学习了类图、顺序图、状态图。我认为本单元很好的让我提高了自己的基本功。就是利用怎样的架构可以最节省思维、最有效地解决问题。

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

在大一学C语言时,基本都是测试完样例就交,然后面向评测机编程。

而这学期的OO,中弱测的一些较难过的点都不公开数据,而强测更是只有一次机会,这时本地测试就尤为重要了。而且几次强测结果出现的我没有预想到的BUG也让我更加重视对代码的自我测试。

这学期的互测,除了第一单元代码量较小,可以阅读代码寻找BUG外,其他单元的作业我基本都是构造易错数据来对屋内其他人的代码进行测试。另外在研讨课上,我也学到了不用python写对拍器,也可以用JAVA写出自动生成数据以及自动测试的方法。

总结自己的课程收获

 首先我学会了java,以前都是用C语言编程,现在多学会了一门编程语言。

 其次我理解了面向对象的含义,这其中包含代码的封装,合并以及分模块的思想,对我今后的学习有很大的帮助。

 我也学会了如何自己做代码测试,例如写对拍器,自动生成数据等。

 同时在研讨课上,跟同学们进行交流,上台展示也让我认识了很多大佬,也学会了如何高效地讨论问题。

课程提三个具体的改进建议

1、个人认为的单元难度变化有些大,例如第一单元到第二单元难度明显增大,二到三又明显降低,虽然可能考虑到了期中、期末的影响,但个人认为可以适当换下单元的顺序,例如四、一、二、三。先学了四可以对类图等Uml有更深刻的理解,做其他单元也会从不同角度去思考,写博客也会方便;三放到最后考虑到烤漆,个人觉得难度合适。

2、我们这学期有JML单元和UML单元,我觉得也可以给JUNIT或者其他代码测试的工具也开一个单元。

3、稍微提升一下中测点的难度。

posted @ 2022-06-25 20:11  KeiEswy  阅读(23)  评论(0编辑  收藏  举报