OO第一作业周期(前四周)总结

 前言

本文章针对Java课程前三次PTA作业进行总结

一.作业过程总结

  1.总结三次作业之间的知识迭代关系:关于前三次作业之间的迭代关系,第一次作业主要是关于Java的最基础的练习,算法都可以直接再main函数里面实现,初步了解Java的一些基本的操作,输入输出,至于其它语句和C语言都是一样的。

第二次作业开始是关于日期方面的题目了,对于日期的相关操作都在一个类当中实现,只不过每个功能写成了一个子函数,所以前后题目所需要的共同方法只能复制过来。

第三次作业也是关于日期方面的操作,算法都在第二次作业基本实现了,只是题目对于编程的思想有了要求,要求用不同的类来实现每个功能,并且还有分类与类之间的关系来实现;这三次作业循序渐进,从我们学C语言面向过程的思想引入到Java面向对象的思想,题目实现的功能虽说一样,但是所用到的知识点却大有不同。

  2.如何通过作业逐步从面向过程过渡到面向对象:前三次作业就是逐步引入我们到面向对象,学习了C语言之后这种面向过程的思想难以一下就改变过来,所以第一次作业就是面向过程的,我认为第一次作业就是先让我们熟悉一下Java的一些基本操作,所以通过第一次作业熟悉基本操作之后,第二次的作业也不会过于陌生,通过第二次这一次过渡的环节:在一个类当中用子函数写好所要实现的功能;再然后是第三次就引入了面向对象的思想,跟着题目给的UML类图,写好每一个类的功能以及类与类之间的关系,能够较好理解并完成第二题,第三题就是需要理解好每个类的关系,就比如第三题当中的Year类,Month类,Day类,DateUtil类的关系,通俗的说就是一层包一层,Year类是最里面的一层,其次是Month类,Day类,再全收在DateUtil类当中算法第二题基本可以照搬,理解了第三题之后,第四题也就迎刃而解了,其实做完第三次作业第三题之后就体会到面向对象与面向过程的不同。

  3.作业过程中遇到的问题及解决方法:在第一次作业当中除了一些基本算法以及小bug之外,主要是对Java的一些输入操作还不熟悉,后面百度了才知道要调用Scanner这个类进行输入,该类在JDk当中写好了,这在后面加深了我对类的调用的理解。

在第二次作业当中,第一题是一元二次方程,忘记考虑了二次项系数不为0的情况;第二题是在非法日期上面存在问题,就是闰年2月不大于29,平年2月大于28;第三题第四题还是在于求下一天、下n天算法上面存在一些问题,就是少算了几天多算了几天,闰年平年的考虑,这方面的解决方法无需多提,就是考虑周全就好。

第三次作业主要问题集中在第三题,由于除了课堂作业外第一次做这种面向对象题目还有些生疏,主要问题在于类与类之间的关系没有整理好,调用方法以及返回值的问题,还有第二次作业的日期判断bug没有被测到,把算法搬过来之后在第三次作业第三题被测到。关于类与类之间的关系以及方法的调用问题是询问了同学之后基本上理解了,就比如我不知道如何在第三题Month类,Day类当中调用year的方法,后面理解了是根据类之间的关系结构来调用,这要先理清关系才能做;改完重新写过日期判断的方法的算法后,由于求下n天前n天的时间复杂度太大,稍微改进了算法,原先用的for循环,后面改进用的while(){switch}之后就符合在题目要求的时间限度。

第四题没什么问题,并且很快就写完一次过了,问题都在第三题,解决了第三题的疑惑,第四题也就没什么问题了。

  4.每次作业花费的时间比例:第一次作业做题目的时间前前后后花了5个小时左右,第二次作业也花费了5小时左右,第三次作业花费了10小时左右。

  5.对编程过程的严谨性的认识及教训:对于编程的严谨在于敲代码之前构思好框架,对于一些特殊情况的考虑,就好比我的第三次作业主要修改程序的时间花在了日期判断上面,因为搬用之前第二次作业的这个日期判断的代码,第二次没被测出bug,导致后面做第三次作业花费大量时间寻找修改,虽说是小bug,并非硬核技术错误,但是确实花了最多时间去找去修改,真的是小错误浪费大时间,编程心态也受到影响,所以对于这次的教训是刻骨铭心,实现算法要先仔细地周全地考虑一些特殊情况。

二.OO设计心得

  1.面向过程与面向对象的比较:通过这三次作业,从面向过程过渡到了面向对象的思想,面向过程主要是在于考虑思考如何去实现这个算法,以过程为中心,更加侧重与算法实现方面的问题;面向对象在于考虑对象问题,把每个对象分开考虑,考虑每个对象所应有的属性和方法。

  2.面向对象设计的基本原则理解:把每个类分开考虑,考虑这个类应该是什么,具有什么属性方法,不需要考虑这个类之外的事情,做好分内之事即可。

  3.OO编程思维的理解:编程之前考虑应该能分成几个类,每个类应该负责什么,每个类所处的层次问题以及它们之间的关系。

三.测试的理解与实践

  1.测试对于编码质量的重要性:一次性写完没有语法错误的代码并不难,但是一次写出完美无bug的代码是比较难的。所以测试对于编程可谓是非常重要的环节,没有测试过的代码就像是没有净化的水,谁也不知道水里面藏着什么污垢。

  2.假如让你设计测试用例,你会如何做:我设计测试用例首先是用普通用例,首先这是检查代码大致的正确性,其次再是考虑一些特殊情况,尽可能全面地考虑所有特殊情况。

四.课程收获

  1.总结这四周来在OO方面的教训及收获:教训是对于每个类里面的命名要规范正确,做第三次作业在命名方面的错误也居多,写完之后再修改工作量实在大。收获是对于OO编程思想有了更好的理解,从当初学习C语言的面向过程思想转变到了面向对象的思想。

五.对课程的建议

  1.课堂建议:建议课堂侧重一下讲解知识点与举例的比重,个人觉得可以更加侧重于举例与实际操作;其次是课间10分钟时间可以安排一下,长时间听课效果不是很好。

(0)

相关推荐