272
社区成员




本单元我们学习了UML模型设计的知识,这单元的作业也要求我们先画出UML图再写代码。具体过程是首先认真阅读题目,理解题目中所给的需求、要完成的功能;然后根据要求先画出图的架构,再添加细节;最后根据所画图的逻辑进行代码的编写,编写过程中对细节再进一步补充。对我来说在开始写代码之前就把所有的细节想好画在图里肯定是不现实的,所以这三次作业采取的都是“边写边画”的策略。
做第一单元作业时刚刚接触这门课,对面向对象思维甚至是java的语法都不熟悉,所以最开始能用面向过程就用面向过程。通过一个单元的学习我才慢慢从面向过程的思维方式中走出来,开始理解什么是面向对象编程以及面型对象的好处。、
第二单元的学习最为痛苦,我前期花了大量的时间了解多线程的相关概念,通过不停地问同学舍友才慢慢构建起自己的逻辑。虽然有了一点自己的理解,但写代码还是完全不够的,这个时候第五周的上机课救了我,从实验代码中学到了很多。这一单元我学会了多线程之间的协调调度,也学会了一个从那之后一直沿用的基本架构:一个调度器类,多个被调度的执行类。
第三单元对我来说最简单,花的时间也最少,主要原因在于要求都在JML规格中写好,不需要我们去题目中抠字眼,也不用思考架构、边写边改架构。但还是有困难的,比如规格的阅读理解,OKTest方法的编写等等。这一单元我学到了很多算法,比如维护并查集等,也学会了如何根据“甲方”JML规格的要求编写代码。
最后一单元重点在于UML图的绘制,我们需要根据题目自己画图自己建构模型。这一单元我才真正做到了先设计再上手写代码,并用UML图的形式将架构设计比较清晰地呈现出来。
四个单元中,我也很多次和同学对拍,或用一些评测机生成的测试点测试,但大部分的bug是我用一些自己造的针对性的特殊测试点找出来的。
第一单元我自己造了很多特殊边界数据用于测试,比如几个负号相连,多个括号嵌套等等。
第二单元我开始借用测评生成的测试点来测试。但发现输出有问题之后还是需要自己来造针对性的测试点才能发现具体的bug,具体哪一步有问题。
第三单元的测试主要面向OKTest方法的测试,我还是用测评机和手动相结合生成数据,一个点一个点进行排查,找出所有bug。
最后一个单元我测试的比较少,主要是沿用了上几个单元的方式。这一单元由于测试的不够,出现的bug比较多。
通过这一学期OO课程的学习,我学到了很多,包括面向对象思维、多线程的协调合作、根据JML规格写代码、画UML图等等知识。
虽然我还有很大的不足,和同学相比我还差的很远。但我通过这一学期的学习发现,面对巨大的工程量,极有难度的课程,我不是无能为力的,我可以通过自己的努力坚持下来,我会有进步,也会在一次次的挑战中提升自己的能力。