首页 > 技术文章 > java面向对象第一阶段作业总结

jhmxiaoan 2020-04-04 17:10 原文

0.前言:

     本次博客主要是针对Java面向对象第一阶段的作业总结与反思,主要以PTA上的练习和课堂作业为主,进行总结。
 
 
1.作业过程总结 

     本次总结针对的是三pta作业。
 
     ①总结三次作业之间的知识迭代关系:
     第一次作业主要是进行选择,循环功能的考察,所要实现的功能数量少且较简单,让我们对Java的学习有了一个初步认识,不过还是用的以前C语言的思维。第二次作业主要学习了数组、Boolean类型和多个类的使用,第三次作业在第二次作业的基础上增加了私有属性该类的构造方法、属性的getter及setter方法的相应方法调用,以及多个类聚合关系的使用,让我们慢慢开始以面向对象的思维解题。
 
     ②如何通过作业逐步从面向过程过渡到面向对象:
     从第一次作业单一函数的设计到第二次作业main类里方法的调用,再到第三次作业多个类的关系和使用,让我们的思维方式逐渐从面向过程到面向对象转变。
 
     ③作业过程中遇到的问题及解决方法:
     第一次作业的计算税率问题虽说只是数字计算问题,但我却因个别数字的输入错误而花了很多时间,判断三角形类型问题分类方法不当也有出错。第二次作业问题是没碰到,但代码过长。第三次作业在求下n天时整形数最大值的测试中出了问题,多次看代码觉得逻辑没问题,改了多次也还是过不了,就换了一种方式。

 

 

    ④每次作业花费的时间比例
    每次作业都是先想好思路再写,以下说的时间不包括想的时间。第一次作业花了三小时左右,第一次写Java不知所措,一些基本操作还不熟悉;第二次作业花了五小时左右,在求下一天和求前n天,n的正负情况都要考虑这些地方花的时间比较多;第三次作业八个小时,难度较大,尤其是在下n天时整形数最大值的测试中出错卡了很久,后面两题类的使用也较复杂。
 
    ⑤对编程过程的严谨性的认识及教训
    从第一次作业就体会到了编程的严谨性,一个数字的错误可能会让整个程序都停滞不前,每一个测试点都是对你的程序质量的检验,只有时刻都严谨地对待每一个程序,才能避免错误。
 
2.OO设计心得 

    ①面向过程与面向对象的比较
    面向过程是在你拿到问题是就会去想有没有输入,输入的方式是什么和数量是多少,然后接下来要实现的功能是什么,针对实现的功能来一步步设计代码,设计完一个功能的代码继续进行下一个功能的代码的设计,最后是考虑输出的问题。面向过程就只是对于一个问题来进行一步步流程的实现,按照怎样解决当前问题的思路来设计解决办法,对于相似的问题又要重新设计,显得麻烦,不够灵活。

   而面向对象是你对于一个问题,会去看它要实现的有哪些功能类型,这些功能类型之间有一些有一些什么样的联系,怎样去设计会更好的实现这种联系,每个功能是一个类,实现的功能是单一的,在需要多次用到该功能时直接可使用,而不用重复设计。每个功能的实现是单独的,一目了然,从而在main函数里直接调用功能类和方法,main函数里不会过于冗长。如果问题有了其他改动,程序的改动方面相对于面向过程来说是很小且简便的。
 
    如图 1 与图 2 ,类的设计不同,会有不同的效果。
 
         

                          图 1                                                             图 2                                                                                                                                    

 

    ②面向对象设计的基本原则理解
    老师课上讲过单一职责,即每个类实现的功能应该是单一的,使用起来也是很方便的。如果多个功能堆放在一个类里,在不同的需求情况下就不好调用了。
 
3.测试的理解与实践

    ①测试对于编码质量的重要性
    测试是对于一个程序的功能能否成功实现的检验,不只是功能能否实现,还有运行是否超时,答案符不符合要求等检验,使算法得到改进,使程序能达到比较好的程度。所以测试对于一个程序来说是非常必要的。
 
    ②假如让你设计测试用例,你会如何做
    如果让我来设计测试用例,首先肯定是正常样例,再是特殊样例,最好是多设几个,避免偶然性。
 
4.课程收获

    总结这四周来在OO方面的教训及收获
 
   (1)在第一次作业中,一个数字的错误导致整个程序有错,在纠错的过程中是很难被发现的,花的时间多不说,能够被找出来是最好的了。在类型相似时分情况讨论是要很准确的,否则容易出错。在第三次作业中,私有属性的设置,使用它们时与public时的情况是不一样的,类与类之间的关系和使用都要注意。

   (2)在第三次作业求下n天时整形数最大值的测试中出了问题后,我问了很多同学,也问了他们的思路,发现他们的思路更清晰,要分类讨论的情况也更少,相对我的一种情况一种情况来讨论简单的多,一二十行代码搞定的事我却用了五六十行,得不偿失。在这一阶段的学习中,学会了UML图的使用和画法,初步接触了正则表达式的应用。
 
5.对课程的建议

    课上老师举了一个农夫过河的问题,让同学们画出自己的类结构,同学们各自发表看法,我也看到了,原来对于一个问题的想法有这么多,各不相同。我觉得这种方式很好,交换想法,互相学习,受益很多。
 
6.之后一阶段的学习计划

   (1)上课跟着老师的节奏,多操作,多实践。

   (2)多看一些Java的资料及程序实例,从中多学习。
 
    我希望对于今后的学习,渐渐摆脱面向过程的思维,学会用面向对象的思想去分析问题,解决问题。
 
 

 

推荐阅读