OO学习博客---对第二阶段学习内容的总结

0.前言

  在OO第二阶段的学习中,我们主要学习了正则表达式,以及学习面向对象编程的封装,继承,多态性等特征,学习了抽象类的特点,接口方法等,极大地提高了我使用Java编程的能力,同时加深了我对面向对象编程本质的理解。

1. 作业过程总结

  ①三次作业内容上逐步深入,从对正则表达式的简单使用,对继承和多态的理解,到后面的大量应用继承,接口等编写程序,使得我对面向对线编程中"类"这一概念理解的更加透彻。

  ②在Homework05中,我首先接触到使用正则表达式来处理数据,解决问题,但是因为不熟练加理解不透彻,使我不仅花了大量时间编写,结果还是有许多测试点没有通过。之后的求圆周率和图形继承作业过程较为顺利,花费时间较少并取得了较高的分数。

  ③在Homework06中,开始学习抽象类的用法,并引入了继承和多态的使用,花费较少时间并完成了所有测试点。之后的一元多项式求导是对正则表达式的进阶使用。

  ④在Homework07中,练习了类的继承、多态性使用方法以及接口的应用,此次作业极大地加深了我对继承,多态的理解,并掌握了接口的运用方法,此次作业耗时不长,但收获很大。

  ⑤在这三次作业过程中,我遇到了许多问题,其中是一些小问题,例如输出格式不对,引入包错误或者关键字错误,以及死循环,数组越界等问题,而另外一些是OO编程中关于继承,多态的一些理解上的问题,例如要先构造父类,再构造子类,父类的构造函数在子类构造函数之前进行,以及抽象方法没有方法体,大括号也没有,要在子类中重写,抽象类不能实例化等。解决这些问题,使我对继承和多态的理解更加深刻了。

2. OO设计心得

  ①封装,继承与多态

    封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。封装可以利于对程序的理解和修改,最重要的是限制对属性的访问,增加了程序的安全性。

    继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。继承减少了冗余代码,使得程序简洁逻辑清晰,更重要的是继承使得类与类之间产生关系,而这正为实现多态性打下基础。另外,Java不允许一个类有多个父类,但允许一个类实现多个接口,以此实现所谓的“多重继承”(不是真的实现)。

    多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。利用多态性的特点,不仅使得OO编程十分的简洁,并且使得程序具有扩展性。

  ②面向对象的五个基本原则

    单一职责原则:一个对象有且仅有一种功能,同时也仅有一种功能需求的变更能够引发该对象实现的修改。

    开闭原则:对象或实体应该对扩展开放,对修改封闭。这就意味着一个类应该无需修改类本身但却容易扩展。

    里氏替换原则:一个子类或派生类应该可以替换它们基类或父类。

    接口隔离原则:不应强迫客户端实现一个它用不上的接口,或是说客户端不应该被迫依赖它们不使用的方法。

    依赖倒置原则:实体必须依靠抽象而不是具体实现。它表示高层次的模块不应该依赖于低层次的模块,它们都应该依赖于抽象。

3.测试的理解与实践

  无论是面向对象还是面向过程编程,测试都是编程中重要的一部分,不夸张的说,测试的时间在整个作业中占比将近一半,并且贯穿整个编程过程,每编写一个类或方法,都应Debug一次,将错误及时解决,而假如在编写完整个程序再调试,那Debug过程将是一种灾难,例如在图形卡片排序游戏中,每构建一个图形类都应先对其测试一下,保证其属性和方法编写正确,这样在最后才不会出现太多bug,一边编写一边测试看似耗费时间,但与对整个程序代码重新Debug相比,反而是节省了大量时间。

4. 课程收获

  第二阶段学习收获相比第一阶段更大,在此阶段学习中,我从面向过程编程全面转向面向对象编程,理解了封装,继承,多态等基本概念,同时通过练习,学会了例如Arrayslist,comparable,comparator等基本类的用法,也增强了我编写代码的能力和逻辑思考能力。

5. 对课程的建议

  ①建议PTA作业截止后将测试点列出,这样可以通过针对性Debug,来知道自己程序到底哪里出了问题。

  ②建议少一些PTA这种任务式的作业,而是多一些实验这种探索性的作业,通过对错误程序的思考以及改正,理解为什么以及怎么做,这样更能加深对相关内容的理解。

  

猜你喜欢

转载自www.cnblogs.com/Unknown-Error/p/12819454.html