前言:

  第二阶段相对于第一阶段的作业难度大了不少,第二阶段的三次作业就涉及到了真正基础的东西,正则表达式,继承,数据合法性的校验,多态并加强我们对面向对象的封装性、继承性、多态性特征的理解.

作业过程总结:

1.总结三次作业之间的之间迭代关系

  每次作业都是随着课程的推进而相应布置的 ,所以知识的都是逐步深入的.

  第5次作业水文数据校验及处理,相比于之前的题目来说,难度跨度太大了以至于很多人没做出来,这道题涉及到正则表达式,StringBuilder以及Stringbuffer和字符串类似分割替换等方法.其他都很基础只涉及到类的继承.

  第6次作业一元多项式求导依然涉及到正则表达式,但难度也大了不少,需要对很多情况进行考虑.并且求我们使用List类的ArrayList方法以及LinkedList方法。图形继承与多态则都是

老师上课讲过的内容.

  第7次作业难度跨度没有前几次的大,因为都是上课讲过的内容,没有涉及到其他内容,只要掌握继承极多态,还有Comparable接口的实现即可.

2.如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性

   通过作业,我们可以在写代码的过程中,慢慢体会到三大技术特性的特征,并且在对代码的修正与完善的过程中熟悉并掌握这三大特性.

3.作业过程中遇到的问题及解决方法

  第5次作业中的水文数据校验及处理问题,主要问题是太多课外知识没有接触导致无从下手,并且课内知识也没及时巩固很生疏,这让本来就很绝望的我雪上加霜,我最不能明白的是正则表达式没有接触过小题的训练,直接处理水文这样的长数据致使我蒙了很久.所以我明白老师讲的与老师布的基本上不会完全照应,于是在我看完相关的CSDN博文后题目基本都可以做出来,但两个测试点没过,所以只有88分,另外的蒙特卡罗方法求圆周率图形继承的知识都是老师上课讲过的知识所以没有花太大功夫.

  第6次作业中一元多项式求导还老样子太多没有了解过的知识,但比第5次作业还要复杂,这题用到了更为复杂类之间的关系与更为复杂的正则表达式,但只要了解了各个类的职责与每个正则表达式所代表的东西便没有那么棘手,搜索并了解完相关知识后所有问题便迎刃而解,另一题的图形继承与多态没太大大的问题.

  第7次作业的话可以说是这三次作业里最简单的题目了,但是在大佬帮助下发现我有个问题,就是没有用题目给的主函数,所以我在两个类里分别创建了一个Scanner对象导致输入后不能正常输出,不过在我的eclipse里却可以按照要求输出,我很迷, 但我没有去问别人,因为他们只会我去百度.

4.每次作业花费的时间比例

  第一次作业用时四天,第二次作业前后花费两天,第三次作业用时两天.4:2:1.

5.对编程过程的严谨性的认识及教训

  编程之前要有清晰的思路,最好画出类图,这才能尽可能的吧每种情况都考虑下来,不然的话中间一乱套没人帮得了,除了自己,让花费个把小时去找bug改bug,代码要尽可能简洁,使用多次简单循环,而不要使用我们算术的简便思想,这样就算有逻辑错误也很容易解决,从而保证编程过程的严谨性,我第三次作业就是用平常思维完成的,期间犯了很多逻辑错误,最后的代码还很臃肿,有400多行.

OO设计心得:

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

封装减少了大量的冗余代码封装将复杂的功能封装起来,对外开放一个接口,简单调用即可。将描述事物的数据和操作封装在一起,形成一个类,被封装的数据和操作只有通过提供的公共方法才能被外界访问(封装隐藏了对象的属性和实施细节),私有属性和方法是无法被访问的,表现了封装的隐藏性,增加数据的安全性。

继承减少了类的冗余代码让类与类之间产生关系,为多态打下基础若一个新类继承了原有类的属性和方法,并增加了自己的新属性和新方法,那么这么子类就可以完美地实现它应该具备的功能。在做题时我发现构造器(构造方法)是无法被继承的,但是子类生成对象时默认会先执行父类无参的构造函数(实例化对象,让子类可以使用父类的成员)。

多态同一个接口,使用不同的实例而执行不同操作。

2.面向对象设计的基本原则理解

  模块化设计,对象就是模块,把数据和方法紧密结合在一起构成模块,每个对象各司其职,只做好自己的本分工作,使其更具有通用性.

3.OO编程思维的理解

  我觉得关键得先找出对象,分析对象之间的关系后,再把类给抽象出来,分析完类与类之间的关联后在进行设计.

4.类设计心得

  类的设计要严格遵守面向对象设计的基本原则,希望在以后的学习中摸索出类设计的技巧.

测试的理解和实践:

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

  测试是检测代码质量标准,没有测试最为保证的话,一篇代码可能永远只能返回错误值,永远不能为人所用,这时代码只能算是一堆无用的字符,就算只有个别错误,没有测试的话,这个错误就无法被程序员及时发现并修改,有bug的代码只能称为bug,而bug满足不了用户的需求.总之没有测试,代码的质量就得不啊到保证.

  此外,代码的测试还可以用来测试代码的运行是否流畅和测试代码的运行速度,再加以修整从而提高代码的质量.

2.使用Junit进行程序测试是否可行

  Junit百度上的解释 :  这是单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。我们先阶段可以用它来测试预期结果、测试运行过程。

课程收获:

  经过这几周的课程学习与三次作业,也算是完成了面向过程向面向对象的过度,学到了之前课程完全没有提到过的对象的概念,对象是具体的,而类是抽象的,在Java中现有对象后有类,我了解到了面向对象设计的优势,一次编写,多处引用,功能的实现不在依赖于过程的编写,而取决于对象的选择和类的创建.

对课程的建议:

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

   题量可以加大增加小题对基础知识比如一些常用的方法加以巩固,但希望题目不要再加难.

2.课程内容讲解方面的建议

  求求老师多给点资料,一个一个百度太难了,还有希望老师上课可以录屏.