第一阶段总结博客

------------恢复内容开始------------

前言:

第一次作业的编程是对Java语言的熟悉,基本的输入和输出,程序也是用C语言写过的。还没有面对对象程序设计的特色。但是第一题有不明原因的错误,多次检查数据仍然无果。

第二次作业是对Java方法的使用练习,Java方法使用基本与C语言函数使用相同,写代码过程中的问题都已经解决。

第三次作业是对Java类的使用,这里开始与C语言有很大的区别,写代码中出现的问题也更多。虽然提交显示了答案正确,但是pta对程序的测试点只是判断结果。程序其实还有很多都没有符合题目的关于类的要求,遗留问题较大。

1.作业过程总结:

①:三次作业的知识层层递进,第一次作业侧重Java的输入输出语句,是从C语言引入Java的一个过度,主要是对语法的练习,还有了解Java编程在输入输出和数据结构上与C语言的区别。第二次作业是在第一次作业了解Java的基本语句的基础上对Java中方法的使用,方法是的使用与C语言函数使用方法相近,一样是讲究模块化的设计。可以说也是在C语言的基础上引入Java的一个过度。第三次作业涵盖了前两次作业的知识点,类的使用需要Java基本语句和Java方法的使用,是前两次作业的知识的综合运用。

②:在第一次作业编程过程中,会用到很多的引用变量,比如数组和输入数据的Scanner类,这些引用变量都需要声明类的对象。第三次作业则需按照题目要求自己编写类,类的使用需要通过对象的引用。逐步理解面对对象编程的优势,从而自发的使用面向对象编程。尤其是第三次作业,后面三题需要输出的结果都是一样的,但是题目的要求一步步引导我们去使用类去定义时间(年类包含着月,月包含日),而每一个时间点就是时间类的对象。体现着面向对象编程的条理优势。

③:第一次作业碰到如何输出保留小数问题,通过csdn搜索得知Java默认保留一位小数,并可以通过String.format()的方法控制输出格式。第二次作业有输出格式的问题 :通过System.out.printf()来控制输出格式和通过System.out.print(String.format())控制输出格式在格式上有不同,pta不认可第一种方式,无法通过。还有求前N天的一题,一开始用区分每一个月来实现月的跨越时代码太过于繁复,冗长,代码长度超限。而且在N值超过一个月的天数时代码就无法实现求N天前的日期,后来在csdn上看到可以通过循环的方式一天一天的把N加在日期上来解决这个问题。而且这个算法可以在第三次作业求两个日期间隔天数时使用。

第三次作业有一些类在定义时的问题,比如构造方法不能设置返回值,静态方法中不能有this.和非静态方法的问题,都通过看书和看csdn上的博客解决。题目中有类通过接口访问另一个类的的方法的操作,比如通过date.getDay().getMonth().getYear().getValue()依次访问Day,Month,Year类中的方法,由于做题时没有弄懂这方面知识,所提交代码虽然输出结果一样,但是并没有符合题目要求。除此之外,类中的静态成员变量是在定义这个类的对象之前就已经定义的,无法通过不同的对象引用多次同一个静态变量。本人第一次在使用类时为了方便,把类中成员变量都定义为了静态,导致定义的不同对象在同一个静态变量上多次改变数据,无法得到正确答案。后通过调试逐步观察数据变化时发现这个问题。

④:第一次作业第一题因为数据较多花费时间较多,后面几题基本在十分钟以内完成。第二次作业因为一开始用区分每一个月的算法来实现跨越月,写代码和检查数据然后代码长度超限后修改算法过程花费大量时间。第三次作业在解决遇到的问题时看书和看csdn博客也花费大量时间。第一次作业花费时间将近总花费时间百分之十,第二次百分之三十,第三次百分之六十,总时间花费大约二十个小时。

⑤:编程过程中每一个数据和时间方面的算法(区分闰年与非闰年,不同月有不同的天数)都需要清晰的逻辑实现,否则就无法达到预期的目的。如果逻辑混乱或者算法太过复杂,就很容易出错,且在调试和修改时需要花费大量时间,写代码输出效率极低。

2.OO设计心得

在没有实例化的对象,只要求实现某一种功能或多种功能时,只需要设计算法,注重过程实现,则使用面向过程编程会更加的简便且易于理解。但是在有实例的对象时,或者对象之间有多种聚合的关系时,则使用面向对象编程会更加易于描述对象的功能与操作,更易于理解对象之间的关系。且通过对类的封装,让一个类易于搬运并在其他的包中使用。

3.测试的理解与实践

测试是代码在使用之前的必要阶段,可以检查出代码的漏洞,防止在代码的使用过程中产生不必要的麻烦,使代码普遍可用。测试也可以判断在写代码时算法的严谨性,防止出现逻辑错误,只有经过测试后合格的代码才是高质量的代码。测试实例应该要设置在一些特殊的节点上,在逻辑上易于出错的节点设置测试点,在普通的输出上不必设置太多测试点。

4.课程收获

教训:在写代码的过程中,逻辑要严谨,思路要清晰,否则极易出现逻辑上的错误。对于编程的基础知识要牢牢掌握,否则在出现错误时很难发现错在哪,花费大量的时间,效率极低。

收获:了解了面向对象设计的优势以及基本方法。

5.对课程的建议

在设计作业题目时可以多加入一些可实例化的类的设计,让我们在编程的应用上有更好的理解。老师在讲课时也可以多进行写代码的示范,对于我们写代码的规范与思路我觉得都会有促进。

 

------------恢复内容结束------------

posted @ 2020-04-04 16:51  朝夕相伴  阅读(68)  评论(0)    收藏  举报