关于JAVA面向对象程序设计总结(阶段1--认识类与对象)

0.前言

         本次博客,主要针对于经历第一个月的Java程序设计的学习之后,进行的相关分析与总结。于该阶段中的作业情况,重点在于使我们的编程观念由面向过程向面向对象转变。

1.作业过程总结

        于第一阶段的学习过程之中,我们进行了3次作业的练习,于作业中,我们可以发现我们现在所学的编程语言的功能,和之前我们所学习的C语言有很大的差异,在Java中,我们添加了类的概念,还添加了对象、属性、构造函数等等我们之前还未接触过的一些层次内容,而这些内容合在一起,则产生了面向对象编程设计的主要思想。

        关于这段时间所写的作业来看,老师设计作业的方式主要是在于每一题做下来的难度在以此叠加,在每一次作业之中,我们不难发现,每两道相邻的题目之间的解题思想也存在着相应的迭代关系,例如我们的第二次作业中所设计的二三四三道题,都是有关日期的查找,但是我们可以发现,每一道题目所展现出来的需求是完全不一样的,而这种迭代式的出题方式,目的在于逐步的培养我们的思维方式,题目中的算法要求并没有特别的多,并且较后几道题的算法类似,所以可见于java的前期学习阶段,我们并不着急先研究算法,而主要是对编程方法,编程思路的熟悉。并且我们从整体上反观这三次作业,我们可以发现作业的主要目的则是让我们把编程的思想观念由面向过程转向面向对象,从题目中我们不难发现,第一二周的作业重点并没有转变到面向对象的思想之中,而是主要在于让我们稍微熟悉Java中的一些常用的方法,而到了第三次作业我们发现,无论是难度上还是编程思想上,我们都感到了及其的不适,我们的作业中加入了类,加入了类图,除了算法基本相似以外都发生了较大的改变,我们的代码量也从之前的70~80行上升到了400行以上,不过在这练习过程之中,我们的代码所能够完成的任务也在依次的增多,我们对面向对象的思想也的确在渐渐的加深,关于类、对象的掌握和运用也在熟悉的过程之中。

       不过于作业之中,我们也同时遇到了很多的问题。以下为问题以及问题分析和解决方案:

(1).关于整型数最大值带入程序中的测试问题:

 

        从图中我们可以看到,图中出现了两处报错,分别是关于两个方法的整型数最大值测试的答案错误,看到这种情形,当时的确没有意识到问题具体出在了那里,当时甚至误以为是自己的输入范围设定出现了问题,后来根据输入整型数最大值之后,发现于Eclipse中运行出来的答案完全不是自己理想中的答案,就发现是我们的整型属性day在加上整型数最大值的时候,本身超过了整型数所可以容纳的范围,以至于Eclipse无法根据这种情况正常运行,所以会运行错误。所以我们在让n在与day属性相加之前先通过年运算,按年相加使得n的值越来越小,这样的方法不但使得就算是整型数最大值的输入也可以通过,还减少了程序的运行时间。

(2).关于运行超时的问题

        因为作业所给的运行时间为10000ms,并且是在PTA网站中的华为云上运行,所以我们在Eclipse中所可以运行出来的程序,在作业的提交平台上并不一定可以在规定时间内运行出来,所以,这就很强调我们的代码质量了。什么是代码质量,这里主要要注意几点:代码的长度,代码的可读性以及代码在运行之中所需要经历的过程是否精炼。我们在运行程序时,应当尽可能的避免让代码经历多次没有必要的循环和没有必要的判断,这样可以尽可能的减少代码在运行过程中所需要运行的内容并且还可以得到应有的结果。在这次的作业之中,也总结到了一个在这方面的小技巧,则是如果存在变量在整个程序之中并没有发生任何变化,或者变化及其的小,我们可以把它以全局的形式于类中声明,例如日期中每个月的天数,我们就可以用全局数组的方式存入。

