java第二阶段学习心得

一.前言

   本次博客是针对面向对象程序设计课程第二阶段学习情况的一个小总结。

.作业过程总结

1.总结三次作业之间的知识迭代关系:
    这一阶段的作业相较于第一阶段难度有所提升,但是这也是应该的。第一次作业为水文信息的校验、蒙斯卡洛方法求圆周率、图形继承;第二次作业为图形继承与多态、一元多项式求导;第三次作业为图形卡片排序游戏、图形卡片分组游戏。我觉得吧,第一次作业中得到水文校验一题应该是对我们第一阶段学习的一个巩固与检验,接着我们就接触到了继承,继承是面向对象的一个最显著的的特征。紧接着第二次作业我们就接触到了抽象方法,也对继承这一特性有了更深的了解,明白了继承的一些用法和好处还有重写什么的。第三次作业就是抽象的巩固了,还用到了接口这一知识点用来对若干类进行排序。
2.如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性
  封装性:在水文校验一题中我们就能体会到封装性,各种类中的数据都用private类型,从而使得外面的类无法访问,只能够通过构造方法或者get、set方法对该类中的属性进行数据的输入与修改,当然,其他作业中也都体现了。

  继承性:在Java中,一个子类只能有一个父类,一个父类可以有若干个子类,子类可以继承父类中的所有方法,如果父类为抽象类父类中的抽象方法必须在子类中得到具体的实现,否则将出现错误,在作业中以及老师的讲解中已经深有体会,在利用继承性的时候,我们也要注意父类中的方法是否适用于每一个子类,如果不是还是将其改为抽象方法最好比如Shape类中的getArea方法。

  多态性:多态,顾名思义就是一个事物具有不同的状态的意思吧,在我查阅资料以及上课、练习的过程中,我对他的理解就是一个变量吧,它可以具有多个状态,在不改变源代码的情况下,我们可以使他具有不同的状态,使它符合我们的需求,这对于代码的复用性也是贡献极大的。


3.作业过程中遇到的问题及解决方法:
    水文校验这一题应该是我学习java以来花费时间最长的一题,它所设计的类的数量多,如果说只让我把这些类都写好我觉得我写起来不会很难,但就是写完之后我们得留一个心眼,就是说我们得想办法把他结合起来形成一个整体,所以在一些方法的设计时,有些方法负责的事情我并不是很清楚,所以有些方法我觉得我当时是写的不好的。在做到图形继承与多态的题目时,要将面积排序输出很容易,但是相应的类的顺序也要跟着变,也就是他们始终需要绑定在一起进行排序,而不是说单单的把面积拿出来而已,当时我也是有点蒙,就是不知道要怎么将那个类也跟着一起排序存入list,确实不怎么会,然后查阅相关资料还有想同学请教了解了这个函数用于将类排序:

Collections.sort(list, new Comparator<Object>(){

public int compare(Object o1,Object o2) {

Shape s1=(Shape)o1;

Shape s2=(Shape)o2;

if(s1.getArea()>s2.getArea())

return 1;

扫描二维码关注公众号,回复: 11163738 查看本文章

if(s1.getArea()<s2.getArea())

return -1;

return 0;

}

});

  还有在求导的那道题中,我对于正则表达式的使用并不是很熟练,还有些语法我都不确定我写的对不对,结果就是逻辑错误,我就自己再创建了一个测试,用于校验我写的正则表达式能不能达到我所想要的效果,就这么一条一条试过去,虽然方法笨了点,但总归还是有用的,由于我写的表达式有些冗长其中有一个“|”多了这也是令我感到非常不应该发生的错误。第三次作业的话有了前几次的经验,写起来还是比较顺手的,并没有遇到很大的困难。

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

第一次作业大概花了10个小时,第二次花了7、8个小时,第三次作业因为两道题差不多,仅仅需要一些很简单的调整,花了大概4、5小时吧。比例大概就是5:4:2吧

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

    对于正则表达式的运用的时候,能简单尽量简单一些吧,在很长的一条表达式中如果出了一些我们在编写代码过程中不小心出现的多输入,漏输入的情况,那真的是会让人十分头疼的,还有就是对于输出格式的控制,很多时候往往就是缩进、空格的问题就会让我们付出大笔的的时间来检查。

 

三.OO设计心得


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

  封装性为继承性、多态性提供了很好的基础,在我的理解中,如果不进行封装,那么子类将会继承到父类的属性,那么这就会导致子类会获得可能不属于自己的属性或方法,我觉得如果面对一个类似于动物发展史似的继承关系时,如果不具有封装性,那么最后的那个子类所用的属性无疑是很庞大的,这其中很可能会出现一些误用。多态性的主要体现大概就是向上继承、方法的重写,这跟继承有及其巨大的联系。

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

  单一职责就是每一个类都实现自己独有的功能,不能身兼数职,这样做的好处是我们可以很好地复用这个类,也就是说写了这个类以后要用的话就可以直接调用,如果他身兼数职的话,那么他的某些方法可能是我们不想要的,那么在我们又要用到他时,我们将对它进行修改,毫无疑问,这会使我们花费的时间变长,所以在我们对某个课题进行划分时我们应该做到划分的细致与准确。
3.OO编程思维的理解:

  面向对象现在给我的感觉就是,面对问题,我们不是为了解决问题而解决问题,就比如说我们盖个房子,就不是说把人招过来干完就完事儿,而是说,我们把人招过来组建一个类似公司这样的模式,不同的人分管不同的部门,这样的话我们才可以盖更多多种多样的屋子,而不是说每个人想干啥干啥,这样不仅每次都需要分工消耗时间,而且也比较难管教。

4.类设计心得:

类应该设计的比较准确,细致,由于还没有经过实际的设计,还没有什么经验,相信后续的学习生活我会对类的设计更加理解吧。

.课程收获

  通过第二阶段的学习,我学习到了一些很关键的东西,对于java的使用确实也是相较于开始有了很大的进步,但是感觉还是没有那种得心应手的感觉吧,随着学习的逐步递进,同时也意识到了自己是有多么的的不足,学无止境,还有很多等着我们去了解,在B站上我也时常会看一些关于计算机的视频,实在是发现我们的学习真的只是冰山一角。

.对课程的建议

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

  感觉作业可以由简到繁吧,题量可以三到四题吧。

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

  课程讲解的比较详细,课堂作业这一块也很好,对于刚学到的新知识感觉如果可以立刻巩固的话还是有很好的效果,就是有的时候如果有的地方没有明白,回放的话不会有那么快,然后那个时候的积极性比较强吧,就比较想要一份老师的代码然后去琢磨琢磨,比如说这个工具类的一些用法啊什么的。

猜你喜欢

转载自www.cnblogs.com/lycomeon/p/12814545.html