第二阶段实验总结

0.前言

本次博客主要是针对pta上三次作业情况的总结

1.作业过程总结

①第一次作业练习的主要是继承以及正则表达式的书写,第二次的图形题目又是在第一次作业的基础上增加了个多态以及ArrayList泛型的用法,并且还进一步让我们熟悉了正则表达式,第三次作业在前两次作业的基础上多了个接口的应用,增强了对开闭原则的认识,三次作业的知识点都是层层递进的,使得我们对oo的编程思想更加深入。

②在每一次作业推荐的类图中都可以看到每个对象的属性都是私有的,在另一个类中只能通过get和set方法对那个对象的属性进行操作,在图形继承的题目中,由一个shape类引申了多个不同的类,这些类都是生活中实际的例子,由生活经验可以知道这些类中都有他们父类相同的属性和方法,并且子类可以拥有出更多的方法和属性,在练习继承那个的题目的时候我们可以看到,一个父类可以发散出多个子类,这些子类有的属性,方法也不同,例如三角形有三条边的属性,可是长方形拥有长和宽。这些例子很好地加深了对继承,多态,封装的理解。

③在作业中遇到的最大的问题就是经常会习惯性的用面向过程的思想看待问题,总是会习惯性的把代码往Main函数里堆,就比如上次的水文校验实验,我的Main函数写的老长了,写完后发现不仅可读性差,复用性也挺差的,如果需求更改了,很多地方也都要跟着改,花的时间会比其他人要多出很多倍。还有一个问题就是看到题目有时候不知道怎么将他拆分为一个个类,会将问题想得很复杂,每次在写题目之前会想一遍自己的思路,思考出来的东西往往都比推荐的类图要复杂的多,思考深度不够。现在我还在转换思维的路上,我在每次写题时都会想着如何写的简单,如何写的复用性强,而不是一味的完成任务式的编写。那啥思维深度不够的问题,就靠后期慢慢琢磨吧,多看看别人的类结构图,从中多感觉感觉。

④第一次实验花的时间最长,大概写了五天的样子,第二次试验,花了三天好像,最后一次试验就写的比较快了,两天吧。每次作业花费的时间比例就是5:3 : 2。

⑤在动手编程之前一定一定要在脑中把框架都搭好,一定也要想好哪些地方应该注意的,就比如第一次实验中的水文校验试验中,刚开始我就只考虑了去除里面的空格这之类的东西,当写完了去pta上验证时,发现有几个测试点过不去,后来询问了朋友改了挺多地方的,此时发现,如果没想好就写,后续可能修改的很多,有一种牵一发而动全身的感觉。

2.OO设计心得

①对面向对象三大技术特性之间关系的理解

开始我只是肤浅的认为封装是为了不让外界随意访问成员,更有安全性。继承好像和封装没有很大关系,只觉得让代码量变少了,多态只是一种现象罢了。不过,我还是去网上求证了,有一篇博客里说,封装是为了增加访问限制,只让外界使用本类所想提供的功能,让外界不能随意破坏对象。而继承则是为了在保持封装特性的同时,去突破访问限制,例如protected这个访问权限的存在,不同包的子类可以访问不同包的父类的protected成员。有了继承关系,就可以通过向上和向下转型以实现多态。多态的作用大多是在利用向上转型传递子类对象。(原文链接:https://blog.csdn.net/weixin_43157199/article/details/82927257)再联想起来老师经常提到的开闭原则,这么一说他们三者的关系紧密了不少。

②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)

单一职责在我看来是一个类只履行一种职责,其他类的改变与他无关。开闭原则经过上面的启发,在我看来大概是类的有些功能可以对外开放,就是延伸出来的继承了,有些东西是只有内部才能更改的。

③OO编程思维的理解

我认为的oo编程思想是类似于个工厂,批量生产一堆相似的东西,他每个类的属性方法不同,而你用同一个类生产出来的又相似,每个类可以延伸出其他类,这些类继承了父类的属性方法,还可以改写一部分方法,这就称为多态。

④类设计心得

Emmm,在这方面自我感觉做的不太好,经常会去沿用指导书推荐的类,对于一个比较抽象的题目很难具体化,不知道怎么拆分,就比如那个雨刷题目,害,太难了,不知道咋着手。

3.测试的理解与实践

①测试对于编码质量的重要性

一个好的程序,是要经的起任何测试,这样才不至于在给用户使用时出现错误,影响用户的体验感,测试点可以让程序健壮性更强,如果在交付前没有经过充足的测试,在后续你一旦发现可能就要耗费大量的人力物力财力,短期内可能还修复不完,也可能在修复的过程中会牵连出其他的bug或者制造出更多的bug,用户禁不住你长时间的等待。

②查阅资料,假设使用Junit进行程序的测试是否可行

可行,他经常用于极限编程和重构,要求在编写代码之前先写测试,这样可以强制你在写代码之前好好的思考代码(方法)的功能和逻辑,否则编写的代码很不稳定,那么你需要同时维护测试代码和实际代码,这个工作量就会大大增加。因此在极限编程中,基本过程是这样的:构思-> 编写测试代码-> 编写代码-> 测试,而且编写测试和编写代码都是增量式的,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度。使用junit的好处就是这个结果是否正确的判断是它来完成的,我们只需要看看它告诉我们结果是否正确就可以了,在一般情况下会大大提高效率。它一般用于测试期望结果的断言(Assertion),用于共享共同测试数据的测试工具,用于方便的组织和运行测试的测试套件,图形和文本的测试运行器。

4.课程收获

总结这四周来在OO方面的教训及收获

在这几周中最大的收获就是通过每一次作业对图形题目进一步的深度挖掘,基本了解了封装,继承,多态,同时也通过百度也了解了ArrayList泛型,接口这些东西,并且通过前几天同学讲解代码,我发现有很多知识点可以有不同的妙用,不要太拘泥于课本上的东西,就比如那个try,catch。

5.对课程的建议

①第三阶段作业难度、题量的建议

希望第三阶段的作业难度比前面的大一些,难度一定一定别增太快,过度别太狠,给个适应的过程,题量的话就一道大作业,三道普通实验吧,多的我怕我承受不来。大作业再难一点就减掉点普通实验吧。

②课程内容讲解方面的建议

在课程内容方面感觉老师讲的挺好的了,暂时没有发现有啥问题。

猜你喜欢

转载自www.cnblogs.com/Je-taime/p/passage1.html
今日推荐