南昌航空大学-软件学院-19201410-胡志桢--OO第一单元(前四周)作业总结

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

    作者:NCHU-19201410-胡志桢

## 0.前言

   首先针对PTA平台上发布的前三次JAVA-OO作业做出总结,第一次作业的得分情况是94分,第二次作业的得分情况是100分,第三次作业的得分情况是84分。总的来说,有很多需要改善的地方,例如:第一次作业还有两个测试点没有通过,第三次作业对日期类的设计还有很多没有完善的地方,导致得分情况不太理想。

## 1.作业过程总结

  ①作业知识迭代关系:逻辑语句、数据类型->包、方法->类、对象

  1. 第一次作业主要是一些基本逻辑语句和数据类型以及JAVA程序的输入输出的知识,相较C语言来说大部分语法都是一样的,而JAVA程序的输入参数和输出结果要运用到一些新的东西,算是初步入门JAVA编程,但是暂时没有涉及到OO的知识。
  2. 第二次作业涉及到方法的调用和数学计算法则的引用,JAVA方法类似于C语言中的函数,而在C语言中数学计算法则用到了#include<math.h>的头文件,JAVA则是在使用的地方添加math.xx的数据包。
  3. 第三次作业涉及到类的设计和私有变量的使用,数据对象类比较像C语言中的结构体,此时OO的概念和好处渐渐体现出来。

 

②从OP到OO:

前两次作业思想基本还停留在C语言OP的思想中,没有具体体会到面向对象便捷的地方,做起题目来基本还是用C语言设计的思想完成。从第三次作业开始,伴随着数据对象类的使用,OO“一次运行,随处可用“的好处体现了出来,比如日期类变量的设计,变量设计一次后,就可以在整个JAVA文件里使用,效率非常的高,相较于C语言里的用指针指向结构体成员变量而言更加的方便。过渡的过程主要还是通过将OO思想与C语言中的指针,数据对象类与C语言中的结构体变量的成员对比,使得从OP到OO思想上转型变得易于理解。

③作业过程中遇到的问题:

第一次作业中的”税率“和”判断三角形“问题中,PTA平台未能对相应的测试点进行信息反馈,使得我难以找到问题具体出在哪里,调试起来也异常的痛苦,只能对可能出现的问题一次次进行调试,把测试点尽可能的多答对一点,但依然有两个测试点没有找到。第二次作业问题不是很大,测试点都予以相关的信息反馈,调试起来比较轻松,所以得了满分。第三次作业内容比较抽象,而且信息量较前两次作业而言大得多,完成情况相较前两次而言很差,但算是初步认识到OO思想,并在实际问题中加以了应用。通过在CSDN论坛上查询关于OO实际应用的实例,我尽可能地将分数提了上去,但拿不到高分,还有很多需要改进的地方。

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

   第一次作业花费了一个周六晚上和周日上午的时间,其中第一题的数据量比较庞大,我花费了大量的时间在处理数据上面,调试也花了很久,其他的题目写起来就比较轻松了。

   第二次作业第一题因为课堂上操作过,花了不到十分钟就完成好了,另外三题设计到日期的问题,因为题目要求不能引用日期类,所以处理的数据量相较第一题要大得多,但三题内的很多方法是可以通用的,例如闰年的判断方法和变量的合法取值范围判断,所以花费的时间相较第一次不算太久,用了一个下午的时间完成了。

  第三次作业需要自行编写成员类,因为前两次作业尚未接触,课上没有理解的那么透彻,我先花费了很多时间在CSDN论坛上学习自定义成员类的使用,直到理解透彻后再进行编写,虽然二、三、四题为同一个题型,但示意图比较抽象,理解起来十分困难,所以完成时间很久,质量也不太高。

⑤对编程过程的逻辑严谨性的认识及教训:

JAVA和c语言编程还是有很大区别的,个人感觉JAVA的逻辑性要求更加严格,有些在C语言内可以实现的写法,在JAVA中就有很大可能会报错,需要编程者考虑的逻辑性更加严谨。我从中了解到Main方法是JAVA文件的首入口也是唯一的一个入口,编写时一定要置顶,否则编译会出很大的问题。

## 2.OO设计心得

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

   面向过程需要设计结构体成员变量并通过指针的方式传送给更改变量数据的地方,而面向对象则可以再编写成员变量类后实现“一次编写,到处运行”的功能,相较OP而言OO更加便捷、实用,而且子类可以通过继承的方式来得到父类信息,并且通过super的方式来获取父类的私有变量数据。面向过程和面向对象的主要分别在于对方法功能的使用不同,面向过程是为了解决一个问题将功能步骤依次使用,而面向对象虽然针对待解问题包含的元素而进行对象的划分,二者的差异还是挺大的。

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

     说实话,因为目前接触到的面向对象设计次数还没有很多,我目前的知识水平还不能很好的理解OO的五大基本原则。

③OO编程思维的理解

    我的理解就是“一次编写,到处运行”,有点类似与C语言中的结构体成员变量。

 ##3.测试的理解与实践

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

我们要反复对数据进行调试,以发现程序的问题。即使能够成功编译,但编译的结果是错误的,写出来的程序也是白搭。

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

一些打着“擦边球”的情况一定要进行测试,一般PTA上的测试点考察就是这些特殊情况。常规情况的测试数量尽可能地减少,并且测试用例尽可能反馈更多信息出来,例如第一次的“税率”反馈信息为零,调试数据的时候特别的麻烦,很难排查出错误。

 

##4.课程收获

        因为当时学习C语言的时候,编程习惯没有养成好,我对模块化编程的思想还停留在函数的模块化编程,直到做C语言课设的时候我才知道项目的编写可以采用多文件操作,当时编写C语言项目的时候是先写好单文件项目再把项目拆分成多文件,修改的时候由于代码很长很乱,调试起来特别的麻烦,心情很烦躁,经常是越改BUG越多。学习这门课程后,我正在尽量往模块化编程的思想上靠近,因为老师上课的时候编程的时候几乎都是采用模块化编程。而在eclipse的使用中模块化编程的思想就更明显了,我经常把package和多文件编程联系在一起,二者的联系使得我对模块化编程有了更深刻的认识,收获还是挺大的。

##5.对课程的建议

      老师的上课效果拉满,特别的幽默风趣,而且会将知识点结合实际代码操作进行讲解,还是挺容易接受的。而且老师课后会经常给我们提供一些有用的学习资料,费了很大的心思让我们尽快适应当前的授课模式。但毕竟网上授课效果有限,讲授的效果肯定没有在学校里的效果好,所以这门课程的重心主要还是靠我们自主学习。

 

posted @ 2020-04-03 16:27  19201410-胡志桢  阅读(200)  评论(0)    收藏  举报