学习OO第一阶段总结
0.前言:
对前一阶段的三次作业进行总结分析。
1.作业过程总结:
①总结三次作业之间的迭代关系:
<1>.第一次作业相对而言比较基础,比较另外两次作业使用了多个main函数,而class的使用则显得简单。几乎没有面向对象的体现。
<2>.第二次作业开始体现java中的面向对象的分解模块,初步体现出余C语言的区别,在算法上也有一些差别,需要更多的思考与嵌套,main函数的使用则出现了大量的减少。
<3>.第三次作业明显可以看出代码的可读性增强,模块化更加清晰,面向对象的特点开始体现,通过main函数的class的使用也趋向成熟。
总结三次作业: class从无到有的使用,java模块化一步步的体现,通过相互之间的调用,影响减小,面向对象的特点也体现出来。
②如何通过作业逐步从面向过程过渡到面向对象:
<1>.第一次作业中更多使用的还是c语言的知识,没有模块的体现,只有简单的功能的实现。
<2>.第二次作业就有了面向过程到面向对象方面过渡,不止是有main来完成代码的输出要求,开始使用class来储存。
<3>.第三次作业则有了较大的差别,代码中不仅使用class来储存,并且将其有机串联。不再是C语言的面向过程,更多的增强了代码可读性,main函数也只是辅助代码实现各个功能。
③作业过程遇到的问题及解决方法:
<1>.第一次作业虽然较之后两次较为简单,但是初次尝试java语言的编写也出现了很多问题,类与对象的概念模糊,语句的固定格式记忆混乱。依靠过多的C语言知识。但通过笔记与询问老师这些细小的问题得到了充分的解决。
<2>.第二次作业难度明显上升,不能过多的使用main函数来满足代码要求,需要用class来完成储存。依靠过多C语言知识不能将代码要求全部完成。课堂所讲内容也不能满足题目要求,需要不断看网课,搜索资料来完成。
<3>.第三次作业需要更多class的储存,main函数的使用也减少,但是我认为是第二次作业的加强,出现更多模块化分类的问题。通过更多的思考,不断的尝试可以解决。
④每次作业花费的时间比例
<1>.第一次作业编写代码的时间相对较少,更多的时间用于网课的知识积累与java语言的固定模块记忆。
<2>.第二次作业的时间大多用于编写代码,由于对java语言的不熟练,虽然框架已经设计清楚,但是多次的编译失败导致过多的时间消耗。其余时间则是询问老师代码中的不足。
<3>.第三次作业比第二次作业的难度加大,但是并没有出现更多的编译失败,反而将时间用在框架的设计与模块的分解。网课的学习也占用了很多时间。
⑤对编程过程的严谨性的认识及教训
编程是否严谨关系到编译的成功与否,更关系到测试点能否通过,不严谨不仅会导致时间的浪费,更有可能将自己编写的代码功亏一篑,事倍功半。在第二次作业中,由于我的不严谨,将模块的分解出现错误,导致框架明显不足,时间过多的浪费也不能找到错误。只能到头来重新设计,严谨性对于程序员来说非常重要,一个细小的失误所出现的bug,就需要更多的时间来弥补。
2.OO设计心得
①面向过程与面向对象的比较
在初步接触面向对象后,前略的与之前的C语言相比较,面向对象更加侧重于功能的实现,依靠功能来划分问题,而不是侧重于每一点步骤。相较于面向过程,则是依靠每个步骤来完成编译,解决问题。面向对象更突出于模块化的框架,封装,继承,多态,唯一就是面向对象的显著特点。而面向过程易于维护与拓展的特点也较为明显,但是在调用方面则是面向过程更为简便。
②面向对象设计的基本原则理解
面向对象的单一原则,在面向对象中每一类都注重于单一的功能,而把多个类放到一起,则会形成有机的串联,而在有机串联中修改某一类的功能,则会造成另一类的功能改变,这样易于出现错误。
开闭原则:开闭原则是设计原则的核心原则,这种可以实现拓展的方法,也不可能避免面向对象的风险性,随意拓展只会造成维护的代价增大。
③OO编程思维的理解
编程思维是我较为欠缺的一环,这也就导致构建框架与分解模块时的困难。逻辑性不足是编程思维较差的主要原因。如何在起初构建代码基础,之后的过程中怎样实现代码问题的解决,测试点的通过都离不开编程思维。编程思维是一整套代码核心的一环。只有掌握良好的编程思维,才能在得到代码介绍与要求时最快时间的分解模块与构建框架。
3.测试的理解与实践
①测试对于编码质量的重要性
测试代码,顾名思义为保证代码的质量,防止代码bug的产生。忽略测试的重要,直接结果便是导致客户体验较差,对软件失去信任与无尽的抱怨。由于代码均为手工编写,而手工的代价便是失误率较高,这样代码的检测也就显得十分重要。
②假如让你设计测试用例,你会如何做
首先是测试代码思路,思路的繁琐直接影响代码的成果。其次是测试代码的模块,分解模块不清晰很有可能导致bug的产生。然后是测试软件流程,判断代码的进程与系统流程是否一致。
4.课程收获
初次接触java,接触面向对象,与C语言的面向过程对比,懂了如何将代码要求分解模块与框架的构造。从依赖多个main函数的使用到现在减少main,而熟练地用class的储存。增强了自己的严谨性与逻辑性,编程思维也有了很好的提高。因为小失误而导致编译错误的毛病也有所改正。