0.前言:
通过近一个月的学习收获了很多知识,对此进行梳理与总结!
1.作业过程总结:
①三次作业的知识迭代关系:
(1)第一次作业主要是有关于正则表达式的应用并简单的了解继承,要求正则表达式的使用能基本合格,题目较难。
(2)第二次作业是对正则表达式的巩固利用,并对继承与多态更深的理解并且对ArryList等学会使用,而且要求更高,需要二者融合
(3)第三次作业是对前两次的继承多态进行一次总结,类结构如何完善才能使得系统具有较好的可复用性 。
②通过作业理解面向对象的封装性,继承性和多态性:
(1)封装性:
封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合。例如Circle,Rectangle类都使用了封装。
(2)继承性:
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率。题目中的各种图像类都继承了Shape类,比如面积求和,输出面积等通用的方法都可以置于Shape父类中,并且子类还可以根据特定的功能需求进行改变。
(3)多态性:
多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
③作业问题及解决
这阶段的作业对于自身的代码要求比较高,所以会遇到很多很多的问题,例如重写父类的方法会造成一些错误,并且子类和父类也可以进行灵活的转化,而正则表达式是真的很难,因为要求颇多,所以在使用正则表达式的时候会漏掉很多很多的状况,这些都通过作业的错误反馈自己进行查找搜索,例如日期的格式,”日“是两位数还是一位数,都存在很多的bug,而语法的使用则通过百度去查找,进一步深入的学习。
④每次完成作业的时间:
一次的作业一般要写五到六天,根据题目的难度而定,一天大概写3-4小时。
⑤对编程过程的严谨性的认识及教训:
这几次的作业,让我深刻认识到了逻辑严谨性的重要性。因为逻辑的严谨性不够,导致有很多一些比较特殊的情况就没有能够进行讨论,导致最后结果出问题,如果在编写的时候逻辑严谨,那么在类的设计的时候,就会很容易的对每种要求进行分割,从而使自己的代码逻辑紧凑,并且错误的例子也会少很多,并且在根据作业要求写代码时,不能按部就班的照抄,应当有自己的思路,因为题目给出的要求和思路是别人的,没有经过自身的思考进行使用,很容易出现纰漏。
2.OO设计心得:
①面向对象三大技术特性之间关系的理解
(1)封装:
封装是面向对象方法的重要原则,就是把对象的属性和操作结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。良好的封装能够减少耦合。类内部的结构可以自由修改。可以对成员进行更精确的控制。隐藏信息,实现细节
(2)继承:
是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。让类与类之间产生继承关系。极大的提高了代码的复用性。
(3)多态:
多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
3.测试的理解与实践:
①测试对于编码的质量与重要性:
测试不但可以对代码的完整性进行检测,查找出错误,还能增强我们的思维能力,在发现错误中补足自己,无论是对于代码强健性的要求,还是对于自身做事习惯的改变,测试都能很好的锻炼我们。如果你的代码,经历的测试越多,那么错误的概率就越小,无论是对我们自己负责,还是将来对我们的用户负责,熟练的测试自己的程序,是一个程序员必不可少的技能!
②假如让我设计测试用例:
首先从数据大小的极限,数据的数量的极限,数据输入的非法性及正常数据!
考虑的基本要素是输入、输出、操作。
或者我也会使用Junit进行程序的测试,JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。使用JUnit能够在一般情况下大大提高自己写代码的效率。
4.课程收获的总结:
收获:
开始逐渐走进面向对象的设计过程中,逐渐理解了类的三大特性:继承性、多态性、封装性,提高了自己的编写能力,并且巩固了自己的语法基础。
教训:
⑴因为一开始基础不足,所以找到的资料未经过深入的思考直接使用,过了几天就忘得一干二净,所以学习的过程不能填鸭式的压入知识,要明白自己代码的意义是什么,巩固自己的基础。
⑵要有良好的编程风格与设计理念,会使你做事情卓有效率。代码不是仅仅给自己看的,别人提供帮助时,看不懂自己写的代码会难以给出优秀的建议!
5.对课程建议:
希望老师可以对于一些知识点进行更加深入的讲解和指导。
上课的时候希望能多讲题目,结合知识点。
6.下一阶段的学习计划:
通过近四周的基础学习,已经有了面对对象的基础思维,下一阶段准备对面对对象的更深领域学习,学会异常处理,泛型等知识,希望与前一基础阶段能够能很好的巩固,融合,创新,完善!对java有更深刻的认识!