OO第二单元(5-8周)作业总结
0.前言
Java已经发布了6次PTA作业,在此对第4-6次Java作业进行总结梳理,看看我从中收获了些什么。
1.作业过程总结
①总结三次作业之间的知识迭代关系
三次作业主要考察的是面向对象的封装性、继承性与多态性这三大特性。第四次PTA作业就运用了类的继承与多态还有正则表达式来解决问题;然后第五次PTA作业同样是对类的继承与多态和正则表达式的考察,但难度比上一次更小,更好得分;第六次PTA作业就是对三大特性的综合考察。
②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性
封装性:
在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
继承性:
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。就是通过问题之间的联系创造父类与继承父类的所有属性以及方法的子类。它可以直接用,也可以重写父类的方法,还可以定义自己特有的成分。就像图形继承题,就是通过几何图形共有的面积,周长等特征来建立的联系,也可以去特别的求出它的数据所对应的立体图形的体积。
多态性:
多态性像是父类和子类的继承关系上的一种拓展,子类一定要具有抽象父类的方法。重载式多态,也叫编译时多态。也就是说这种多态再编译时已经确定好了。重载大家都知道,方法名相同而参数列表不同的一组方法就是重载。在调用这种重载的方法时,通过传入不同的参数最后得到不同的结果。重写式多态,也叫运行时多态。这种多态通过动态绑定技术来实现,是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。也就是说,只有程序运行起来,你才知道调用的是哪个子类的方法。
③作业过程中遇到的问题及解决方法
第四次PTA作业遇到的主要问题就是正则表达式的判断,在上网搜索后,我一直在写怎么检验输入数据的正则表达式;第五次PTA作业,我觉得最麻烦的就是多项式的拆分,然后在对多项式进行降次计算,就正负号等问题会影响拆分判断结果;最后第六次PTA作业,其实计算到不难,最主要的还是控制输出的格式正确。
④每次作业花费的时间比例
在第四次和第五次PTA作业里,我遇到了比较大的问题,我在规定时间内是没有全部通过的,第四次PTA作业第一题我是没有完成的,然后第五次PTA作业也是有测试点没有通过的,然后第六次大作业更顺利一点,我在规定的时间内完成了。
2.设计心得
①对面向对象三大技术特性之间关系的理解
封装和继承是为了代码重用,然后多态是为了接口重用;封装将类里的属性和方法藏起来,使其不易被改变;继承就是子类从父类继承属性和方法,不重复编码便可以使用他们,但是子类又不仅限于父类,他还可以派生出自己特有的属性和方法;而实现多态有两种方法:重载和重写。
②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)
我觉得单一职责原则就是一个类应该只有一个引起它变化的原因。即每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来。
然后“开-闭”原则我理解的还不是很到位:开闭原则(OCP)是面向对象设计中“可复用设计”的基石,开闭原则告诉我们应尽量通过扩展软件实体的行为来实现变化,而不是通过修改现有代码来完成变化,它是为软件实体的未来事件而制定的对现行开发设计进行约束的一个原则。
③编程思维的理解
事物都可以看作类,通过类和对象去完成程序要解决的实际问题。
④类设计心得
通过画类图对类进行设计,先理清楚各个小问题之间的关系,再设计的类与类之间的关系。
3.测试的理解与实践
①测试对于编码质量的重要性
写出来的代码一般在逻辑上不会出现明显的问题,可能有时候还能通过样例测试,但这并不代表代码就是完善的。复杂多样的样例可以测试这个代码到底有没有算法上的错误,有助于我们纠错,完善代码,提高代码质量。
②查阅资料,假设使用Junit进行程序的测试是否可行
JUnit是一个Java语言的单元测试框架。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。所以使用Junit进行程序的测试可行。
4.课程收获
这四周以来,初步学习了面向对象的封装性、继承性与多态性,然后通过三次PTA作业也加深了我对这三大技术特性的理解。
5.对课程的建议
①第三阶段作业难度、题量的建议还是希望之后的PTA作业能够难易相结合,不要出很多难以完成的题目,控制好难易题的比例。
②课程内容讲解方面的建议
希望老师上课讲解内容的时候可以讲解某个程序的代码为例子来传授知识,我觉得这样可能更容易理解一点。
浙公网安备 33010602011771号