19201619-唐轩Java第二阶段总结性博客

前言

  本次作业较前几次而言,难度上有了很大的区别,尤其是到了抽象类和接口这里,比较让人难以理解。整体而言具有很大的挑战性,对于基础知识需要掌握的很牢。 在涉及到多态的题目里面,如果没有很好的掌握多态的概念,做起题目来的话还是有很大的难度的。并且一些工程类的题目由于数据众多,在下手时也很难办。

一、作业过程总结

  1.第五次作业题目是水文数据校验及处理、蒙特卡罗方法求圆周率和之前也有的图形继承,就这三道题目而言难度是逐级递减的,这三道题目主要都是通过继承来解决问题的,但由于第一道题目要求运用正则表达式对输入字符串数据进行合法性校验及计算,并且水文检测数据也比较复杂,因此难度系数很高,只有极少数的同学能够完成。第二题是求圆周率,通过模拟落点来近似的求圆周率的值,其主要实现方法主要是通过类来实现,因此也比较容易完成。第三题图形继承题目因为之前有类似的题目,因此也比较好下手。第六次作业虽然只有两道题,但是由于是第一次涉及到多态的题目,因此也会感觉到有些吃力。在第二题一元多项式求导的题目中也是要求需要运用正则表达式来判定输入是否合法,因此难度也比较大,在写正则表达式的时候掌握不牢,匹配器运用不熟练。第七题则是在类的继承、多态性上再添加了一个接口的概念,比之前的题目会更加的复杂一点,两道题目都是图形卡片类的题目,差别不大。但难度在于接口的概念会让人很难理解,不知道如何去使用,在有些函数的意义上也不知道有什么作用,导致题目的完成度不高。

  2.在第五次作用中主要还是类的继承为主,后面的作业则是逐步的增添了多态和接口的概念,在做题的过程中,我了解到封装性是指将代码封装到一个大括号里面,外面不可以对它进行访问,只有自己可以访问内部的数据。而继承性是分为父类和子类的,首先声明一个父类,然后声明其他子类来继承父类的一些属性,父类里的一些变量和方法子类是可以直接进行使用的。多态性则是分为方法的重载和重写,方法重载是指方法的名称和返回类型都是一样的,但是有区别的是参数不同。而方法重写是指子类继承父类的方法,但是在子类的类里面还定义了一个和父类中的方法一样的方法,但是方法体不一样。

  3.第五次作业中的第一题水文数据校验由于需要用到正则表达式并且需要使用到的数据量较大,因此难度也是很高,暂时还没有什么解决方法。第三题中的图形继承题虽然是之前做过的题目,但是还是在做的时候遇到了一些问题,题目要求只保留两位小数,刚开始的时候不知道怎么去保存,后来通过上网查资料,了解到了String.format("%.2f", (需要保留小数的值))方法。第六次作业中的第一题虽然也是图形继承题目,但是相较之前的而言多了一些数据输入,用户可以自己选择输入几个不同的图形。因此必须需要东西来存储这些数据,本题主要难点就是数据过多,需要不同字母或者数组来存储输入的数据。第二题一元多项式求导也是需要用到正则表达式,问题还是存在,无法解决,很难用正则表达式去正确表达x导函数的数据。第七次作业则主要是接口概念难以理解,问题主要出现在:list.add(num);不知道如何去使用list当中的数据,并且在DealCardList类中,不知道如何去一个一个的判断子类中输入的数据是否合格。在此次作业里也是第一次见识到了静态的scanner,了解到原来在子类中可以直接使用Main.input.nextDouble();来进行输入。

  4.第二阶段作业明显感觉到比第一阶段的难度要难上很多了,在知识点方面也是感觉到又多又难以理解,需要自己反复梳理,通过例子来理解。这三次作业的作业时间基本上都需要一两天的时间来完成,甚至有些需要三四天还不一定可以做出来,需要自己去反复琢磨,查阅各种资料。

  5.在编程中,严谨性是非常重要的,写代码的过程中不但需要考虑到本题目的实现,还需要考虑到是否能够被其他类型的题目所引用,还需要考虑代码的封装性等等,代码的逻辑上需要更加的严谨,不然会很容易出现各种bug,通过这两个阶段的学习之后,现在的常识性错误在慢慢的减少,之前容易出现的小错误也基本没有了。

二、设计心得

  1.Java的三大特性为:封装性、继承性、多态性,这三rng类特性基本上都是联系在一起使用的,在很多地方都有使用到。封装是将一个对象的属性私有化,然后提供一些getter和setter方法来让外界访问。继承则gong是让子类能够拥有父类非私有的属性和方法,并且子类可以对父类进行扩展。多态则是可以让一个程序具有不同的运行状态。

  2.单一职责原则:一个类应该有且仅有一个能够引起它变化的原因。开-闭原则:类可以被扩展,但是不能被修改。

  3.在学习了类的继承和多态性之后,越发的感觉到Java的编程思维都是通过类来解决问题,将问题对象进行抽象化,发现它和其它事物身上的共同特征,从而可以通过调用类来解决问题。并且在后面需要修改的时候也只需要更改一个类就可以,十分方便。

  4.在设计类的时候尽量让它能够独立,并且寻找到不同类中的共同特征,以便能够使用继承或者接口等方法,使其在后续修改时的工程量减轻。

三、测试的理解与实践

  1.在测试的时候我们可以发现自己在编写代码时没有考虑到的一些逻辑错误,通过测试可以提高我们代码的稳定性,使其能够适应不同的情况,兼容性变得更好。

  2.在eclipse中使用Junit来进行代码的测试是可行的。

四、课程收获

  1.通过这些作业,我认识到了自己的知识储备还是不足,基础还是很不牢固,在面对一些复杂问题时没有很好的办法去解决,对于正则表达式、类的多态性和接口等知识掌握还是很不足够,在遇到需要运用这些知识的题目时,难度很大。但是,通过这些题目,我也很好的理解了类的继承,自己可以很顺畅的去处理类似的问题。

五、对课程的建议

  1.建议题目难度还是要循序渐进,不要出现断层式的难度,比如第五次作业的水文校验题目,通过率太低了,对于很多人来说都无法完成,起不到作业应有的效果。在题目数量方面建议不需要太多,能有一两道比较经典或者知识点比较全面的题目即可。

  2.建议老师能够多和同学之间进行一些互动,这样上课也能够更加的积极、有效率,也能够让老师了解到我们的知识掌握情况。希望老师在作业结束之后能够对于一些通过率很低的题目给出源码,让不会的同学可以自己私下研究,提高学习效率。

猜你喜欢

转载自www.cnblogs.com/tx2382351583/p/12813869.html