OO期末总结

1.前言

  本次博客主要内容为整门课pta作业的总结以及学习这门课程的一些收获。

2.作业过程总结

第一阶段

①    三次作业之间的知识迭代关系

就第一、二次作业来说,我个人感觉是让我更加熟悉了java中的一些基本知识,第三次作业就开始由面向过程转向面向对象。由第二次作业和第三次作业的对比可以明显看出来,第二次作业中的时间类问题还是用的面向过程思想,一步一步的走。而第三次作业里类似的问题有运用到面向对象的思维。

②    如何逐步从面向过程过渡到面向对象

第二次作业到第三次作业就是由面向过程过渡到面向对象,写第三次作业的过程中可以明显感到面向过程的思维在逐步形成,如第三次作业中的二、三、四题先是把时间抽象化为一个类,里面包括很多方法和属性。然后再细化为四个类,就像一个公司的不同部门,各司其职。

③    作业过程中遇到的问题及解决方法

作业过程中遇到的最大的问题之一是pta的测试点无法通过,又不知道具体的原因,通常我会与同学交流询问他们是否遇到过这样的问题。比如里面有的地方我写if(a>12){…}这样的语句提交就会出现测试点错误,但如果我改成if(a-12>0)就可以通过测试点。还有问题就是我写代码时总是会忘记语法规则,我就会改变我的写题顺序,先去看一遍上课时记的笔记以及书本上的相关知识点,而不是写到哪不会了再去翻。还有诸如溢出等问题,都可以通过测试点的提示或者问同学解决。

④    每次作业花费的时间比例

第一次作业中由于第一题的题目算式比较复杂,我花费了较多的时间编写。二、三、五题相对来说比较简单,花费时间也较少。第四题因为使用判断语句的顺序问题,导致某个测试点总是错误,修改也耗费了一定的时间。第一次作业花费时间的比例大概是2:1:1:1.2:1。

第二次作业中第一题比较简单,第二题涉及到时间还有输入合法性,有很多要考虑的因素,所以在这些地方也耗费了一些时间,第三、四题有第二题的铺垫在这方面的时间花费的较少,更多的是写题目本身的主要需求。所以第二次作业花费时间的比例大约是2:3.5:3:3。

第三次作业其实和第二次作业有相似的地方,所以写起来会更加轻松,因为对类的使用不是很熟悉一开始也花费了一些时间在一些细节上。做完一、二题对类的有关方法掌握的相对更加全面之后写第三、四题也就更加方便。所以第三次作业花费的时间比例大概是4:3:2:2;

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

编程过程中逻辑的严谨是最容易让人忽视也是最容易出错的地方,就如写作业时,这种错误在编译器中编译运行时可能不会出现,但是在pta平台的检测就会一下原形毕露。而且它十分难寻,如果是很复杂冗长的代码,可能写的时候没有花费太多的时间,但是在后续寻找错误会耗费大量的时间和精力。所以在编写代码过程中要做好注释,也不能一味的依赖编译来查错,而是要做到自身逻辑清晰、严谨,这样才能避免写出各种bug。

第二阶段

①    三次作业之间的知识迭代关系

第六次作业我个人感觉针对面向对象的继承这一方面考察的能力比较多,封装和多态就没有那么明显的考察,到了第七次作业就比较综合,这些特性都考察到了。然后第五次作业其实没有那么多的考察这运用三种特性的能力,而是有些承接了上个阶段对类的运动,以及正则表达式的运用。

②    如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性

对封装性的理解:

封装就是把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只用通过被授权的操作(成员方法),才能对数据进行操作。在作业当中有一些属性或变量出现的比较频繁,为了避免出现错误或者误调可以封装起来在特定的方法里使用。

对继承性的理解:

继承可以解决代码复用,让编程更加靠近人类思维。当多个子类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过继承父类中的属性和方法。在第五次作业的第三题、第六次作业的第一题、第七次作业的一、二题都很明显的用到了继承的特性,刚开始写这一类题的时候对继承的特性还没有很好的运动,后来就感受到了它的好处。

对多态性的理解:

