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

针对我们第一阶段的作业(共三次)进行以下的总结:

0.前言(说明本次博客针对的作业情况)

这三次作业都是对于Java中基本操作的运用。可以让我更好的了解到对于Java中的一些基础知识和基本的操作,除此之外,也可以让我们通过自我操作更好的知道到何为面向过程,何为面向对象,而它们之间的关系又是怎么样的,我们如果才能更好的从面向过程过渡到面向对象,从而加深我对它们的了解,也是对Java本身这一个计算机语言的初步了解。

1.作业过程总结

①、三次作业之间的知识迭代关系

(其中“     ”是指在作业中都有涉及前一次的作业知识)

三次作业的难度是由简单到困难。第一次作业是对与Java中基本语法的操作,如何用Scanner进行输入以及System的输出,在本次作业中主要是运用Java中的条件语句(if...else)等;第二次作业中是在第一次作业中Java的基础操作上要求我们对自定义函数的使用,其中有boolean函数、String函数以及一维数组的操作;而第三次作业所所涉及的知识点是在第一、二次作业的基础上对于Java对象和类的一个操作,其中有对于getter和setter的使用,并且要求类的属性和方法的可见性以及Java中聚合的操作。

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

我们从这三次作业来看:第一次作业是对于Java中一些基本的语言、语句、输入、输出等一些操作的运用,就是一些完成题目要求的方法过程;而第二次作业中,可以看到增加了一些方法的运用,也就是增加对于自定义函数的理解和运用,但是这些函数都是在Main类中进行操作的一些方法,这是过程;第三次作业的要求可以通过第二次作业部分代码实现,它们的题目几本相似,但是增加了对于对象和类的理解,通过题目,我们可以看出来第二题到第四题的难度在增加,我们需要通过UML类图的写出相应的类(DateUtil、Year、Month、Day),并完成一些列操作以及类与类之间的方法调用,而第三到第四题更能体现出来面向对象。所以可以看出来这三次作业是从面向过程到面向对象的一个过渡,从而更加了解它们。

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

在第一作业之中:刚开始做作业的时候,对于Java并没有深入的了解,所以问了同学才知道如何用Scanner如何输入,其他的是第一题中的计算问题,以及第四题的判断三角形类型的问题,考虑不太全面,所以将判断的三角形的顺序调整了一下,按照直角三角形(等腰直角三角形、直角三角形)、等边三角形、等腰三角形以及普通的顺序判断。

在第二次作业之中:在第一题中,没有考虑到运算符的优先级,后将“x1=((-a[1]+Math.sqrt(Math.pow(a[1], 2)-4*a[0]*a[2]))/2*a[0]);”改为“x1=((-a[1]+Math.sqrt(Math.pow(a[1], 2)-4*a[0]*a[2]))/(2*a[0]));”;在第四题中求n天后的情况时,在(day!=31)和(day!=30)以及(day!=29)、(day!=28)考虑的不足,输出的结果对应不上;将对应的条件加上(如(day==21&&n==(-10)||day==22&&n<=(-9)||day==23&&n<=(-8)||day==24&&n<=(-7)||day==25&&n<=(-6)||day==26&&n<=(-5)||day==27&&n<=(-4)||day==29&&n<=(-3))加上)。

在第三次作业之中:第二题中的后n天日期的计算中;开始利用数组,结果运行超时;后就用了普通的循环以及if…else 语句解决问题。对于运行超时,我通过书上的资料知道了,对于日期时间数字可以使用long。第三题中也是后n天的计算出现问题,按照新的方法重新写了一些这个函数就好。第四题与第三题相似。

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

第一次作业:第二次作业:第三次作业=2:5:12(天数)。

⑤、对编程过程的严谨性的认识及教训

首先,不要看到题目就开始打代码,一定要提前想好如果去写,了解主要的框架;其次就是在编译的时候出的一些小问题,这个一定要严谨,例如第三次作业中第二题,一定要联系主函数去做;然后,就是要审题,看清楚题目中的要求,例如第三次作业第二题,我就没有自己阅读题目,以至于将他要求的函数写在了DateUtil类的外面,导致编译错误,其实题中都有此要求,并且考虑好特殊情况,例如在计算日期这样的问题时要考虑闰年的情况,以及是否超出范围和运行超时;最后还是严谨,例如在第二次作业第一题中,计算性错误;第二次作业中,在eclipse中有year++;但是在PTA中就将year++;拉下了,以至于找了好久,浪费了大量的时间。

2.OO设计心得

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

通过三次作业来看,可以看出来面向过程就是对于一个题目中方法的解决,例如,在第二次作业中日期类里面实现各种功能的函数所用的方法,每一个方法就是相当于一个过程,这就是面向过程);而面向对象就是将所有的方法都放在一个对象之中,这就是面向对象。

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

将一切实现功能的方法除外,主要考虑题目中的对象设计,就像课堂上我们讨论“农夫过河”的问题中,老师说过,将问题先简单化,先不要太细致的思考里面如何实现。

③、OO编程思维的理解

Java是面向对象的过程,我们不能从面向过程中出发,将问题分为不同的对象组成,再考虑实现功能的过程。

3.测试的理解与实践

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

测试对于一个代码运行成功是真的很真要,这对于以后你写代码以及代码实现便捷有很大的用处,我之前为了实现一个代码运行成功,将其中的方法一个一个进行测试,特殊情况一个一个输入。

②、假如让你设计测试用例,你会如何做

我会设计三种测试点,分别是普通情况是否可以实现;其次是特殊情况是否实现;最后是边界值的测试是否实现。

4.课程收获

通过这四周的学习,教训多,收获也多。收获:我对于Java有了一定的了解,学会了如何使用它去实现一些功能;对于面向对象和面向过程有了一定的了解,多少知道它们之间的区分与联系,从而加深了对于面向对象的认识。教训:主要还是要细心一些,将基础知识把握住,因为不细心,在修改代码上浪费了好长时间。

5.对课程的建议

希望老师可以讲一下PTA的题目,有一些方法的实现还是不理解,有些错误点也不太理解。

6.之后一阶段的学习计划

加强对于基础的巩固,然后多看看网上资料,跟着老师的网课进度,努力完成老师的任务。

 

posted @ 2020-04-04 17:17  Bk2  阅读(143)  评论(0)    收藏  举报