0.前言
本次的做业相对于上一次的做业来讲是有必定的难度的,须要花费大量的时间去完成。此次的做业有许多不懂的地方,可是也会收获许多新的知识。
1.做业过程总结
①总结三次做业之间的知识迭代关系;正则表达式
第一次做业的第一题是求水文数据校验及处理,主要的应用是正则表达式的使用;第二题是蒙特卡罗方法求圆周率,就有些承上启下的做用力了;第三题图形继承则要求咱们实现图形类的继承,并定义相应类对象并进行测试,这很关键,写好了这些题,之后的题目就比较简单了。第二次做业的第一题是图形继承与多态,要求咱们掌握类的继承、多态性及其使用方法,这比上一次的做业就有着更深一步的看法,有了多态这一感念,而第二题的一元多项式求导也与第一题有着殊途同归之妙;第三次做业的第一题是图形卡片排序游戏,要求咱们掌握类的继承、多态性使用方法以及接口的应用,这又比上一次的做业多了一项接口,让咱们明白了ComparableTo这一接口的使用,第二题图形卡片分组游戏与第一题差不了太多,只是增长了一些cardlist的使用,第三题是一道附加题求素数,考查算法设计与优化,可是我设计的算法老是运行超时,没有获得很好的优化。算法
②如何经过做业逐步理解面向对象的封装性、继承性与多态性三大技术特性;编程
封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体是类,类一般对用户隐藏其实现的细节,这就是封装的思想,在Java中一般经过创建一个实体类,用来封装对象的属性和行为,经过setXxx()和getXxx()方法封装起来,其实此次做业的每个代码中都用到了封装这一技术特性;继承性简单来讲就是使子类的对象拥有父类的所有属性和行为,同时能够增添本身的所特有的属性和行为。这样能够节省写共同具备的属性和方法代码的时间,有利于代码的复用,此次做业中我常常用到extends,这样便能更好的、高效的利用好代码;多态性,简单来讲就是一个程序中同名的多个不一样方法共存的状况,一般使用方法的重载和重写(也叫覆盖)来实现类的多态性,这在最后一次的做业中能够更为深入的体现出来,class Card implements Comparable<Card>就是一个很好的例子。框架
③做业过程当中遇到的问题及解决方法;
函数
第一次做业的第一题是求水文数据校验及处理,主要的应用是正则表达式的使用,可是我却不太明白正则表达式的使用,经过不断的学习,我如今有体会到一点了;第三题图形继承我开始不能获得很好的输出,当我把园,矩形这些分开来后就能够获得较好的输出。第二次做业的第一题是图形继承与多态,在判断输入数据是否合法是,我使用了四个不一样的变量来返回,这样我就能在输出的时候更好的判断;第三次做业的第一题是图形卡片排序游戏,经过请教同窗我知道了private ArrayList<Card> cardlist = new ArrayList<Card>();的使用方法,让咱们明白了ComparableTo这一接口的使用,第二题图形卡片分组游戏与第一题差不了太多,只是增长了一些cardlist的使用就很好的解决了问题,第三题是一道附加题求素数,考查算法设计与优化,可是我设计的算法老是运行超时,没有获得很好的优化。单元测试
④每次做业花费的时间比例;
学习
第一次做业由于有比较难的一题,因此花费的时间比较多,大概是做业的限制时间内;第二次做业则是第一题大概花费了一天的时间,第二题时间无限长;第三次做业时间花费的就比较有意思了,第一题大概花费了两天时间,第二题半天。测试
⑤对编程过程的严谨性的认识及教训;优化
编程的量愈来愈多,代码愈来愈复杂,在命名一些名称的时候,尽可能不要用太多与复杂的名字,应该简单易懂,在编程的过程当中,常常会犯一些在语法上的小错误,在看似正确的状况下却得不出想要的答案,就是这样的一些小错误却要花费大量的时间来查找,这样的时间每每比编写程序的时间都要长,这无疑是浪费时间的,加入咱们在编写程序的时候想得更为完整,思考的更为精密,或许就不会出现这样的问题,随着咱们知识的掌握,这种问题会愈来愈少。
2.OO设计心得
①对面向对象三大技术特性之间关系的理解编码
封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体是类,类一般对用户隐藏其实现的细节;继承性简单来讲就是使子类的对象拥有父类的所有属性和行为,同时能够增添本身的所特有的属性和行为;多态性,简单来讲就是一个程序中同名的多个不一样方法共存的状况,一般使用方法的重载和重写(也叫覆盖)来实现类的多态性,多态实际上是在继承的基础上的。
②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)
单一原则:按字面理解,单一职责原则就是本身只负责本身的事,不须要理会别人的事。若是了解面对对象编程,那么应该会很容易了解这个单一职责原则。
“开-闭”原则:是面向对象世界里最基础的设计原则,它指导咱们如何创建一个稳定,灵活,可扩展的系统。开闭原则定义以下:一个软件实体(如类,模块和函数)应该对扩展开放,对修改关闭。
③OO编程思惟的理解
面向对象将事物都当作对象,将具备相同特征的实物看做类。经过对类与对象的继承,封装,多态的实现,完成模拟现实从而决绝问题。
④类设计心得
须要把有相同性质的东西方进同一个类里面;类与类之间的关系要分清楚;不要在类中使用过多的基本类型。
3.测试的理解与实践
①测试对于编码质量的重要性
一个好的编码必需要通过不断的测试才可以使用,假如一个编码经不起屡次的测试,纯在诸多的bug,这必然是一个不合格的代码,这种编码是不能用在系统上的,这会引发诸多的问题。
②查阅资料,假设使用Junit进行程序的测试是否可行
可行,在平时的开发当中,一个项目每每包含了大量的方法,可能有成千上万个。如何去保证这些方法产生的结果是咱们想要的呢?固然了,最容易想到的一个方式,就是咱们经过System.out来输出咱们的结果,看看是否是知足咱们的需求,可是项目中这些成千上万个方法,咱们总不能在每个方法中都去输出一遍嘛。这也太枯燥了。这时候用咱们的单元测试框架junit就能够很好地解决这个问题。
4.课程收获
大概明白了对面向对象三大技术特性之间的关系,具备了更为进一步的面向对象的思想,培养了我不懂就问,虚心请教的好品质,而且拥有了一些独立思考的想法。
5.对课程的建议
①第三阶段做业难度、题量的建议
有些题目难度较大,有些适中,感受还好,题量也还好,两三题的样子。
②课程内容讲解方面的
老师讲解的内容仍是较少,大部分的内容都是咱们本身学习,老师应该多讲一些经典例题。