多态是一个引用(类型)在不同情况下的多种状态。也可以理解成:多态是指通过指向父类的引用,来调用在不同子类中实现的方法。我在第七次作业当中才能稍微熟练的运用多态性,前面的作业可能对这种性质的考察不是很多,所以我也没有去研究这种性质,后面才慢慢理解了。简单来说,多态就是在执行同一操作且作用于不同对象时,返回不同的结果。就是把做什么和由谁去做分开,这样使代码更容易维护,且条理清晰。

③    作业过程中遇到的问题及解决方法

这几次作业当中我遇到最大的问题就是正则表达式不能掌握,导致第五次作业的第一题和第六次作业的第二题都没有拿到分。我去网上查找了正则表达式的相关资料只是帮助了我能够掌握一些简单的正则表达式,但是题目中需要用到的正则表达式对我来说过于复杂,在这一方面我也只能一步一步慢慢研究。还有的问题就是我对多态的运用掌握的不是很好,然后在写题目的时候稍微有一些卡壳,但是请教了同学以及网上各种帖子,对于作业中要求的程度基本可以解决。

④    每次作业花费的时间比例

第五次作业是我们刚刚接触面向对象三大特性的第一次作业,所以一开始花费的时间就相对后两次来说更多一些,加上正则表达式这个完全陌生的领域,然后第一题又需要运用到很复杂的正则表达式,以及第一次作业题目本身的要求就比较复杂,所以第五次作业中我在第一题上花费的时间是最多并且效率最低的。总的来说,第五次作业这三道题我花费的时间比例大约是4:1:1。

第六次作业中第一题和第五次作业的第三题其实有很大的相似,只是要实现的更多一些,但是有了前面的铺垫就更加节省时间,效率也更高。第二题和第五次作业的第一题其实很相似,算法都比较复杂,并且都需要用到复杂的正则表达式。我在这道题上遇到的问题和第五次作业第一题遇到的问题一样,这道题我花费的时间也比较多而且效率很低。所以这次作业我的花费时间比例大约是3:1。

第七次作业的题目也是图形继承类,有了前面的铺垫写起来就更加得心应手,而且也很流畅基本上没有什么大问题,第七次作业中这两道题的时间比例大约是1:1。

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

编程过程中逻辑的严谨是最容易让人忽视也是最容易出错的地方,就如写作业时,这种错误在编译器中编译运行时可能不会出现,但是在pta平台的检测就会一下原形毕露。而且它十分难寻,如果是很复杂冗长的代码,可能写的时候没有花费太多的时间,但是在后续寻找错误会耗费大量的时间和精力。所以在编写代码过程中要做好注释,也不能一味的依赖编译来查错,而是要做到自身逻辑清晰、严谨,这样才能避免写出各种bug。越到后面用到的方法、属性、类越多,各种类之间的继承关系越复杂,逻辑严谨性的重要就越能体现。

3.OO设计心得

①面向过程与面向对象的比较

面向过程就是要设计出每一步要走的路线,然后再按部就班,一步步解决问题,就像流水线。面向对象将事物都看成对象,通过对类与对象的继承,封装,多态的实现从而解决问题。

②面向对象设计的基本原则理解

单一原则:一个类只做好一件事,只有一个引起它的变化。

开放封闭原则:是可扩展而不可修改的。

替换原则:子类必须能够替换基类。

依赖注入原则:要依赖抽象而不是具体现实,在开发中尽量的面向接口编程。

接口分离原则:一个接口不需要提供太多的行为。

③OO编程思维的理解

OO设计主要是将现实抽象化,类和对象是OO编程中最重要的两个基本元素,在编程时,先找到要处理的对象,再找到各个对象的共同祖先,逐层抽象,最后确定各个类之间的继承关系。

4.课程收获

在这一学期的学习过程中,通过同学的帮助和罗老师的教导,我对java有了初步的认识和了解。学习java首先主要是学习了Java的程序结构,包括了循环、数组、类和方法以及字符串处理等内容。在学习期间,上课认真听老师的讲解,特别是课后练习和pta上的题目,以及老师提供给我们的有关学习编程语言的方法和技巧,对于我巩固所学的理论知识有很大的帮助。现在我也只是刚刚开始学习Java语言,所以想真正掌握Java技术,以后还会有很长的一段过程需要我们更加努力地去学习。

posted on 2020-06-10 10:32  karelu  阅读(64)  评论(0)    收藏  举报

导航