0.前言

  此次作业周期主要是针对日期的一些常见问题进行面对对象设计,同时也包含了利用JAVA中的基本知识进行相关的基本初等运算求解“计算税率”、“判断坐标点所在范围”、“求一元二次方程”,和利用JAVA中的循环和判断语句求解“判断三角形类型”、“电话键盘字母数字转换”等常见问题。

1.作业过程总结

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

  第一周的作业作为本次JAVA课程的第一次的作业,所以题目考察的更多的是面向过程的思想,但这也因此给我们的思维从面向过程逐步向面向对象改变做出铺垫,给了我们适应一门新的编程语言更多的缓冲时间。第一周的作业中主要是考察一些JAVA的基本输入输出和初等运算,同时考察简单的for循环,while循环,if判断语句和switch语句的使用。让我们在进行问题的回答与思考中逐步从c语言的编程思维转变为JAVA的编程思维。

作业的基础上引进了关于日期类型的问题,使得第二周作业的难度相比第一周的作业难度有所提升。但这种由易到难的作业设置也更加有利于逐步提升我们的JAVA编程能力。除此之外,第一周作业中的“求解一元二次方程”问题与第二周的作业中的“用类解一元二次方程”在主体编程思路大致相等之下,凸显出了两次作业之间的知识迭代关系,并且开始涉及到JAVA中尤为重要的“类”的思想。

DateUtil类,并编写相关日期问题的求解方法。第三题参照第二题的基本题目要求,但是设计出DateUtil 、Year 、Month 、Day四个类,每个类之间有一定的聚合关系。

java项目工期是如何规划的 java项目周期_解决方法

第四题是和第三题一样的题目要求,同时也是设计出了DateUtil 、Year 、Month 、Day四个类,但是第四题的的四个类之间的关联联系又和第三题有所不同,其中Year 、Month 、Day三个类依附于DateUtil类之下,相比第三题之间的联系更加紧密。第三周的三次作业之间的知识迭代关系也强调出了类设计的重要性。

java项目工期是如何规划的 java项目周期_解决方法_02

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

  在第一周的作业中由于是第一次接触JAVA编程,所以在写题目的时候更多的是按照面对过程的思维进行相关的问题的代码编写。因为第一次JAVA作业还没没有对类的问题进行考察,所以这种面对过程的思维也能成功编译。然而在接下来的几周作业中,题目逐渐开始要求要有对类的设计。虽然在开始进行类的设计和对象的构造的过程中受到面对过程的思维的影响,导致在作业的代码编译上出现了许多的编译错误。但是在逐步的作业代码修改和老师讲解之下,我开始慢慢初步了解类和对象的有关概念,也在后面的的作业中慢慢学会通过创建对象去调用类中的成员属性和成员方法,并且开始初步理解面对对象的编程思维。

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

第一周作业:

1.在计算税率时,要根据应纳税收入在不同的区间内的不同税率分层计算,同时要仔细核对区间范围和各个区间的税率大小。

2.在控制输入输出时,没有注意题目所给的输出样例而导致因为一些空格和格式化输出而出现pta测试点显示答案错误。

3.在电话键盘字母数字转换的题目中,对于当输入多个连续字符时,如何取第一个字符出现错误 。

解决方法:查找资料后,利用JAVA中的charAt()方法成功解决这个问题。

4.在判断三角形类型的题目中判断直角三角形和等腰直角三角形的测试点没有通过显示答案错误。

解决方法:查找资料后,发现正常方式的比较会存在一定的误差。于是将判断语句中的三角形的三条边的平方都进行四舍五入的操作在进行是否相等的比较,最后答案显示正确。

第二周作业:

1.在判断输入数据是否合法时只考虑了是否超过取值范围,忽略了平年没有2月29日的特殊情况。

2.在多次的循环嵌套中导致特殊情况的忽略,同时使得代码长度冗长,可读性较差。

3.在解一元二次方程的题目中没有考虑到当a=0时一元二次方程不存在的特殊情况。

解决方法:加上if(a=0)的条件语句

第三周作业:

1.以为求前n天的方法可以照搬第二周的作业中的方法,却忽略了这次作业中的n与上周的n的取值范围有所不同。上周作业中的n范围时-10到10之间,而这次的n的值可以远大于10.显然,代码会有所改变。因此需要重新设计算法。

2.代码运行超时

解决方法:减少了循环的嵌套和循环次数,并且对循环里面的代码进行改进和调试。

3.在日期类设计中的求下n天日期的方法中应该新建一个DateUtil类的对象,才能达到返回值为DateUtil类型。

每次作业花费的时间比例

第一周作业的时间比例大概为3:2:2:3:1

第二周作业的时间比例大概为1:4:3:3

第三周作业的时间比例大概为1:5:3:3

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

在这几次的作业中我认识到JAVA是一门十分严谨的编程语言。在对方法的命名时要遵循驼峰原则,输出格式 也要注意规范和仔细。否则教训是花了大量的时间修改代码时才发现错误只是少了个空格或多了个空格。同时在类的设计上注意对象的创建避免出现空指针的情况。

2.OO设计心得

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

  我认为面对过程是将一个问题的解决过程和步骤不断细化和完善以达到解决问题的目的。而面对对象是将问题抽象为一个类再将这个类具象化为对象,并从对象的角度出发研究问题的解决方案。

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

  面对对象设计的基本原则有单一原则。意思是在一个类中就只执行一个功能,当想执行另一个功能的时候应该重新设计另外一个类。

OO编程思维的理解

  我的理解是OO编程思维强调类和对象,我们首先应该把类的设计完善,再进行对象的构建。同时确定好类与类之间的联系,避免出现关系混乱。

3.测试的理解与实践

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

  测试是代码编写的必不可少的步骤之一。当代码长度较大功能较多的时候,就需要测试这次代码的功能实现状况和代码运行情况,测试是否出现bug或其他的相关问题。当缺少测试,代码的安全性和正确性就会大大降低。

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

  我会设置正常值和特殊值的测试点对代码进行测试,同时也会对每个临界值的情况和代码长度进行测试。

4.课程收获

  在这次的作业周期下明白了算法精简的重要性,并且在上学期的学习基础上自己的编程能力也有所提高。同时在作业的思考与练习下,了解了面对对象中的类和对象的有关基础知识,锻炼了自己思考问题的严谨性,培养了基本的面对对象的思维。

5.对课程的建议

  可以回顾并讲解上节课的课堂作业,并且能够对重要知识点多讲几个例子。在下课的时候还可以把这节课重要的知识点的代码发送到群聊里面。