欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

理解面向对象思想

程序员文章站 2022-03-20 15:51:56
面向对象程序设计的基本认识 0.前言: 接触面向对象程序设计这门课程已经有四周有余了,经过四周的网课,直播课,PTA作业题等的练习,我对面向对象程序设计有了自己的理解和兴趣......

面向对象程序设计的基本认识

0.前言:

接触面向对象程序设计这门课程已经有四周有余了,经过四周的网课,直播课,pta作业题等的练习,我对面向对象程序设计有了自己的理解和兴趣。前三次的pta作业让我逐渐从面向过程思维逐步转变为面向对象思维,作业由自己独立思考独立完成,总体完成效果良好。

 

  1. 作业过程总结:

1)      第一次作业的题目较为简单,个人感觉更偏向于面向过程的思路,第二次作业和第三次作业的关联较大,第二次作业的7-2,7-3,7-4都是关于日期的问题,理解面向对象思想

 

 

 第三次作业的日期类设计更是第二次作业的拓展和衍生,理解面向对象思想

 

 

 此外第三次作业的7-1和第二次作业的7-1都是求解一元二次方程,第三次在第二次的基础上,更加贴近于面向对象,更加精妙。

2)      在第一次作业时,面对题目下意识的去一步一步解决,只去解决题目的要求,去设计解题的过程,并没有实际上理解以及运用面向对象的思维,到第二次作业时,开始有类的大致认识,并可以按题目要求写出相应的类和方法来解决问题,并且第一次在解题过程中用到了对象,到第三次作业,已经能够清晰地按面向对象的思路去思考问题,能够读懂类图,并体会到了面向对象的优点。

3)      作业中遇到了很多很多的问题,主要的解决方法是向老师同学求助,和自己网上参考资料解决问题。如:

第一次作业的7-4:输入三角形三条边,判断该三角形为什么类型的三角形。

这个题目中因为三条边长都是双精度浮点型数据,判断的直角三角形时,勾股定理并不适用,在多次报错后,我求助同学,学习到了(a*a + b*b - c*c)<1e-6的方法,解决了这个问题。

第一次作业的7-5:编写程序读取一系列整数,找出它们的最大数,然后计算该数的出现次数,假定输入以0结束。

这个题我想到了用数组来解决,但是没有具体的数组长度,所以我在不断地查找后,学习了arraylist类的基本使用方法,问题迎刃而解。

第三次作业7-2: 日期类设计

这是我目前遇到的最大的一个难题,死磕了三天才解决,理解面向对象思想

 

向老师和同学求助,后决定优化算法,在之前的算法中,我使用了多次循环,每次循环都会创建新的数组,导致内存占用过多,内存超限,在简化过后,大大减少了循环次数,使得程序有更好的可用性。

4)      第一次作业和第二次作业我只用了一天的时间,第三次由于算法的复杂,花费时间较多,尽早地做完作业可以更好地拿出时间来研究网课,品味编程的乐趣。

5)      编程是一个极其严谨的事情,在作业的完成过程中,我因为不够严谨出现了各种各样的bug。如:括号的位置不对,循环的内容不对等等,很多时候一个由于不够严谨导致的bug足以让人抓狂!!!

编程一定要养成良好的习惯和严谨的态度,谨小慎微,只有严谨地对待代码才能高效的提高进步速度!共勉!

 

2.面向对象设计心得

1)      我认为面向对象与生活更加贴切,就比如一个老旧的例子:洗衣服。面向过程来写需要写洗衣服的整个步骤,取衣服,加水,倒洗衣液等等……

而面向对象更像是我写一个人的类,这个类有一个洗衣服的方法,我只需要new一个人的对象就可以实现,而且我如果需要新的一些动作,只需要在类里面加新的方法,相对于面向过程来说大为简便;

2)      面向对象有五大基本原则,目前只接触到了一部分,我分享一个链接,有关五大原则的内容,供日后学习掌握:

3)      面向对象编程思维我还处在一个渐悟的过程中,在学习到面向对象的编程思维后,我发现万事万物都可以归为类,每一个类都是由属性和方法构成的。代码中写的每一句话都不能超过类的范围,很是条理清晰。每一个类都有自己的单一职责,当需要使用类的时候,需要new一个类的对象来实例化,由对象来实现类的方法,就好比类是女娲造人的模具,而对象是一个个活生生的人,具有模具的种种特性。(可能个人的理解并不是那么确切,在日后的学习中会不断完善自己的思维)

 

3.测试的理解与实践

1)      测试对编码来说是重中之重,检验一个代码的可用性,交互性,准确性等都和测试密不可分。而且很多时候,测试不单单是检测代码是否准确,结果是否无误,而且也在检测代码的实用性,如第三次作业7-2,有个测试点是int最大值2147483647的测试,我最初的代码测试的结果并没有错误,但在计算最大值时,明显感觉耗时长,且电脑负荷变大,这样我开始对自己的算法产生怀疑。经过多次改进,最终在测试时计算速度明显简短,内存也不再超限。

在课上也学习了junit的测试方法,了解了一点简单的白盒测试知识,在日后也会多加关注这方面的内容。

2)      关于测试点,我认为我会设计很多方面,最基本的是边界值,特殊值,普通值,还要设计代码运行的时间,所占的内存,是否按要求输入输出,输入非正常的值的结果,以及我认为可以加一些关于结构的测试点,测试结构是否符合规范。

 

4.课程收获

面向对象给我打开了新世界的大门,我认为自己最大的收获就是对编程产生了浓厚的兴趣,我开始自发地去学习以及思考,在作业的过程中我的思路也逐渐清晰缜密,自己发现了自己的进步。这是我认为最大的收获。兴趣是最好的老师,在这样一个线上授课的特殊时期更是如此,没有强有力的监督,而这门课程带给我的乐趣是我不断学习的强大动力。

 

5.对这门课程的建议

个人认为每次直播课的内容要更详细一些,多一些和同学的互动,最好可以设置一个专门的时间用来答疑,因为在同学们自己看慕课以及完成作业时,会碰到各种各样的问题,设置一个专门的时间来答疑,可以给同学提一点建议,减少同学盲目探索的时间。

 

6.未来一段时间的计划

1)      每次的作业保证质量,保证速度,保证掌握,保证收获;

2)      每天拿1-2小时练习java,学习java的课程;

3)      及时回顾知识,总结每一段的学习内容;

4)      键盘敲烂