OO第四单元总结&&学期总结

OO第四单元总结&&学期总结

(1)总结本单元三次作业的架构设计

  本单元三次作业的架构设计我有点偷懒。第一次作业就一个大类,第二次作业将状态图和时序图分别在建类,第三次作业再将检查方法分为一个大类。信息的存储就用HashMap,将查找时会用到的id与element关联,然后根据element tpye的不同分别存到不同的HashMap,需要用时就从HashMap里找。

  所有信息都存在HashMap中,好处就是查找时间短,运行速度快,但是缺点是传递信息的时候由于不同信息储存在不同的HashMap中,传递参数多。同时element之间层次关系并没有在代码实现中体现出来,而是要到具体方法中,根据逻辑来不断地根据id查找element,在根据下一次element的信息得到id,再根据新的id去找。这样来看所有的HashMap像一个平行的关系,而如果通过建树的方法就能更清楚地知道element之间的关系。

  bug方面:第一次作业中data8出现了超时错误,原因是因为在找父类的时候没有去重,导致在程序中出现了大量对重复元素的判断,最终导致时间超时。第二次作业未发现bug。第三次作业data1出现了错误,原因是对R001错误的理解有误。

(2)总结自己在四个单元中架构设计及OO方法理解的演进

第一单元:刚刚接触面向对象编程,虽然暑假有些预习以及读了大量参考材料,但是第一次面对作业还是有点迷茫。从面向过程编程过度到面向对象编程还不是特别适应,不能很好地拆分类和方法。所以第一次作业花了很多时间考虑。第二、三次作业的情况就有所好转。但是在多项式输入的解析方面还是没做到很好的抽象,还是带有很多面向过程的味道。但是在架构方面,在因子、项、多项式的抽象还是做的比较好的,还是达到了训练的目的。

第二单元:多线程。在第一单元训练的基础上,对类的抽象构思就比第一单元作业时快了很多。很快的就确定了请求输入、电梯、电梯调度器、电梯信息表这几个类的总体架构。但是多线程是一个全新的内容,无论从理解还是实现正确性上比单线程还是更难的。最难的点还是debug,由于多线程运行的问题,对共享变量保护的检查比较困难。很难发现具体的错误点,还是着把信息一点一点print出来,一点点定位。

第三单元:架构方面都按照课程组给的代码,只有在最后一次作业中为了优化算法引入了新的类。这个单元主要是对JML语言的理解。代码架构方面并没有太多新的构思。

第四单元:第一个总结就讲的比较清楚了。因为懒也没啥好讲的

(3)总结自己在四个单元中测试理解与实践的演进

第一单元:因为前两次数据复杂度有限,基本可以列出所有的分类。第三次就开始编写随机生成代码了。

第二单元:第一次作业大部分是解决线程同步问题以及共享变量保护,测试数据就自己构造几组,主要是在测试线程安全的问题。后两次作业就稍微有点复杂,采取的是随机生成数据加对拍。

第三单元:学习了Junit,测试转向了Junit。在编写程序前通过先构造数据来达到测试的目的。除了第一次作业对JML理解不小心翻了个大车,其他并没有出现太大的问题。由于完善的JML规格,所以构造数据还是比较容易的。

第四单元:基本上还是沿用了上个单元的思路。

(4)总结自己的课程收获

首先是代码量,是前所未有的。从一开始写完一百多行代码就忘了自己开始写了啥,到最后一个单元一千多行的代码都游刃有余地掌控,这里地收获还是特别大的。

还有就是学习了面向对象的编程思想,完成了从大一C语言面向过程编程的一个转变。经过一个学期的学习,也能够比较好地判断如何运用着两种编程思想。

第三就是阅读了很多别人优秀的代码无论是同room同学的代码还是每个单元之后的优秀代码以及研讨课上同学的分享,学习了很多他人优秀的想法。

(5)立足于自己的体会给课程提三个具体改进建议

一、希望课上实验能有个讲评以及公布答案。每次实验之后有疑问的点就不能得到官方的解答。

二、同room的人数感觉过多,除了前两次代码量小还能够阅读,之后没有时间完成所有成员代码的阅读。

三、因为课内时间有限,讲的内容有限。希望课程组能给更多的优秀阅读资料,作为补充。

(6)谈一谈线上学习oo课程的体会

感觉这们课不是特别依赖线下学习,个人感觉oo课程线上效果跟线下效果是最相近的,没有感受出太大的区别。教学效果个人感觉比较不错。

一个学期就在线上学习结束了,可以感受出来OO课程组的用心。对于课程难度个人感觉课程组难度以及节奏把握的还是比较好的,虽然紧张,但是不至于到忙乱。觉得这门课真的学到了东西,是一门好课。最后感谢老师和助教在这个特殊学期的充分准备,让我们能有正常的课程体验。感谢你们的辛勤付出。

原文地址:https://www.cnblogs.com/MuZiShuiYi/p/13166491.html