面向对象第二阶段作业总结
前言
进入第二阶段后,需要对面向对象的思维有更深的理解。前两次作业完成情况不太好,后一次作业完成得就相对较好。
作业过程总结
1、三次作业之间的知识迭代关系:第四次作业涉及的是正则表达式和类的继承,第五次作业中使用到了类的继承与多态,第六次作业中要掌握类的继承、多态性使用方法以及接口的应用,作业一步步加强我们对面向对象的认识,逐步理解面向对象的三大特征。
2、如何通过作业逐步理解面向对象的封闭性、继承性与多态性三大技术特征:第一阶段我们就学习了类的不同属性public及private,对面向对象的封装性有了一个很好的认知;在第二阶段中就面向对象的继承性有着一个很好的学习,每一题的完成,就是对父类与子类关系的进一步了解与应用; 而对面向对象的多态性的认识,从第六次作业接口的应用就表现出来。
3、作业过程中遇到的问题及解决方法:第四次作业中的第一题,是这一阶段作业中最难的一道题,遇到的困难也是最多的,首先对字符串的输入有着十分严格的要求,不仅仅如此,该题还有很多正则表达式的应用,涉及的问题也十分让人头疼;第二题就相对简单一点,看到题目,对蒙特卡洛仿真方法求圆周率存在疑问,不知这是一种什么方法,之后在网上了解到这种方法是如何求圆周率,该题也就较为轻易的解决了;在第五次作业的第一题中,起初我对面积进行的排序是无效的,
简单的看,我觉得这就是一个可行的方法,最后我就将k定义为Shape型
第二题中,不符合表达式基本规则的输入时,总是会有着错误的判断; 在第七次作业的第一题遇到的问题就是图形的名称不能赋上,一直为null,最后我就用shape[m].setShapeName(" ")输入图形的名称,用shape[m].getShapeName(" ")输出名称。
4、每次作业花费的时间比例:5:4:2
5、对编程过程的严谨性的认识及教训:编程是十分严谨的,不能用错误示例去判断该编程是否正确;在求圆周率的题目时,我就再一次确定严谨的重要性,
我觉得我对PI的定义为double型就足够了,最后得到的结果总是错误的,后来我就决定用Debug测试,检测错误出在了那一步,最后发现求出的PI一直都是PI=3,修改错误
OO设计心得
1、对面向对象三大技术之间的关系的理解:封装:隐藏对象的具体实现细节,通过共有方法暴露对象的功能,内部结构可以自由修改,同时可对成员进行更加精确的控制 。继承:使用已经存在的类作为基础类(父类),在此基础上建立新类(子类),子类既可复用父类的功能,也能进行扩展,从而实现代码复用。 多态:一个类实例的相同方法在不同的情形下有不同的表现形式分为以下两种:编译时多态(OverLoading)—— 方法重载;运行时多态(OverRidding)—— 继承 + 方法重写 + 向上转型(父类引用指向子类对象)。
2、面向对象设计的基本原则理解:单一职责原则是指一个类,最好只做一件事,只有一个引起它的变化。“开—闭”原则是指软件实体应该是可扩展的,而不可修改的,也就是,对扩展开放,对修改封闭的。
3、OO编程思维的理解:OO编程思维是一个抽象的概念,这是一种解决方法的思维方式,拿到问题首先需要将问题分解,寻找问题之间的关系,找出解决每个问题的方法,组合问题。
4、类设计心得:首先保持数据的私有化,其次初始化数据,把相关的基本类型利用封装的功能,设计成一个单独的类,最后尽量使类的功能单一化。
测试的理解与实践
1、测试对于编程质量的重要性:测试对于编程质量是十分重要的,测试可以检测出编程后的结果是否与预期值相同,如若不同,则需要通过测试找出错误的点,并将其修改正确。
2、查阅资料,假设使用Junit进行程序的测试是否可行: Junit对程序进行测试是可行的。
课程收获
在OO方面的教训:经常性会忘记要用面向对象的思维解题,对部分函数的应用不熟练,导致会花费更多的时间,有时也会不能很好判断函数之间的关系。
在OO方面的收获:在这段时间的学习中,我逐渐开始转换我做题时的思维方式,就会很顺手的写上类的继承,将父类与子类捋顺。
对课程的建议
1、第三阶段作业难度、题量的建议:就我而言,第三阶段的难度可以先给出较为基本的题目,然后再一步步难度加大,题量我觉得三题就足够我们琢磨了。
2、课程内容讲解方面的建议:我知道课程时间十分有限,每节课的课堂学习都十分充足,课后还会有课堂作业,对课堂学习的进一步理解,因为课堂上的学习都是十分基础的,而作业是为了更进一步的理解,所以会有一些难度,老师进行的作业讲解还是较少,在写作业的过程中或多或少会有一些不理解的点,或则是为了过测试点不去用面向对象的思维去解决问题,我觉得老师可以适当的给我们源代码看一看,让我们进行自我检查。
浙公网安备 33010602011771号