OO第一作业周期总结

0.前言

本次作业周期共有三次作业,第一次作业包括计算税率、判断坐标点所在范围、电话键盘字母数字转换、判断三角形类型、统计最大数出现次数。第二次作业包括求一元二次方程、判断闰年及星期几、求下一天、求下N天。第三次作业包括用类解一元二次方程、日期类设计、日期类问题面向对象设计(聚合一)、日期类问题面向对象设计(聚合二)。

1.作业总结过程

①总结三次作业之间知识的知识迭代关系;

第一次作业主要是熟悉Java编程,了解并掌握一些基础的Java编程知识,如Java的输入输出以及if else语句等。第二次作业相较第一次作业难度有所增加,新增了方法的概念。第三次作业在第二次作业的基础上开始进行对类的编程。

②如何通过作业逐步从面向过程过渡到面向对象;

三次作业由易到难,层层递进,从直接在Main中编程到方法的使用再到类的概念的形成,进而由面向过程的思想转变为面向对象编程思想。

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

在第一次作业判断三角形类型中,判断等腰直角三角形这个测试点,我用的是其中两边相等,并且这两边的平方和等于另一条边的平方,这完全符合数学常识,然而测试总是通不过,后来我又用两边相等,第三条边等于这两边其中一边的根号二倍,还是无法通过测试。最后询问同学得知不能用a×a+b×b=c×c进行判断,而是要用将a×a+b×b-c×c控制在一个小范围内,这个差值小于0.0001大于-0.0001。

在第一次作业的统计最大数出现次数问题中要求编写程序读取一系列整数,找出它们的最大数,然后计算该数的出现次数,假定输入以0结束,其中,我在如何存储输入一系列整数和如何假定以0输入结束遇到了问题。因为我的想法是用数组存储输入的整数,但是因为输入的整数个数不确定,因而无法确定数组的长度,在数组初始化时不知道给它开辟多大的空间,在这里纠结了很久,还有如果用while循环,如果刚开始输入的数是0,那么0无法存入数组中。针对这两个问题,我采用了do-while循环,并直接初始化数组空间为100,问题也就迎刃而解了。

在第三次作业日期类设计中,需要编写方法求下n天日期。我的想法是将当前日期全部换算成天数加上n天重新计算日期,但是测试点中有一个是n为整形最大值,如果加上换算的天数就超出了范围。因此,我先判断当前年的下一年是否为闰年,使n-366或n-365,当前年加一,n>0进行循环,再判断当前年是否为闰年,使n+366或n+365,这样年就定了,再用一开始的想法,将月日换算成天数加上n天,重新计算。

第三次作业的日期类问题面向对象设计(聚合一)、日期类问题面向对象设计(聚合二)还遇到了空指针的问题,后来经过几天的调试才得以解决。

④每次作业花费的时间比例;

第一次作业由于遇到上诉问题,花了六个小时左右才完成,第二次作业没有遇到太多问题,也用了四个小时左右完成。第三次作业则花了几天才解决。
⑤对编程过程严谨性的认识及教训;

如果代码量比较多一定要边写边测,如果一股脑将代码全部打完才来测试运行,出现问题很难发现具体在哪,即便知道问题出在哪改起来也十分吃力。

2.OO设计心得

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

面向过程以解决问题的过程为核心,通过思考问题的解决方案进行编程,而面向对象以问题中具体的对象为主要内容,通过编写的对象来进行具体操作。相比与面向过程,面向对象编程更易于维护,代码的复用性更好。

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

面向对象设计中以类-对象的关系为基础,类定义了属性与方法,其对象都具有该类的属性并能使用该类中的方法。这样,每个类都有自己的功能,并且每个类只有一个功能,维护起来也就更加方便。

③OO编程思维的理解;

不再以解决问题的具体过程为切入点,而是考虑问题中能否抽象出具体类,每个类又有自己的属性及方法,通过new出对象就可以具备这些属性,使用这些方法,从而解决具体问题。

3.测试的理解与实践

①测试对于代码质量的重要性;

测试能找出程序的具体问题,只有经得起测试的代码质量才会更好。

②如果让你设计测试用例,你会如何做;

考虑边界情况、特殊情况、用例输入非法等情况。

4.课程收获

通过老师的课上讲解以及编程练习,使我慢慢地接受并熟悉了面向对象设计的具体思想,并且能够运用这些思想解决具体问题,拓展了解题思路,丰富了编程知识,编程能力也在逐步提高。

5.对课程的建议

老师可以对做过的pta练习进行适当讲解。

posted @ 2020-04-05 14:25  CHELAKERS  阅读(110)  评论(0)    收藏  举报