第二阶段学习总结


0.前言
主要说明本次博客针对的做业状况java

第二阶段的学习也结束了,在此作一些总结和回顾;相比第一阶段的学习确实难度增长了,做业的分数也不太好,完成做业须要花的时间更多了。
1.做业过程总结
①总结三次做业之间的知识迭代关系;正则表达式

第四次做业中主要是正则表达式和继承关系的运用,第五次做业就是关于类的继承和多态性的运用了,第六次做业是类的继承、多态性使用方法以及接口的应用。
②如何经过做业逐步理解面向对象的封装性、继承性与多态性三大技术特性;编程

对象的封装性是指“将对象的成员隐藏起来,不让其直接在类的外部访问,要经过必定的方法对封装起来的成员进行访问控制”,在Java中一般经过创建一个实体类,用来封装对象的属性和行为,经过set()和get()方法封装起来,确实感受到更加便利。网络

继承性就是使子类的对象拥有父类的所有属性和行为,同时能够增添本身的所特有的属性和行为。好比在图形卡片排序游戏这题中,就是将Circle类、Rectangle类和Triangle类都继承自Shape类,在Shpae类中写了求面积的方法,而后在子类中运用方法的重载,完成面积的求算;除面积外,Circle类中还能够增添本身所特有的属性:radius,方法:getRadius()和setRadius();而创造时能够new一个Shape,而后经过Shpae来获取到子类,更有结构层次感,使用更方便。框架

多态性就是一个java程序中同名的多个不一样方法共存的状况,一般使用方法的重载来实现类的多态性,多态的实现并不依赖具体类,而是依赖抽象类和接口。在多态的机制中,父类一般会被定义为抽象类,在抽象类中给出一个方法,但不给出实现的具体过程,经过继承父类来实现。好比第五次做业中的第一题图形继承与多态,在这题中,就是将Shape类定义为抽象类,其余的方法也定义为抽象类,在子类中给与这些方法的具体实现。eclipse

 

③做业过程当中遇到的问题及解决方法学习

第四次做业中的第三题“图形继承”相对较简单,可是仍是在这题上花了不少时间,由于一直拿不到满分,后面发现是由于输入为0时输出不正确,确实是本身考虑的疏忽了;“立方体对象测试”不过关,检查后发现是由于本身box类中的getArea()方法中没有写上super调用父类,因此数据传不过来,输出一直为0。还有第五次做业中的第二题“图形继承与多态”在eclipse中运行题目中所给的样例输出都是正确的,可是提交到pta上就一直是只有八分,只有“数量非法”和“图形数均为0”两个测试点过了,其余的测试点所有提示答案错误,而后向室友寻求帮助,一开始也找了好久都没有发现问题到底出在哪,花了很长很长时间在这里,最后发现多是toString()方法的问题,因而在几个子类中将toString()方法删去,父类中定义的抽象方法toString()也删去,而后再提交就是满分了。测试


④每次做业花费的时间比例编码

4:3:3
⑤对编程过程的严谨性的认识及教训spa

第五次做业中的第二题“图形继承与多态”,由于是题目中所给的UML类图中有toString()方法,就写在Shape类中了,由于本身的输出并无运用到toString()方法,因此在子类中的重载方法也是空的。而后去查阅相关资料发现:“子类重写父类的方法的访问权限要大于或者等于父类中被重写的方法”,不然就会出错,而个人子类中没有加public,因此子类中的访问权限小于父类中方法的访问权限,pta中就会报错。经过此次由于语法中结构的认知错误,而明白了java中继承与承载方法的使用权限,虽然花费了不少时间,但最后有收获就是好的。
2.OO设计心得
①对面向对象三大技术特性之间关系的理解

封装将复杂的功能封装起来,对外开放一个接口,简单调用便可。而继承能够有效减小类的冗余代码,经过继承来实现,让类与类之间产生关联,为多态提供基础,多态是一个接口,多个方法,都经过继承实现的不一样对象调用相同的方法,进而有不一样的行为。
②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)

单一职责原则“就一个类而言,应该仅有一个引发它变化的缘由”,单一职责就是每一个类实现一种功能,而且该功能应该由这个类彻底封装起来,一个方法中并不会有不少很长的代码,“开-闭”原则:对于扩展是开放的,对于修改是关闭的。这样能够有效的增长了代码的复用性,老师老是和咱们强调代码的复用性,写的代码复用性要强,体系结构更严谨,后面的一系列问题才更好解决。
③OO编程思惟的理解

编程的过程当中尽可能要遵照单一职责原则和“开-闭”原则,这样写出来的代码效率才高,只有真正的理解了编程的思想,才能够有效的编写程序。
④类设计心得

学习到第二阶段,慢慢开始理解了类的设计的重要性,这一阶段的做业都是题目中给了参考UML类图,已经帮咱们设计好了类,只要照着题目框架协就能够了,相对仍是好一些的,不过据说下一阶段题目中就不会再给UML类图了,须要本身去设计类了,感受仍是挺有难度的,思惟不够。
3.测试的理解与实践
①测试对于编码质量的重要性

有的代码你编写完成,仔细检查也没发现错误,逻辑好像也正确,可是若是不进行测试,在使用过程当中可能忽然就出现了bug,到时候再改就有些为时过晚,并且让人质疑代码的质量,因此说测试对编码质量是很重要的。
②查阅资料,假设使用Junit进行程序的测试是否可行

网络上查询了相关内容,发现使用Junit进行程序的测试是可行的。
4.课程收获
总结这四周来在OO方面的教训及收获

学习到了类的封装、继承和多态的使用,这一阶段学习的java知识能够简单的运用到一些实例当中。编程过程当中思惟必定要严谨,脑中要构造出程序完整的体系结构,这样写出来的程序才能够达到要求。找bug的过程虽然很痛苦,可是当看到pta上提交出来的一列红色的答案正确内心太舒服了,仍是有点小小的成就感的。
5.对课程的建议
①第三阶段做业难度、题量的建议

但愿第三阶段难度不要加太大,没有UML图我感受就挺有难度的了,可能要花费更多的时间了。题量的话两三题就挺好的,不要再加多了。
②课程内容讲解方面的建议

老师讲解的挺好的,也挺容易明白,就是有时候但愿讲解了长时间后,能够休息一下,缓缓;还但愿老师能够多讲讲类的设计,如何想到这样设计,怎么去实现这个设计相关的内容。

相关文章
相关标签/搜索