OO第四单元总结
OO第四单元总结
一、总结本单元两次作业的架构设计
这个单元的两次作业所涉及的指令数目较多,数据结构较为繁多,其实现难度并不大,但是其规模较为庞大,复杂,实现起来十分费劲,而且对于指导书的需求也不是理解的十分到位。在本单元第一次作业时,由于对于关联指令存在着一些误解,在实现过程中遇到了许多的困难,第一次作业未能顺利完成。在第二次作业中也出现了同样的状况,但是在老师、助教以及同学们的帮助下,通过OO课程官网的讨论区平台的引导,我还是完成了第二次的作业。
首先,在第一次作业的时候,我采取的是对于每种需求单独建立图结构,对于每种需求使用递归函数进行处理,这样就会导致代码量重复且较为复杂的情况出现,这也是我未能顺利完成第一次作业的主要原因。在第二次作业时,我将每个需要较为复杂处理的对象单独建类,采用的是对于UMLClass以及UMLInterface这两种指令整合起来建立递归函数,同时也将其他的小递归写入对应了类中,层次化进行处理,这样会更加的方便快捷的处理我们所需要的指令,得到相对应的结果,我的类图以及clas复杂度如图所示如下:


在debug的过程当中,我碰到的问题主要是对于指导书的一些概念细节理解不清而导致出现的结构性bug,因此在debug时,常常会面临大幅度修改结构的情况出现,因此这两次作业在bug修复阶段所花的时间较多。同时,由于这两次作业涉及的内容较为复杂,因此,在模型建构方面,也花了较大的功夫,而且代码量也相比之前的几次作业来说有着巨大的提升,这里也极大的考验了我的抗压能力以及将UML模型需要转化成为面向对象语言的能力。除此之外,出现了其他类型的bug也是多种多样的,比如手残打变量名,没有考虑空指针的情况等,这些问题都在后来逐一得到解决。
二、总结自己在四个单元中架构设计及OO方法理解的演进
在四个单元的学习过程中,我的面向对象程序的架构在逐步的完善,并且在程序中也越来越体现了面向对象的思维方式。在第一单元的作业当中,我大幅度的使用了在两个个类中建模的方法(即一个main函数,一个主要类的实现)。这样在这里的处理会显得稍微方便简洁,但是不怎么体现出面向对象的方法,而是显得过于面向过程了,但是,在第一单元第三次作业是,由于涉及到递归构建分层树的需求,于是在普不得已的情况下多建立了几个类进行相应的操作。在第二单元电梯调度的作业当中,很明显,之前的两个类无法满足多线程调度的需求,因此,这里我多建了几个类去存电梯,乘客,调度器等对象去处理相应的内容,这是出于对作业需求的必要改变,同时,通过这里的学习我才算真正意义的使用了面向对象的思想去解决问题。因此,在后面两个单元的结构构建的时候,我比较熟练的将各种需求转化成为相应的对象,并根据对象的需求建立不同的类,实现各种功能,这样会使得程序的间接性和可读性有了较大的提高,并在第四单元里基本上都是使用面向对象的思想,将每个功能都建立成为一对象,单独进行管理。
三、总结自己在四个单元中测试理解与实践的演进
在测试的时候,我一开始是以需求为导向,直接输入来测试一些简单的程序样例,这样主要是针对一些特定的功能和情况进行定点狙击,到后来,我逐渐了解到了如何自己构建测评机系统,并成功的在第三单元中进行了尝试,但是效果不是特别理想,自己构建的测试代码并没有有效的找出程序中存在的bug,而在这四个单元的学习中,我主要是借助自己的定点分析,OO课程官网上面的部署的测评机系统以及其他同学测评机中构造出的比较好的测试样例来解决问题。我认为,测试应当包括覆盖性测试以及特定功能的测试,这样才能保证测试的完备性,即先通过覆盖性测试尽量找出可能存在的一般性bug,再通过特定功能测试来实现对于bug的定点爆破。
四、总结自己的课程收获
在OO这门课程的学习中,我不光学习到了面向对象的思想,而且在许多其他的方面,例如,构建工程化能力,代码能力,数据结构能力都有了较大的提升。每个单元的三次,可以看出的是,我们作业的工程化需求在逐步增加,而在需求不断增加的时候,则要求我们的代码具有较高的可拓展性,否则就面临大规模重构的危险。而对于我们学习的四个单元的作业来说,每个单元相比代码量都有了极大的提升。从第一单元的两三百行,到第四单元最后一次作业的近两千行,我们都在相同的时间里完成,这显然让我们的代码能力有了巨大的提升。同时,在OO作业时,我们面临的不仅仅是完成特定的功能需求,更主要的是如何通过一个数据结构来达到完成我们特定功能需求的能力,比如,在第一单元里面出现的树结构,在第三单元中出现的BFS以及floyd算法等等,以及第四单元的花样递归以及类的构造,如何处理类与类之间的关系,这些都极大的提升了我们对于数据结构应用的理解和认识,并学会了如何灵活使用各类的数据结构及其应用,这对我们的学习能力有着巨大的提升。同时,在另一方面,OO课程给我们带来了一种心理上面的提升,即面对如此复杂的作业指导书,我们可以在规定时间内完成,这对我们的信心有着极大的提升,因此,OO这门课程所带给我们的提升是全方面的。
五、立足于自己的体会给课程提三个具体改进建议
对于OO这门课程来说,我觉得相比于之前来说有了巨大的改进,相比于学长之前所描述的情况,在今年有了巨大的改善,课程体系变得愈发完善,也更加人性化,合理化。我这里基于我的体验给出几点拙见。
首先,课程在一开始的时候可以稍微让同学们更容易接受一些,在学期开始时,我们一些同学才刚刚接触了Java这门语言,对于其中达到一些操作并不是特别的熟悉,而在仅仅上课三周后,我们就迎来了一个堪称变态的第一单元第三次作业,许多同学都不同程度的遇到了困难。
其次,在课程指导书方面,不容置否的是,相比于之前的OO课程上面指导书的质量有了质的提升,我认为仍有一些地方值得改进,比如第四单元的两次作业,在一开始都存在的表意不清,标准不一的情况,当然,主观上讲,这种 情况当然是可以理解的,但是希望之后的指导书能够更加的具体清晰些,最好在发布之前在内部进行更加合理的论证,以尽量做得更好。
最后,就是对于课程实验的建议。因为我们的课程实验时安排在单周,这就导致了我们可能上午学的东西下午就要进行上机训练,这样就面临一个问题:如果过难,同学们短时间内并不能接受刚学到的知识;如果过易,则达不太到训练的目的,因此,我建议对课程内容的安排进行合理的调整,尽量避免上述问题的出现,给同学们充分的准备时间。
总而言之,今年OO课程体验极佳,效果很好,希望新的助教(dalao)粑粑们善待学弟,将OO课程变得更好!
浙公网安备 33010602011771号