经过了四到五周的学习,我对Java有了更深的认识,就作业而言,头两次我做的还不错,自我感觉良好,也许当时还没有涉及到面向对象,而是面向过程,做法和C语言相似,所以产生了java很简单的错觉,每次都留到最后一天来完成,我也因此付出了代价,第三次作业直接不及格,我痛定思痛,分析了一下这三次作业的异同以及我第三次不及格的原因。
第一次作业纯属是面向过程,一个main里面写完所有代码,和C语言无异,我有着较好的C语言基础所以轻轻松松拿了个A。第二次作业要求在类中编写方法,比第一次作业进了一步,但于我而言还是轻松通过。第三次作业更是层层递进,每一题都是跨了一个纪元的感觉,第一题和第二是个引导,让学生熟悉多个类的定义,第三题和第四题给了我们几个设计不一样的UML类图,因为对于OO编程不够熟悉,之间的细节很难把控,导致我编写的带码不断出错,再加上时间不够导致了最终第三次作业的不及格。这三次作业所花的时间比例为1:2:5。第三次耗费了大量的时间,但却达不到想要的成果,究其原因还是因为对OO编程的了解不足,经过这几天的反思,我发现OO编程更为严谨,不但需要考虑边界值,还需要精心设计实用的结构以及确定每个类之间的关系。如果设计的好对后面的编程大有助益,几乎不会出现重复的代码,main方法也会变得更为简洁,但需要花费更多的时间进行分析设计。
面向过程注重的是过程,从头到尾的的编程;面向对象注重的是每个实物的特点,以及多个实物的共同点,将实物抽象化。面向过程的代码执着于一个过程,注重的是过程的简化与运行效率,因此性能比面向对象更高;面向对象注重的是将事物的特点与共同点抽象化,将他们进行封装与继承,每个实物只做自己的分内之事,因此更具有复用性,运用也更加灵活,且每个类都是封闭的,一个类的改动不会影响其他的类,因此安全性比面向过程高,也更利于维护和修改。面向对象有5大基本原则单一职责原则,开放封闭原则,依赖倒转原则,里氏代换原则以及接口隔离原则。目前,这五大基本原则中我所了解的就只有单一职责原则与开放封闭原则,其中印象最深的还是单一职责原则,每个类只能专心做一件事,比如农夫过河游戏中的狼类,羊类和白菜类,狼类就专心做狼的事,羊类专心做羊的事,白菜类就专心做白菜的事,狼,羊和白菜都有存活的属性,所以都有判定存活的方法,然而白菜没有吃的动作,就不要在白菜类中定义像狼类和羊类中的eat()方法。开放与封闭原则:面向拓展开放,面向修改封闭,对于每个实体,只能拓展,不能修改。面向对象的主要思想就是保持每个实体自身的独立,个体影响不到整体。
测试对于编码来说是为了检查代码的质量,是否达到了相关功能以及有没有违背面向对象的基本原则,当然,还需要检测代码的边界。总之,编写的代码是否合格,都需要经历测试的洗礼。如果让我来设计测试用例,我首先要测试的便是编码功能,能否达到客户的要求是最基本的出发点,其次要测试是否满足面向对象的各个基本原则,最后测试一下边界值,如若全部满足,则编写的代码合格。
这四周的Java课程的学习,我收获颇丰,首先改变的是我的思维方式,由面向过程过渡到面向对象。以前面对一个问题,我都是在想我该怎么做,过程是怎么样的?这样编写能否达到我预想的结果?现在面对一个问题,我想是问题中有哪些对象?每个对象有什么特点与共同点?每个对象针对这个问题需要有哪些属性?其次是改变了我的心态,我不应该小看这门课程,有需要更多的时间来思考,设计可行的方案。还有就是对我的编程能力有了极大的提高。
我还有一些对课程的建议,我很喜欢老师前两次课的教学方式,以一个农夫过河的游戏来讲解知识点,引导我们自己设计类和方案,我觉得非常有趣,思维也非常开放,能看到不同的设计想法,对于自己设计的缺陷有更好的认识,进而改进。我希望老师能多准备这样的课,又有趣,又能学到知识,又能启迪思想。
来源:https://www.cnblogs.com/ckb-java/p/12637939.html