学习OO的第二阶段总结

0.前言:

通过近一个月的学习与第二阶段的三次作业的训练完成,进行一次总结!

1.作业过程总结:

 

①三次作业知识点是层层深入的,不断的迭代,有和OO一样的重用性。三次作业都与继承有关,第一次作业主要是有关于正则表达式的应用并简单的了解继承,输入数据的校验一律采用正则表达式,尤其是测量日期的校验,第二次是在第一次作业的基础上对正则表达式的巩固利用并对继承与多态更深的理解并且对ArryList等学会使用,第三次作业是对前两次的继承多态进行一次总结,类结构如何完善才能使得系统具有较好的可复用性 。

②三次作业是对继承多态的理解逐步加深。

 

三次作业,进一步深入理解面向对象设计原则中的“单一职责原则”,需要合理构造类,属性,方法!在前面次的基础上升华了,面向对象的封装性、继承性与多态性三大技术特性,让我们更好的对面对对象编程的思维打下了基础。

第一次的水纹检验:

  1. 输入数据的校验一律采用正则表达式,尤其是测量日期的校验
  2. 思考CheckData、DealData两个类的作用
  3. 编写代码务必弄懂需求,务必做到严谨

第二次的一元多项式求导:

  1. 进一步深入理解面向对象类设计、继承与多态的应用;
  2. 进一步熟练掌握Java中常用类的用法,例如ArrayList、LinkedList、StringBuilder、StringBuffer等;
  3. 进一步掌握正则表达式的应用

第三次作业的图形类继承:

  1. 继承、多态的应用;
  2. ArrayList泛型的应用方法
  3. Comparable接口及泛型的应用
  4. 单一职责原则的应用
  5. “开-闭”原则的应用

在类里设计方法(不能是static),要学会如何在main函数里面创建对象,调用相关方法的技能,把问题更加的细化,清楚,独立化,有从属关系等!

③作业问题及解决

因为这一阶段是需要使用正则表达式对数据的检验编写,主要出现问题:对于正则的理解,如何设计正则表达式,类之间的继承,对象的多态性质,对List类使用等

解决方法:主要通过四个途径层层递进,自己思考->>查阅资料->>咨询同学->>咨询老师。

一般到第三层可以解决,十分共性的问题,在课上老师会进行解释教学!

④每次完成作业的时间:作业一般是为期一个星期,一般需要4-5天去编写,一天写2-3小时;短则1-2小时,长则3-4小时!时间太久影响效率!

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

对于继承多态的使用,要注意出现空指针异常,强制转化类型,对于正则表示式的设计一定要严谨,少一个.(点)都可能匹配不成功,对于题目的需求要深刻铭记每次的需求都不一样,不能按部就班要学会灵活应变,可能一个点忽略了对于一个程序可能是致命的。

 

2.OO设计心得:

 

已经学习面对对象语言(JAVA),有点感觉到面向对象与面向过程有什么区别和什么好处,处理问题更加的细致,思考全面。

对书本上的对面对对象声称的好处:封装,继承,多态都有了一定基础的认识并且学会如何使用。

 

 

①封装
减少了大量的冗余代码,封装将复杂的功能封装起来,对外开放一个接口,简单调用即可。
将描述事物的数据和操作封装在一起,形成一个类;被封装的数据和操作只有通过提供的公共方法才能被外界访问(封装隐藏了对象的属性和实施细节),私有属性和方法是无法被访问的,表现了封装的隐藏性,增加数据的安全性。

继承–单根性,传递性
减少了类的冗余代码,让类与类之间产生关系,为多态打下基础
若一个新类继承了原有类的属性和方法,并增加了自己的新属性和新方法,称之为派生类,派生类就继承了原有类;当子类继承父类的时候,子类不继承父类的构造函数,但是子类生成对象时(new Student())默认会先执行父类无参的构造函数(实例化对象,让子类可以使用父类的成员),当父类定义有参构造函数时,无参构造函数就会被干掉,这时子类会报错,解决方案是1>在父类重新定义无参构造函数 2>子类的构造函数:base(),调用有参构造函数,函数体中只需初始化特有属性;如果不想执行父类的构造函数,可以通过参数的不同调用父类一个空的构造函数。

多态
很重要的一个概念,一个接口,多个方法。通过继承实现的不同对象调用相同的方法,进而有不同的行为。
 
②开-闭”原则:
开闭原则是面向对象的可复用设计的第一块基石,是面向对象设计的目标。一个软件实体应该对扩展开放对修改封闭,也就是说再设计一个模块的时候,应当使得这个模块可以在不被修改的情况下进行扩展,即实现再不修改源代码的情况下通过实现或者继承扩展系统。为了满足开闭原则,我们需要对系统进行抽象化设计,抽象化是实现开闭原则的关键。开闭原则也是实现组件化编程的基础。
 
③OO编程思维的理解:
对问题的看法,以及如何藉由对问题的了解而导出解决方案﹐然后以可执行的软体系统来表达之。
④类设计心得:
1.保证数据的私有性 2.对数据初始化 3.不要在类中使用过多的基本类型 4.并非所有的域都需要getter/setter 5.一个类的功能尽量不要太繁杂 6.类名/方法名的名称要可以体现其职责

3.测试的理解与实践:

①测试对于编码的质量与重要性:

测试能够对代码的完备性,可行性,优化等进行很好的评估,能够及时发现问题,如何去解决,起到了至关重要的作用!

正如鲁迅所说:不测试的代码就会出错可能出错的事情就会出错,你能够模拟测试的越多,你能够代码的也就越强健。

要成为一名优秀的测试人员,就需具备测试能力!

②假如让我设计测试用例:

我会对数据:从数据大小的极限,数据的数量的极限,数据输入的非法性及正常数据!

考虑的基本要素是输入、输出、操作。

查阅资料,会使用Junit进行程序的测试

4.课程收获:

通过近四周的学习,对OO理解,设计,编写,有了更加深刻的认识,知道了面对对象的优势,如何去合理编程,学会封装,继承,多态的使用,对类的创建有了一定的认识。

教训:

⑴基础的真的很重要,万众高楼平地起!,基础不扎实难以筑造强健的java大厦。

⑵要有良好的编程风格与设计理念,会使你做事情卓有效率。代码不是仅仅给自己看的,别人提供帮助时,看不懂自己写的代码会难以给出优秀的建议!

收获:

⑴学会了如何把理论的与实践分开比对,相互印证。
⑵练就是要在知晓原理的前提下,把它炼成自己的技能,做到随心而发,如果有一天,你想给人讲一个知识点,你可以很从容边敲边讲的时候,那就证明你练习的基本到位了。
⑶悟就是要多多思考,思考书中或老师说的不能如何如何,试试看,找出不能的根本原因。

⑷多想想面向对象的思想到底是在说什么,多想想多态到底为什么要用,怎么用。

⑸虽然前期会遇到很多问题,咬紧牙关继续前行总会成为一名合格的java软件设计工程师。

 ⑹路漫漫其修远兮,我们必须适应这个互联网时代的节奏,  紧跟它的步伐。

 

5.对课程建议:

老师能对作业进行一下分析和指导!

 第三阶段作业难度、题量的建议:希望题目两道。

6.下一阶段的学习计划:

通过近四周的基础学习,已经有了面对对象的基础思维,下一阶段准备对面对对象的更深领域学习,学会异常处理,泛型等知识,希望与前一基础阶段能够能很好的巩固,融合,创新,完善!对java有更深刻的认识!

 

                                                                                                                                                                                         2020-04-29

 

posted @ 2020-04-27 10:29  伯纳乌塔楼  阅读(126)  评论(0)    收藏  举报