0.前言
主要说明本次博客针对的作业情况
本次博客主要针对pta中的三次作业,对自己做作业的过程进行总结,将此过程中的所思所想以及一些收获与心得进行简要的概述。
1.作业过程总结
①总结三次作业之间的知识迭代关系;
第一次作业中的五道题相对来说比较简单,都是一些简单的编程题,其作业目标是实现一些较为简单的功能,如:计算税率,判断坐标点所在范围,统计最大数出现次数等等,除了第一题统计税率由于数据多而比较复杂外,其他几题难度较小。这从代码的长度也可以看出来,第一题超过了100行,而其他四题都在50行之内。其实从三次作业的代码长度也能看出难度是递增的,第一次作业大部分在50行以内能完成,而第二次则平均在100行,第三次比较难,达到了500行。从知识迭代关系来看,第一次作业只是实现了一些小功能,让我们练习一下,对if else和for循环等知识更加熟练;第二次则加入了方法的使用,让我们自己创建方法来解决相应的问题;第三次则加强了对类的研究与使用,对于每一个问题或是对象都可以创建一个类,并在写代码的过程中对功能不断完善,类与类之间可以互相调用,这提高了代码的复用性。
②如何通过作业逐步从面向过程过渡到面向对象;
首先,我们应该在思维上做出改变,以前的我们在写代码时,都是针对一个问题写一段代码,从现在开始应该有意识的针对一类对象设计一个类,将这类对象的属性都包含进去,这样,当遇到相似的问题时,就可以直接调用
③作业过程中遇到的问题及解决方法
问题:当把值传给形参时,只是形参的值改变了,实参的值没有改变,这导致传值过后的实参还是初始的值
解决方法:传值调用和传引用调用的问题,当改为传引用调用时,传的是实参的地址,这样,形参的改变都会传递到实参上
④每次作业花费的时间比例
第一次作业:大约5小时,第一题60%,剩余每题10%,大部分用在了第一题“计算税率”,因为第一题数据比较多,且需要一定的计算量;
第二次作业:大约10小时,第一、三、四题各20%,第二题40%,因为第二题列举的情况较多,费时间,而三四题可以借鉴第二题;
第三次作业:大约20小时,第一题1%,第二题49%,第三题35%,第四题15%,第二题因为一个小问题卡了比较久,第三题代码可以借鉴第二题,第四题则在第三题的基础上进行改动就行;
⑤对编程过程的严谨性的认识及教训
编程过程尽量不要定义相同名字的变量,容易混淆,因为当代码编译出现错误时,这种小问题不好排除,也不容易确定是否是它造成的;并且也要分清变量是public 还是private,当不得已用上了相同名字的变量,要用this来区分。
2.OO设计心得
①面向过程与面向对象的比较
面向过程是遇到一个问题,就解决一个问题,这个过程需要一步步的分析,一步步的试错,一步步的实现,这样既耗时也耗力,而且代码的复用性也不高,一旦遇到类似的新问题,又要重复分析、试错、实现这一过程;而面向对象则是将一些具有相同属性的个体抽象为一个类,将对象的所有属性都封装在里面,对外只提供访问方式,我们只需要知道如何去使用它,而不用了解它是怎么实现的,这就将问题分解成了一个个模块,这能大大提高我们编程的效率;其实在面对一些简单的题目时,我们反而不能察觉到这种差异,使用面向过程的方法似乎还更简单,但是一旦代码量提升到另一个层级,当需要编写许多功能相似的函数时,面向对象的优势就凸显出来了。
②面向对象设计的基本原则理解
- 单一职责原则:一个类只负责一个职责,不能让它包罗万象,花样百出,否则修改或者维护的难度会增加,会牵一发而动全身,要向一个井然有序的公司一样,分成若干个部门,每个部门各司其职,这样才能提高公司这个整体的效率。
- 开闭原则:对扩展开放,对修改封闭;信息化时代发展迅速,以前的功能渐渐不能满足现在的需求,这就迫切需要增加新功能,但是若是修改程序会影响整个系统的稳定,所以需要在现有基础上扩展。
③编程思维的理解
将一个大问题拆分成数个易于解决的小问题,套用老方法解决类似的小问题,将重点抽象出来,忽视无用的细节,达到将整个问题解决的目的
3.测试的理解与实践
①测试对于编码质量的重要性
非常重要,测试能够考验一段代码的可靠性,如果代码因为某些测试用例而出错,说明它还不够完善。
②假如让你设计测试用例,你会如何做
不能只用类似的测试用例来进行测试,而应该考虑多方面,包括测试目标、测试环境、输入数据等等
4.课程收获
总结这四周来在OO方面的教训及收获
①教训:编程之前应该对问题有个全面的认识,并且知道自己要解决那些问题,如何解决,应该有个大致的思路,不能一股脑的就开始,没有规划容易让自己半路卡壳,降低效率;
②收获:对面向对象编程有了更深刻的理解,在以后的编程中也应贯彻这一思想。
5.对课程的建议
目前一切都挺好,没有建议。