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

1.前言
这篇博客主要总结pta前三次作业并谈一谈oo设计心得与课程收获
2.作业过程总结
第一次作业主要运用了输入语句以及if判断语句,大部分功能靠Scanner输入数据后根据if()语句判断然后执行相应的程序,得到结果并用println()输出结果。
第二次作业首次引入方法,java中的方法与C语言中的函数相似,程序主体由一个主方法与若干个子方法组成。通过主方法调用子方法以及子方法间的相互调用实现程序功能。
同时第二次作业加入了数组的相关知识及相关运用。
第三次作业与第二次作业程序的功能大体相同,但是格外强调类的利用。这次我们按照作业要求设计了一个日期类。
前两次作业主要体现的是面向过程对象,第三次作业利用与第二次作业近乎相同的题设条件,但是强调我们设计一个日期类,通过类中方法的调用实现程序功能。使程序设计思想更加直观,这体现了面向对象设计。
第一次作业遇到的问题,判断输入的数据是否为整型数,如果是则输入,否则不输入。经过百度学会如下方法。
Scanner in=new Scanner(System.in);
if(in.hasNextInt())
  int a=in.nextInt();
第二次作业遇到的问题,判断一个日期的合法性,如果合法则继续运行程序,否则输出语句“Wrong Format”。以及求该日期的前后n天对应的日期。当时第一想法是根据是否为闰年分为两种情况,然后利用if语句分别遍历12个月12种情况。但是这样太复杂了,后面想到创建两个数组,每个数组包含12个元素,分别对应闰年与平年12个月的天数。这样使判断以及计算过程更具有一般性,使代码简洁了很多。
第三次作业遇到的问题,由于第三次作业与第二次题设要求大体相同,所以第三次作业对我而言主要的难点是理解类的利用。于是我上网查阅了大量资料,渐渐理解了第三次与第二次两种解题思维的差异。这也正是面向过程设计与面向对象设计的差异。
三次作业花费时间比例约为1:3:3
相较于C语言,java定义一个变量必须要对变量进行初始化。
3.OO设计心得
面对过程设计强调过程实现的先后顺序,一个程序功能的实现分为各个步骤,由主函数为程序入口,之后每个步骤依次调用相应的子函数,最终完成。
面向对象设计强调先抽象出对象,然后将一些能实现相关功能的方法放入。这个设计方法以类为基础,通过调用相关类中相关的函数实现程序。
oo编程思想即面向对象编程思想,我认为这与面向过程编程有着巨大差距,我觉得按之前C语言老师说法,面向对象编程具有高聚合,低耦合的特点。也就是每个类之间相关性不会很高,这就使的程序的调试与维护会更加方便,程序出了问题,可以直接在相关类里对方法进行修改,不会影响到其他类。每个类作为一个独立的个体,集合着所有与之相关的方法。而且,如果有一天出现了与某一个类相关的新需求,也以直接在这个类中添加对应的新方法,对该新方法的调试等过程不会干扰到其他类。
4.测试的理解与实践
测试是代码完成过程中的重要一环,测试可以帮助我们验证代码是否可行。同时测试可以帮助我们查找代码存在的漏洞。测试面越广,我们能找到的潜在漏洞就会越多,最终代码质量就会越高。
假如让我设计测试用例,我会根据用户实际使用情况,设置实际可能出现的错误输入,比如无效值输入,范围错误的输入,类型错误输入等情况,最广泛地检查代码存在的漏洞。
5.课程收获
这四周时间,我对java的有了初步理解,java与之前所学的C语言有很多相似之处,比如if判断语句,for循环结构,数组等知识的实际运用。同样地,两者差距也十分显著,java是一门面向对象的编程语言,C语言则是一门面向过程的编程语言。java以类为基础单元,C语言以函数为基础单元。我觉得java的优势在于程序有序,以类为单元便于调试。
6.对课程的建议
这段时间对java的学习主要通过mooc以及罗老师的直播课,然后通过pta习题巩固加深对java的理解。我觉得pta的习题实践对我学习java真的有很大的帮助,但是有一个问题就是,pta的测试点描述的不是很清晰。比如第三次作业的“整型数最大值测试”这一个测试点我错了,但我实在很难发现代码哪个环节出现了问题,而且这个整型数最大值我也不知道是指程序中哪一个地方的值。希望之后新发布的作业中,可以将测试点清晰的描述出来,之前C语言实验,老师是会把测试点给我们看到的。这对我们当时调试程序起到了很大的帮助。
posted @ 2020-04-04 20:41  Tanst  阅读(143)  评论(0)    收藏  举报