OO第四单元博客作业

一、作业架构

第一次作业

OO第四单元博客作业_第1张图片

第二次作业

第三次作业


本单元的三次作业我主要的设计是将课程组中的各种类进行一个封装。在此基础上,我们就可以加入自己需要使用的方法,并且将不同UML类之间建立更为直接的联系,形成一个树状结构。这样以来,不用通过id就可以找到相关的UML类。

在第三次作业中,由于checkstyle行数限制的缘故,我只能设计出一个checker类来专门错误的查找。对于不同的错误,我们将需要的类的集合传入checker中进行检查。

二、架构设计与方法理解

在第一单元中,我们对oo进行了一个简单的了解。在这个单元中,我学会了继承,多态,接口等oo重要性质的使用方法,并且能利用这些性质实现一些简单的需求。

在第二单元中,我们进行了多线程的练习。在这个单元中,我已经意识到了架构与可扩展性的重要性,所以在第一次作业中就对自己程序的架构进行了设计。坦白来说,我在第一单元中设计的架构并不是很好,但也算是一次很重要的练习,让我意识到了设计架构时需要考虑到的一些比较重要的问题。

在第三单元中,我们学习了JML。在这个单元中,我认为比较重要的是两次实验课。因为根据JML书写代码是比较简单的,但是写JML和利用Junit查找代码中的错误是比较困难的。这两次实验课针对这两个方面进行了练习,使我受益良多。

在第四次作业中,主要是针对UML进行了学习。我认为这个单元既是让我们理解UML图的使用方法,也是让我们能对代码进行一个更为抽象的理解,这样也有利于我们构造自己的程序。

三、测试理解与实践演进

在测试方面,我认为主要有两种方式。

第一种是自动测试。这种测试方式是比较方便的,因为只需要随机构造数据,给出正确结果即可,不需要关心这个数据针对的是哪个函数的哪个可能发生错误的点。这种测试的缺点是针对性低,能否找到所有bug是不确定的。

第二种是纯人工构造测试样例。在这种情况下,我们可以清楚地知道我们针对的是那些方法进行的测试,但是这样就要求写样例的人对题目理解的很准确,并且写样例的时候精力也比较集中。

我在大部分情况下都是使用自动测试的方法,因为这个相对而言比较容易一些,没有那么繁琐。在几次作业中也手搓过一些用例,不过基本上是用来测试一些方法的基本功能是否正确,对于边界条件的测试和覆盖性都比较差。

四、课程收获

经过这16次oo课程的学习,我积累的不少编程经验,也同时学习到了很多面向对象的编程技巧。在这门课的学习过程中,我的收获为以下几点:

  1. 大量的编程经验。以前写代码最多几百行,但是oo课程中动辄上千行的代码着实是一种新体验。并且这么多代码基本上不是一次写完的,这时对代码的拆分就很重要了。并且前两个单元中有着性能分的存在,使得我们也有很多机会思考性能与算法。
  2. 对架构的设计。以前写代码的时候并不需要考虑架构,一个函数就结束了。但是在oo课程中我们往往要对自己的程序进行一个设计,才能保证在后续的作业中可以迭代起来,否则就要用非常耗时的重构。
  3. debug技巧。oo由于代码量比较大,刚写完的程序往往会有一些bug。我们要从这么多代码里找到自己的bug或者确定自己的程序是没有问题的就需要利用自动化评测或者构造样例来进行测试。

五、个人建议

  1. 希望实验课可以公布成绩,也可以加入debug或者改错。现在的实验课不公布成绩,也不公布测试点,我们无法知道自己的程序是否是正确的,也无法学习到更多的知识。
  2. 第三单元作业在写的时候比较简单,但是强测又比较惨烈,看到群里有很多人在第三单元突然爆零,希望以后的测试可以相对分散一些,不至于因为一点错误导致大部分测试点都过不去。
  3. 第三次作业或许可以移到第一次去做,但是由于第三单元和第四单元有着些许连系,这样做也不一定很好。

六、学习体会

由于没有在课下上过oo,所以也不能进行比较。不过总的来说网上上课还是不错的。oo由于课程原因,主要的代码作业并没有受到很大的影响。通过视频的形式上课也可以避免一时没有跟上就完全错过了的情况发生。不过在家里上课总归没有在学校上课的感觉,这点算事美中不足。

你可能感兴趣的:(OO第四单元博客作业)