南昌航空大学-软件学院-19201527-袁瑾瑜OO第二单元作业总结

0.前言

本次博客针对该学期面向对象程序设计在PTA上发布的第五、六、七次作业情况作出总结,在这三次作业中,我均未能完成所有题目,虽然在自学后我已可以完成题目的要求,但这让我感受到了自身学习能力与学习速度的不足。

1.作业过程总结

    .知识迭代关系

从第五次作业开始,题目的要求渐渐变得复杂并且困难,我们所需要完成的不再是简单的面向过程的小程序,而是渐渐朝着一个系统进行发展,而题目所需的代码量也渐渐增加。

在第五次作业中,题目开始考察类的运用,在之前的作业中虽然也运用了类,但那时的运用只是如同c语言中的函数一样,互相并无关联,而从这次作业开始,题目渐渐深入,开始考察类与类之间如何联系起来,这次作业并不困难,但它用较大的数据量训练了我们连接类的能力,让我们认识到程序并不是一个个体,而是多个个体的整合。

在第六次作业中,题目开始对类的继承进行考察,为了节省时间,也保证代码的通用性,我们不可能在每个类中对每个方法进行定义,类的继承在此时便显得必不可少,而第二题则考察了我们对正则表达式的运用,如何对输入的格式进行限制,以及对非正常格式的输入进行读取将是一项非常重要的工作,虽然我还没能完全掌握它,但我会在接下来的学习中逐渐将其掌握。

在第七次作业中,题目考察了类的多态性,这次的作业要求相比上一次要简单,但却更难完成,如何用简单的调用实现复杂的功能成了一大难题,经过长时间的测试与思考,我终于使用接口card来将类与类联系起来,使其成为一个整体。

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

在以往的作业中,我可以从主函数入手,先想好如何去调用函数来实现目标,再编写函数与方法来实现目标,就连输入输出的格式都是通过主函数来控制的,这也导致了我程序的拓展性与通用性极其之差,通过这几次作业,我明白了可以通过类与类之间的联系来控制,修改程序,而不必使主函数变得又长又难以阅读。通过使用学到的类的继承,多样性,以及接口,让复杂的问题简单化,即简洁又明了的写出了题目所需的程序。

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

在编程过程中,报错是常态,而很多处于逻辑上的错误并不会被编译器提示,此时便需要我自己来排查,在作业过程中,我印象最深刻的错误便是在继承类时提示的未定义隐式超构造函数,在进行百度后,我了解到,父类中需要有一个无参的构造器,不然便会出现这种错误。而更多的时候,那些隐藏的逻辑错误难以发现,我便通过编译器的调试功能,逐步运行,排查出错误所在,并对错误所在的方法进行修改,才能解决问题,完成题目的需求。

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

在作业过程中,花费时间最长的其实是第五次与第七次作业,第五次作业时刚刚接触类的封装与继承,在实际操作的测试中花费了许多时间,而第七次作业让我接触到了一种我以前从未设想过的编程模式,将输入输出从主函数转换到方法中,大大拓宽了我的编程思路以及程序设计视野。

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

在渐渐深入的编程中,我越来越意识到逻辑严谨性的重要,现在的代码不过200,300行,将来进入工作环境中所要接触的代码要远远超出这一数量成百上千倍,那时想像现在这样一步步的运行是极不现实的,所以必须要敲出代码的那一刻便保证其逻辑无误,不然会给自己带来极大的困扰和麻烦。

2.OO设计心得

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

在我看来,面向对象相比面向过程最大的差别便是通用性,面向过程编写的代码只在该源码中起作用,后续进行类似编写时无法重复利用,浪费了很大的精力与时间,而采用面向对象编程,一次编写便可以在后续需要类似方法时直接调用,节省了时间,也让代码与代码间连接的更加紧密。

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

面向对象的SOLID原则(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)我目前只对S具有理解,我在第三次作业的编写中调用了第二次作业的计算下N天代码,但是能完成第二次作业要求的代码却无法满足第三次作业的要求,这是因为第二次作业的代码中同时考虑的下N天与前N天,导致在计算时会出现超时,所以,在我看来,使用单一功能的多个类要好于具有多个功能的单一类。

  OO编程思维的理解

在我看来,面向对象与面向过程好比是做一把斧头,面向过程是往模子里倒模来制作斧头,虽然一次成型,但模子已经固定,无法再用作其他用途,而面向对象则是制作斧柄,斧刃等等部件,斧柄不仅可以用来做斧子,也可以做木棒或其他工具的把手。在我看来,面向对象的通用性是其优点所在。

类设计心得

在大部分作业中,都有着作业指导书为我提供类的构建设计思路,但是这又带来了一个问题,我独自设计类的能力会出现不足,所以在后几次的作业中,我会将同一个题目编写两次,一次使用指导书中的类设计,一次尝试是用自己的类设计,来提升自我设计能力,完善自身编写代码知识。

3.测试的理解与实践

测试对于编码质量的重要性

在编写程序时,我经常会遇到我自己输入的数据测试无误,但在输入测试样例时有误的情况,这是由于问题不仅仅只是表面那么简单,在数据量大起来的时候会出现许多特殊情况,如果不进行测试,写出来的代码便只是一个经常出现错误的废码,对自己以及使用代码的人造成不必要的麻烦。

查阅资料,假设使用Junit进行程序的测试是否可行

通过阅读cnblog上的文章java单元测试之Junit篇,我开始了解到Junit这一程序测试方法,在接下来的作业完成过程中,我会尝试使用该方法,来使自己的代码更加完善,高效.

4.课程收获

在这四周的学习过程中,我开始体会到类在程序设计中的作用之大,掌握好类的作用,程序就能简洁,明了,易懂,不仅能在编写过程中得到方便,也能在日后的维护与修改中起到帮助,这四周的学习,让我掌握了一种极为重要的编写思路,拓宽了我的程序视野,为我未来的学习打下坚实的基础。

5.对课程的建议

       希望在接下来的授课中,老师可以多讲述一些编程思维,从零开始构建代码,每次使用课前编写好的类,我还在理解这个类的效果与原理时,老师已经开始讲下一个部分了。老师也可以稍稍放慢讲课和作业的进度,我们刚刚接触JAVA,难免有一些不熟练,希望老师能多给我们一些时间来思考完成问题。

猜你喜欢

转载自www.cnblogs.com/Ashone/p/13189372.html
今日推荐