(3).关于java.lang.NullPointerException的问题

        这个问题是在Eclipse中出现的,在经过调试之后发现是因为在对对象的使用时,因为忘记对其进行空间的申请,而只是在于对对象的引用,导致对象因为无空间存放而无法正常使用。因为该问题比较浅显,在这里就不做过多分析。

 

       在这一阶段的作业中,我每次作业的耗时比从第一次作业的2小时到了第二次作业的四小时最后到了第三次作业的三天,从作业的耗时我们也不难发现作业的难度以及复杂程度在一直上升。并且也总结到了我们在遇到代码出现错误时,千万千万不要一直希望用肉眼可以找到bug在什么位置,代码的结构密集,并且思路已经和闹钟思路达成一致,很难在短时间之中发现自己的问题,这样不仅仅耗时长,还有可能会一直发现不了错误,效率极其低下,并且对敲代码的心态以及热情会有极大的影响,千万注意!!!

2.00设计心得

        在学习面向对象程序设计之后,渐渐的理解到面向对象与之前所学习的面向过程的C语言的确有很大的不同。怎么说呢,我们假如说吧编程比做成是拼装一辆汽车的话,那么面向过程就是从每一个小零件入手,去一个一个零件的拼装这一辆汽车;而面向对象则是好比是先把汽车的每一个部件分别拼装好,在此之后,再对部件进行一次拼装。的确,两种方法都能够得到最终想要的结果——一辆车。但是在Java语言之中,我们可以把所写的类进行保留,这么做的原因则是在于在下一次我们还遇到了类似的工程的时候,我们可以直接运用或者稍作修改我们之前所写好的这个类,这样的话可以提高我们的工作效率,而我们的重心,也可以直接放在类的构造上而不需要过度关注整个程序。

    不过在编程过程中,根据题目也不断的产生思考,Java语言的这种面向对象的编程方式对于计算机来说好像效率并没有那么高,如果但从程序的运行效率的角度上来说,在Java中计算机需要不断的去访问各个类,在从其中调用内容,这整个过程下来一看,貌似想要得到结果,并没有像C语言这种面向过程的编译语言来的快。这可能也就是目前苹果公司还在使用C/C++的原因吧。不过话说回来,Java的确对于程序员来说,的确是一门很便携的语言,因为它拥有可移植性、封装性,这就使得面向对象的程序设计的程序的可读性也会相对高一些,有些程序所能运行出来的结果一目了然,而且在程序员运用的时候也就会更加的方便,对内容的查找和改进都会更加简便。

3.测试的理解与实践

    在我们的作业之中,我们是否能正确的完成一道题的依据就是在于里面的测试点是否能够全部通过。所以在这里我们联想到我们的专业,再联想到我们今后所处的行业,软件开发与设计,换句话来说,无非也是一个服务行业,而这一行业的宗旨,永远都是顾客至上。所以我们在设计程序的过程中,理所应当要满足顾客所产生的需求,这也就是我们为什么要存在测试点的原因,我们要保证我们所开发出来的程序在顾客那里不会出现顾客不满意的地方,我们要通过每一个所能够想到的测试点,以保我们的代码可以尽可能的完美。我们回到我们的这次作业中,我们可以看到假如我们要设计一个这样的日期查询查询,我们就应该需要这些测试点来保证程序的质量。不过对于这个程序,我认为还应该加上一个获取当天时间的测试需求,并且还应该考虑到地域的不同而带来的时差的不同,如果但从作业的题目的设计的所能完成的需求角度来说,我个人还是认为这个点的设计还是非常必要的。

4.课程收获

        在这4周的学习过程中,我掌握了Java语言中的一些基本函数的使用方法,以及将自己的编程思想也在渐渐的从面向过程中转向面向对象,学会了对类的使用以及对对象的使用。最为重要的是在这四周还了解了在职场中编程的一些习惯,这一点更加有利于今后于职场中的适应。当然,在程序设计的过程中也吃了不少亏,目前在代码中因为细节遇到的问题并不算多,但是有一点是极其的重要,就是在调试程序时一定不能只用眼睛去看!!!一定要结合计算机!!!

5.课程建议

        在学习过程中的对内容的学习还是极其满意的,不过希望老师依旧可以向我们传输一些在职场之中的一些编程技巧

posted @ 2020-04-02 20:07  aboutzr  阅读(244)  评论(0)    收藏  举报