对近期JAVA学习的一些总结

A.首先是对近期做作业过程的总结

  1.三次作业之间的知识迭代关系:第一次作业主要是对java基础知识的运用和练习,主要运用的思想还是面向过程;第二次作业开始涉及到了java中函数的定义和使用、布尔类型的定义和使用,以及熟悉对java运算符的使用;第三次作业开始涉及到面向对象的思想,用类来分类各种操作和对象。

  2.如何通过作业逐步从面向过程过渡到面向对象:通过自己在中国mooc和课堂的学习,逐步对面向对象的思想有了一定的了解,但这种思想仍然没有特别巩固,在分析问题的时候还是容易套用之前学习C语言时面向过程的思想,不过通过作业的练习还有课堂练习,正在把自己面向对象的思想巩固与加强。

 

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

在第一次作业中,第一题是对个人所得税的计算,主要练习的是java的输入输出以及if,else语句、运算符的使用,在写这道题的过程中最主要的还是细心的列好公式,因为数据量比较多所以只要有一个地方出错符号或数字都有可能导致结果出错;

第二题练习浮点数的定义和输入输出;第四题是判断三角形的类型,我的思考方向是先把边a、b、c按长度大小排序,再进入对取值范围的判断以及边的是否相等、是否满足精度内的勾股定理来分类出不同的三角形;第五题是输入一串整数然后输出最大数和出现的次数,练习了java数组的定义和使用;

在第二次作业中,第一题用强制类型转换解决了输入为double类型而输出为float类型的问题;

第二题练习了布尔类型函数的使用,即判断输入的日期是否为闰年并返回true或false,其中,在解决所输入日期是星期几时考虑了使用数组来分别存储闰年和非闰年每个月累加后的天数来求得所输入的日期距离公元0001年1月1日的天数,最后再模7用余数来判断是星期几;

 

 第三题则专门写了一个函数来判断日期的输入格式是否正确,在求下一天时也花时间思考了要考虑先判断是否为闰年、是否是月份的最后一天、是否是一年的最后一天等因素;第四题思考得比较久,主要在考虑计算前n天、后n天的算法,最后按30天的月份、31天的月份、2月份、1月份、12月份进行分类再判断后求出;第三次作业是一个全新的体验,题目提供了main函数,需要我们用自己搭建的类来满足main函数和题目的要求,思想开始由面向过程到面向对象转变,第一题是用类解一元二次方程,在QuadraticEquation类中有获取a、b、c的方法,还有判断是否有根、计算根的值的方法;第二题是日期类的设计,包括:检测输入的年、月、日是否合法、判断year是否为闰年、取得year-month-day的下n天日期、取得year-month-day的前n天日期、比较当前日期与date的大小(先后)、判断两个日期是否相等、求当前日期与date之间相差的天数、以“year-month-day”格式返回日期值,等功能。最开始用了400多行代码实现了功能,但是长度太长没有达到要求于是优化了取得前n天、后n天等算法,运用了数组的方法灵活的存储了闰年和非闰年每个月的天数,再用while语句判断day-n的关系再进入if...else语句判断最后利用数组计算出日期,还有一个是对求当前日期与另一个日期相差的天数,一开始想进行了特别复杂的if、else的判断最后优化的时候想到了上一次作业求总天数的方法,即分别求出总天数再相减即可得到正确答案,整体由400多行优化到了200多行。

 

  4.每次作业花费的时间比例:大概是1:2:6

 

  5.对编程过程的严谨性的认识及教训:在写作业的过程中经常会出现命名的操作,有时候变量为了方便就直接用了a、b、c等简单的符号,最后变量一多会有点分不清楚这个变量是表达的什么,这就导致了要经常翻看之前的代码导致效率下降,最后还是觉得不能偷懒,并且为了程序的可读性还是应该按照功能的名称或者变量本身所表达的意思来进行命名。

 

 

B.OO设计心得

1.面向过程与面向对象的比较:面向过程注重于问题的解决,即先把大概解决问题的思路想出来,然后在通过不同的功能调用来实现,而面向对象需要我们进行对问题对象的分类分析,不同的对象含有不同的特征和不同的功能。

 

2. 面向对象设计的基本原则理解:基本要素有封装、继承、多态;设计原则有一个类只做好一件事,可复用性等。

 

3. OO编程思维的理解:老师上课有讲过面向对象的基本特征有抽象、封装、继承、多态,还有程序的可拓展性、可修改性和可替换性,但是在自己实际的操作中,大部分时间仍会注重在如何解决问题,即还是面向过程的思想,不过经过最近几次作业和课堂练习,逐步的对面向对象的思想有了一定的认识和了解,今后思考问题也会尽量的使用这种思想。

 

C.测试的理解与实践

1. 测试对于编码质量的重要性:测试的重要性不仅仅体现在程序结果是否正确,而更是当输入极端数据时程序能否给出良好的反馈或者提示,而使得整个程序更加的完整和实用,例如在这几次JAVA作业中与C语言有很大不同的就是要花一定的时间去考虑wrong format 的情况

 

2.首先测试一定的正常数据来判断基础功能是否实现,其次在用一些极端的数据例如int的最大值等,最后再测试数据的特殊值或者边缘值是否达到要求。

 

D.课程收获

经过这四周的JAVA编程学习,有不足也有收获,其中,收获较大的是面向对象编程的思想以及不同功能的实现、eclipse的使用等等,不足则主要体现在代码的精简度还需要提高,面向对象的思想还需要巩固,在接下来的学习中还应当多多练习。

 

E. 对课程的建议

老师可以在课堂上多做一些演示和举例,让我们能更加清楚了了解整个编程的思想和编程的步骤。

posted @ 2020-04-05 14:26  LUCAS_QTFY  阅读(233)  评论(0)    收藏  举报