OO第四单元总结

一、第三单元架构设计

第一次作业

第一次作业是实现一个UML类图分析器,主要理解类图各元素的含义,涉及Class、Operation、Interface、Parameter、Attribute、Generalization、InterfaceRealization、Association、AssociationEnd。对Class、Operation、Interface都新建了一个My的类存相关属性。受第三单元的影响用了大量HashMap和HashSet存储数据。这次作业主要得理解指导书的说法,有些地方容易让人产生误解。

UML类图

第二次作业

第二次作业增加了对顺序图和状态图的解析。其中一些没有用到的元素我就没有存。因为方法太多超了500行就单独建了一个方法类存部分方法。

UML类图

第三次作业

第三次左右增加了有效性审查的部分。复杂一点的方法也就是用bfs解决。

UML类图

第三次作业500行就快扛不住了,应该把三种图拆成三个类的。如果继续迭代开发的话管checkstyle就必须要重构。

这个单元作业不像第三单元,基本不会卡时间,遍历暴力bfs就行。

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

第一单元

多项式求导次次重构,再加上重度拖延也没有仔细思考架构设计,主要运用的还是面向过程的思想。

可能第三次作业有点面向对象的意思了,但是毫无化简全是括号也很让人头疼。

第二单元

电梯单元没有理解清楚加锁的应用方法,前两次作业设计比较奇怪,导致了第二次作业强测出现大问题。第三次作业回归正轨,但是保险起见都没怎么优化。

第二单元主要还是注重对多线程的理解与调试,还好我也没遇到难以复现的多线程bug。

面向对象方面,可能因为没怎么优化,没有涉及复杂的调度算法,所以类也不多,但是也都各司其职了。

第三单元

JML单元就是根据规格写代码,没有什么自己的架构设计,重在理解JML,还有就是要用一些图的算法。面向对象的内容也是给出了的。

第四单元

第四单元由于时间紧张架构设计并不太好,没有把类分开。这的确不够面向对象,但我还是知道应该怎么写的只是没有付诸实践。

 

这四个单元架构设计很多情况下都不尽如人意,概念理解也不到位,主要还是时间比较紧张,面向ddl编程。

面向对象思想理解当然也越来越深刻了,但是后两个单元也并没有涉及多少面向对象思想。

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

在测试方面我基本上没怎么测,尤其后两个单元基本就是跑跑样例,一方面是比较菜,另一方面是越来越摸。但是我写程序的时候基本都考虑的比较清楚了,再加上看了讨论区的大佬们的发言,所以可能问题不大。

第一单元

第一单元我在后期按照讨论区的方法写了自动评测程序,但可能因为写得太差还是用处不大,不如自己手搓数据,但是自行求导也比较麻烦。

这个自动评测程序放互测还是有点用的,但更多的错还是WF和TLE了。

第二单元

第二单元多线程bug可遇不可求,主要还是靠互测找bug。自己就是测了一些基本的数据。还好没有遇到难以复现的bug。

这次没写自动评测程序,就是写了个定时输入的程序方便改bug。

第三单元

JML这个单元测试也就是测了一些基本功能。基本就是理解对了JML就能写对,时间复杂度方面注意多缓存以及更新缓存,还有就是多看看讨论区的坑点。

第四单元

第四单元就是测试了样例。主要指导书容易让人误解,跑了样例才知道指导书说的是什么意思,理解了指导书的说法就好了。暴力bfs也不会超时的。

 

测试主要还是保证程序正确性的,正确性应该在程序设计的时候就要考虑到,主要还是得准确理解题目吧。

一些情况下能想出测试数据基本也知道自己错哪了。

自动测试程序太难写了,感觉也用处不大。

一开始对测试还是比较有热情的,后面就不太想搞了,除了样例顶多也就造一些基本的功能测试数据。

四、课程收获

学会了java语言,会写一点测试程序,了解了面向对象思想和多线程编程,还有学习了JML、UML等,锻炼了我的编程能力。

五、建议

  • 最后一单元的指导书容易造成误解,如第一次作业的CLASS_ASSO_COUNT我理解成了有关联的不同类的数量,测了样例才知道是所有关联的数量。
  • JML单元可以考虑放在最后一个单元,临近考期养生一点,UML在理解上还是有一定难度的。
  • 实验课可以考虑再简单一点,毕竟都是不熟悉的知识。

六、线上学习的体会

我个人感觉线上线下学习差别不大的吧,不管是作业还是其他。

可能腾讯课堂有利于回放然后腾讯会议有利于讨论。感觉大家讨论还是挺热烈的。

OO课确实比较花时间但是体验也可以,虽然强测互测都炸过但也是一种收获吧。

posted @ 2020-06-16 17:30  lidyo  阅读(139)  评论(0编辑  收藏  举报