最后一次OO作业总结

啊说到这里,终于迎来了最后的关卡了,但是我也实在是没有撑到最后...这点也只能和自己说一句很抱歉吧,确实比较遗憾,但是我确实因为自己的个人原因,导致两次的作业均未尽数完成全部的部分

最后是关于UML的结构分析,实际上就是对一个UML类图进行各种基本信息的检查,以及基本信息的查询

真的是很艰难了,看似通常功能没有什么,但是实际上在根据前面的UML类图指令进行构造就是一个很麻烦的事情

1、架构总结

这个其实主要还是要看第二次作业的...

首先我选择的是将所有的信息分入3个图种类内部进行

然后将其他信息全部存入其中,大概的一个思想如下:

如上为statemachine内部的信息,当需要检测重名的时候,将会使用HashMap双重嵌套,一旦value的长度大于2,即出现了重名的情况

然后在存入信息的时候,由于是乱序输入,所以需要有序和层级的放入,所以要将数据分为三层

第一层为3个图,第二层第三层为分别对应的子数据,分别分类讨论并放入存储结构当中

然后就是实现这些查询指令的功能,基本上没啥可说的,唯一要注意的是那些需要使用bfs的功能

然后UML语法检查,我其实并没有在ddl之前完整地完成过...不过也大致说一下

UML002只需要检测之前所说的HashMap即可,UML008则需要先查看parentClass的继承,如果没有检测到,则检测所有实现的接口,是否在存在的接口集合存在,再次访问parentClass

2、OO4单元进化历程

第一单元,仍然有些面向过程的意味在里面,逐步完善了正则表达式的使用方法,初步了解了什么是封装,初步了解代码风格

第二单元,学到了重要的多线程机制,虽然看上去也和oo的关系不是很大,不过结合同期的os,还是学到了不少东西,以及在写的时候出现的死锁等情况。对于每个步骤的封装也开始有一个系统的规划,更加的细致。也算是比较令人头疼的一个单元了

第三单元,虽说架构上已经没有太多可优化的了,但是实际上有意思的地方在于算法的分析与设计,不仅要考虑时间复杂度,还要考虑空间复杂度,对于静态数组与HashMap之间的权衡,需要把握好。

比较有意思的一点就是,将官方接口与需要的核心部分合在一起,就是一个完整的java命令行运行程序,事后对代码的通读会对自己的java程设能力有所提高

最后一单元是量最大的,虽然自己没能尽数完成,却也算是尽力地去做了。对于UML的存储结构有一定理解,而关于其语法检查还需要进一步提升,个人觉得这可以说是为了作业强行OO相关了一把,与前面几个传统的作业比起来还是略逊色了一些

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

其实4个单元的测试环节还是很重要而且互异的

第一个单元,一开始的测试其实很烦人,但是后来知道了通过matlab直接进行对拍,来确保正确性。对于长度我就不怎么想管了,不过到了最后还是比较顺利的完成了

第二个单元,其实测起来比较烦人,除了暴力轮询之外产生CPU_TLE的问题还是很烦人的,以及出现了死锁的情况,这个基本上就是考虑重写,以及notifyAll的问题...然后对拍其实和评测机的测试方法又不太一样。不过这一段的运气很不错,没有出现很多玄学的bug,顺利的活过了3个作业,没有出现问题

第三个单元,这回的强测就很粗暴了,也彻底的让我明白,我自己构造的数据就算有7000行,也完全不够强。在其中先后发现了equals与==的本质差别,写hashcode也需要注意复杂程度,动态数组与静态数组的权衡利弊以及维护性,算法的转换与考虑情况,很多的事情。可以说是很有意思的一章,测试起来也需要与他人进行对拍。在构造千行以上的数据时,需要自己对输入输出再处理,重定向,方便分析。可以说是学到了很多了。然而Junit我到最后也不是很会使用,对我来说并不是很方便

第四个单元,其实就需要仔细地分析所给出的基础样例。针对所有可能出现的bug去测试还是很重要的

 4、课程收获与总结

这个其实前面也说了不少

先说说和OO无关的东西,就是java中小型程序设计,多线程设计,命令行程序设计(虽然这个不是自己动手去写),关于这一点,官方接口包是很有参考和示范价值的

然后关于面向对象,所谓的规格化和模块化,我感觉还是需要多看别人的代码,研读相关书籍,才可以有更多的认识,关于这一点我对自己的学习不是很满意

关于测试方面,在日后工作确实是一个很重要的事情,感觉在这一方面的处理和思考,我确实学到了不少。不过在之后刷评测机的时候,这一点是否会用上,对于运行时间和CPU时间的把握到底需要多少,我对此依旧存疑

5、课程建议

 关于这一点我之前确实也想过很多

1.课上测试希望能变得有更多的意义,这届对课上测试目的的定位依旧是意义不明的

2.课程的码量可以再少一些,尤其是UML的这里,希望每一次ddl都可以变得有意义一些,还是感觉过于吃紧

3.在指导书方面还可以进一步加强,在第一单元和最后单元的指导书其实依旧是模棱两可的

不过今年的剧变意义还是很大的,真的很感谢老师和助教们忙前忙后所付出的一切!

衷心希望这门课程会越来越好,越来越多的同学能从中学到东西!

猜你喜欢

转载自www.cnblogs.com/GoatGirl98/p/11075132.html