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

对PTA中前三次Java作业的总结

 

  1. 前言

 

    从第一次作业到第三次作业,我认为题目难度是逐步增加的。而且每题的测试点都有20个,这就意味着我们必须细心,考虑所有的情况。并且慢慢的从面向过程中把全部东西都写到一个main函数到面向对象中分多个类进行实现。下面就是我对这三次作业的具体总结。

 

       2.作业过程总结

 

①总结三次作业之间的知识迭代关系:

 

1)第一次作业比较简单都是一些基础知识,就运用到一些if-else句子,for循环等等,还是面向过程的方法,都把所有的代码写到一个main函数里面。

2)第二次作业也是只有一个main类,但是还需要我们在main类里用到其他的方法,这有点像原来c语言的函数一样。

3)第三次作业就不只是简单的把代码都写在一个main类里了,而是分成了多个类。从第二题开始设计一个dateUtil类到第三第四题设计dateUtil类、Day类、Month类、Year类来一步步实现功能。

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

 

从一开始所有东西都写到一个主函数里——>设计多个类来完成,用类制造对象。

 

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

 

1) 第一次作业中,*第三题有个等腰直角三角形那个点一直过不了,后来去寻找解决方法,发现是浮点数误差的问题,于是我将a*a+b*b-c*c == 0改为了a*a+b*b-c*c<1e-6,终于成功通过测试点。

                                                                     

 

 

这里也附上我查阅时的资料:https://blog.csdn.net/code_dream_wq/article/details/74451478

*还有就是第四题中,有一个测试点总是过不去,经过我一遍遍的测试、调试最终发现有一个特殊值没考虑到,就是当我第一个数字输入0时的结果我没考虑到,改好后顺利通过测试点。

2)第二次作业中,并没有遇到什么棘手的问题,唯一有一些要注意的就是第二题(判断闰年及星期几),第三题(求下一天),第四题(求前N天)中会有很多特殊值要注意,由于写完后第一次提交时总有一些没考虑到,导致一直要改,从这边也体现出了测试对于编码质量的重要性。

3)第三次作业中,主要就是第二题中这种public DateUtil getNextNDays(int n);返回类型为类名的不知道该返回什么,在思考后联想到老师上课时说的Dog类和Bird类,就立马想到了return new dateUtil(year,month,day);顺利的解决了问题。

 

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

 

       最近三次作业,前俩次作业当天中午布置,然后当天晚上就能全部解决。第三次作业虽然也只有四个题目,但是后三个题目中类所需实现的方法过多,第二题是用main类和dateUtil类完成,第三第四题在第二题的基础上进行不同的聚合改动,同时也增加了Day、Month、Year类来完成,导致花费时间多,直到布置作业后第二天晚上才实际全部写完。

       总的来说,第一、二次作业用了几个小时就搞定了,而第三次作业用了1天多时间搞定。

 

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

 

       像第一次作业有些很简单的题目,但是由于疏忽,以为很简单就快速写完直接交了,导致没有将代码考虑周全,第二次作业关于时间那几题也是都没考虑周全,还有就是在eclipse上写的时候不是用public class Main而是用其他类名导致pta上编译错误。

 

        3. OO设计心得

 

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

 

       *面向过程像我们上学期学的“C语言”更强调的是方法的动作,变量是被动的参与。分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现;

*面向对象把问题要求的不同功能分开来解决,让它们能够各自独立地实现功能。而且在面向对象中,当某一个需求改变时通常不会导致原本其他功能发生改变,而面向过程就没有“单一职责”,导致改一个需求,其他很多东西也要跟着改变。

 

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

 

       我的理解1)单一职责:我认为单一职责目的是为了代码能够最大可能的重复使用。不会改一些需求导致所有东西都要发生改变。2)开放封闭原则:就像老师说的封装,你设计的时候,时刻要考虑,尽量让这个类是足够好,写好了就不要去修改了。3)继承原则:子类可以继承父亲中所有的属性和方法,除了父亲私有的外。

(Ps:我暂时理解比较深的就是上面三个原则了!)

 

③OO编程思维的理解

 

     我的理解是:面向对象编程是把问题要求的不同功能分开来解决,让它们能够各自独立地实现功能。方法是属于每个对象的,能否实现是由每个对象说了算的。

 

      4. 测试的理解与实践

 

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

 

       如果没有进行测试,就会有很多错误不知道在哪里,到pta提交时也会报出来很多错误,通过测试可以更好的检查代码是否完整,知道哪里有不足或者没有考虑到的地方,能很大的提升自己的编码质量。

 

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

 

    我会就题目来测试一些极端值,常规值和特殊值,来看是否得出预期(正确)的答案,以此来提高正确性,提高编码质量。

 

      5. 课程收获

 

    在这几周的学习中的学习中,我也学习到了许多知识就像Java基础知识、运用正则表达式、链表、junit、掌握string类和arrays类中自带方法、继承,也了解了封装和单一原则的概念。现在每次写代码也都会用面向对象思想来思考问题而非面向过程。也懂得了做任何题时候无论简单还是困难都要细心,不能马虎,每次写完要多检查以此来提高编码质量。

 

      6. 对课程的建议

 

    由于每次程序课后都有其他课,我建议每节课的课后作业希望能留更多的时间,比如:第二天早上前交,在下节课也对上次作业进行稍微讲解;也在每周pta作业结束后,上课时对此稍微讲解点评下以便于我们能更好的理解。

 

      7.之后一阶段的学习计划:

 

    提前把后面学习要学的内容先进行自学,同时也要多和同学交流,看看别人解题思路是怎么样的,如果有好的思路,要多学习。

posted @ 2020-04-04 15:21  Heartbeat233  阅读(147)  评论(3)    收藏  举报