1.作业的架构设计
(1)对于第一次作业中,要求我们实现关于类图的查询指令。
在这次作业中,主要采用的储存方法是哈希表。
在查询方法上,大多数要求诸如共有多少类等,利用哈希表进行查询即可。
比较困难的一些指令在于,顶级父类以及类的全部接口这两个。这两个涉及到的更多在于图的遍历问题,所以笔者采取的方式是递归遍历方式。
(2)对于第二次作业中,在继承了类图的查询指令之外,还增添了关于顺序图和状态图的概念,以及三条规则的要求。
在储存信息方面依旧采用的是哈希表,第二次作业和第一次作业的区别最大就在于是遍历上了。第一次作业可以不采用递归,利用循环也能做,第二次作业就是较为纯粹的图的遍历,我用的方法是深度优先遍历的方式。
2.四个单元中的架构设计及OO方法的理解演进
(1)第一个单元,基本上架构没有什么特别深入的理解。作为新上手java的小白,第一感觉是java能够提供的函数或者是方法容器比C多了很多,所以在写第一单元的作业时,基本上都是在用C的思维来写的。事实上是第一单元的作业在第三次作业的时候如果采用类的思维来写得话,整体的速度会快很多
(2)第二个单元,多线程电梯问题。从迈入第二单元后,发现的问题就是,我用C写不出多线程(可能是可以的,只是我比较菜)。所以就开始比较困难的学习多线程的知识,在网上找类似的问题,去研究代码,最后在架构上,就开始利用一次一次作业的继承,稍微修改一下就好很多。
(3)第三个单元,规格设计。规格设计,是我三个单元作业中完成最好的一次。在规格作业中,除了研究好的架构,受到CPU时间的限制,就开始研究程序的性能,会不会出现爆掉的情况,这个时候,我觉得就有点学到一点好的架构的感觉。
(4)第四单元,具体的感觉和第三单元差不多,但是难度会更高一点。
3.测试理解和实践的演进
在第一单元中,由于之前的习惯,就比较喜欢用数据去测程序,但然后自己感觉差不多了,就交测评机了,但事实是,测评机的错误有时候是隐藏的数据,如果找不出那个类似的数据错误,就很奔溃。
在第二单元同上。
在第三单元中,因为引入了规格,在理解上就更好了,所以有了一个比较好的理解,构思程序起来就显得比较清楚了,整体去测的时候也没有数据的问题。在这一单元中,影响最大的是对于程序的性能方面,也就是程序的CPU时间和测评时间。
第四单元同上。
4.课程收获
对于OO而言,其实算是学会了关于java上的一些方法,包括多线程,以及java的一些容器。也能够看到很多大佬写程序时候就很严谨,但其实对于我这种新手玩家来讲,也不是说不想写的严谨,就是确实是心有余而力不足,不过能够初步的了解java,已经算是很大的收获了。
5.建议
(1)以后能不能把实验课不要放在单周下午啊,感觉就是上午上完,下午就得现场写,就freestyle的感觉。
(2)关于互测这个问题,说实话讲,两天的时间去读同房间人的代码,能够读1个就很不错了,毕竟你系大二下不只是OO,一周下来也就只有周三周四能休息了,如果愿意牺牲这个时间去找的话,也没什么话讲,今年感觉也不是很狼,但就是,可能会有种不舒服的感觉吧,帮同学找bug,让自己加分,然后让同学看着成堆的bug哭,也不太好。