Java作业第二阶段总结

0.前言

    总的来说,第四次作业相对我而言是一次难度相对较大的一次作业,考察了我们对正则表达式和继承的理解;其次就是数据的处理,这是程序中最为关键的一部分;第五次作业,更一步加深了我对继承的理解,并引入了抽象的概念,以及多态的考察;继承和抽象也出现提高了代码的复用;并考察了我们数学中的求导算法。第六次作业算是在第五次,用到了Comparable接口和ArrayList,考察比重较大的是我们对程序的封装,让我们对封装有了更加深刻的认识;从第四次到第六次的作业有存在着循序渐进和由浅入深的关系

1.作业过程总结

 第四次作业有三道题目,分别考察了水文数据处理,蒙特卡罗求圆周率以及简单的图形继承;难度最大的则是水文数据那道题,其中包括数据的校验,数据的处 理,正则表达式本来就是一个比较陌生的概念,我也去为此学习了一下,在我几番修改下程序能够完全运行起来,不过后续的测试也存在少许问题,比如输入错误数据,输出格式就出现了问题,导致自己不能通过所有的测试点。第二题的求圆周率的题目的背景是蒙特卡罗;其中考察重点是随机数,我采用的是Random方法,问题也就迎刃而解,第三题相对来说较为简单,目的是理解继承;这次作业用时最多,作业提交当天才得以完成。

   第五次作业共两道题目,题量和难度方面较为容易;考查的内容主要是掌握抽象类的使用以及继承和多态的使用方法,所有定义的抽象方法都必须在子类当中进行重写,我使用ArrayList来存放数据,这样方便了很多对象存储。主要目的在于对继承多态的理解,两个题目都是处理图形,图形类型的对象有很多的类型,这样就可以用到类与类的继承,从而也为实现多态做了铺垫,多态的作用就是降低程序的耦合度,提高了程序的拓展性,同时也实现了程序的开闭原则。第五次作业相对来说用时较少,大概1天左右。

   第六次作业的难度居中,前两道题基本相似,要求是将输入不同的卡片并应用Comparable接口;实现卡片面积的排序和求和,第一题和第二题唯一的差别就是输出的格式不一样,第二题多了一个图形,以及分组,两道题都用了ArrayList来收集数据,并进一步处理数据,Comparable接口的使用,方便了数据的排序,需要对compareTo方法重写,进而实现此接口的对象列表(和数组)可以通过 Collections.sort进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。第三道考查的素数,虽说是素数,但是得分规则是根据程序所用的时间来计算的,这里就涉及到了程序的效率,也就是时间复杂度,想提高程序的效率必须使代码中的算法最优,达到最优则是不大可能的,毕竟求素数的方法多种多样,层出不穷,只能尽可能使其最优。从中我认识到了不管是任何代码,代码一定要简单并且复杂度低,这样才能大大的提高效率,节省了时间;第七次作业花费用时大概两天左右。

2.OO设计心得

1 OO设计的三大特性就是继承,多态,封装,它们相辅相成,继承为实现多态做了铺垫,封装则是将类包装起来,不让外界访问,下面我来谈谈我对他们各自的理解。

   继承:继承是能单继承,目的是为了重用父类的代码,让编程更加靠近人类的思维,当多个类存在相同属性时,可以从中抽象出父类。从而降低了代码的复杂度,提高了效率,且便于维护。

   多态:是一种类型,具有多种表现形态,可以使类与类的继承关系,好处是使程序灵活多样,处理大量对象的运算和操作时,提高了程序拓展性。

   封装:把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块中,并将其包裹起来,不让外界访问,目的是保护成员属性,不让类以外的程 序直接访问和修改;保护或者防止代码数据被无意破坏,隐藏方法细节。

2 原则理解

单一职责:一个类的修改只能有一个被修改,一个类只能负责一个职责,修改一个类不能影响到别的功能。目的是降低类的复杂度,提高代码可读性,易于维护。

-闭原则:类对拓展开放,目的便在于面对需求的改变而保持系统的相对稳定,从而进一步的升级自己的程序功能。

3)自身对OO编程的理解

    就是把构成问题的事务分解成很多个对象,然后建立对象,并且编写其方法,然后依次向不同的对象发送命令,进而一步一步地实现它所需要的功能直到解决问题。

4)类设计心得

    面对不同的问题,需要设计不同的类来进一步编写程序,好的类易于编写代码以及理解。我觉得类不在于多,而在于能够简便的解决问题,并且提升代码的可读性。

3.测试的理解和实践

    测试对于代码来说是至关重要的,好的代码一定能经得起测试以及考验。测试当然也需要好的测试用例,同时我们不可能一味地去把所有的合理数据都输入一遍,这样下来只会白白浪费掉好多时间。Junit测试能够大大缩短查找bug的时间,每个单元测试用例相对独立,便于测试,是十分可行的。

4.课程收获

     这四周以来,我感觉我的编程能力相对前几周以来有了很大的提高,表现在我一看到题目,瞬间思路就很清晰,每次作业都会给出类图,我都会进行修改,使其处理问题更加容易。其次就是对OO编程有了更深一层的理解,敲代码的速度相比之前快了不少,感觉这些还远远不够,希望在今后的学习中,自己能有更多的收获。

5.对课程的建议

这一阶段作业难度适中,题量可以酌情调配;

课堂内容讲解易懂,内容丰富,希望能在作业发布前讲授一些作业中存在但课堂尚未涉及的内容。

猜你喜欢

转载自www.cnblogs.com/18207139zhf/p/12811504.html
今日推荐