java面向对象第二次作业周期的总结

前言:这次主要对学习java面向对象第二阶段的一次总结,对第二阶段的学习过程中遇到的问题,以及对java面向对象的体会。这一阶段也算是正式进入java面向对象学习的一个阶段,在这第二阶段学习中遇到了很多的问题,同时也学习到了很多,做一个阶段性学习的总结。

1、作业过程总结:

(1)、总结三次作业之间的知识迭代关系:

三次作业将java面向对象的重要的三大技术特性,封装性、继承性与多态性在这三次作业的是重要的学习知识,三次作业知识环环相扣,每一次作业主要为下一次作业做准备,写下一次作业的时候就会发现前一次作业的重要性,前一次作业主要是为了下一次作业打下一些知识以及想法的基础,这三次的作业的知识也是很多要学习的,第一次作业主要是掌握正则表达式和初步简单的继承,第二次作业则是在第一次作业的基础上对Java的继承技术特性增加了复杂度,同时也加多态性这一技术特性,第二次作业也是有正则表达式的相关知识,进一步的巩固了正则表达式的知识内容,第三次作业在第一次和第二次的作业基础上增加了多个类的继承,以及多态和接口,对多个类的处理增加了难度,这三次作业都体现了封装这一技术特性。总的来说这仨那次作业的知识迭代关系就是层层加固,可以用初学——掌握——熟练这一知识迭代关系来表示。

(2)、如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性;

三次作业体现的是java面向对象的继承和封装和多态,第一次作业然我知道了封装的一个意义就是利用类或者对象调用相应的类或对象的方法,调用者不能知晓其内部逻辑,这是初步了解封装的原理和作用,而在后来两次的作业中,在写题目的时候看题目给的uml图让我体会到了封装是有明确区分内外,内部的实现逻辑外部无法知晓,并且为封装到内部的逻辑提供一个访问接口给外部使用,感觉很是执行单一原则。这三次作业中体现的继承这一技术特性对代码的质量以及代码的清晰度都有很大的帮助,第一次作业的体现的还比较简单,就是简单的子类继承父类,因为第一次的作业难度不是在于继承上,所以第一作业的继承性我一开始没有很好的理解,知道后面两次的作业java面向对象的继承性就得到了很大的体现,继承可以理解为孩子继承父亲可以共享的东西,同时子类继承父类,这样可以是子类具有父类的属性和方法或者重写父类的方法,重新定义,追加方法等等,这样不仅可以减少代码的重复,也可以在修改程序上起很大的作用,继承是java很重要的一个技术特性。这三次作业第一次我没有体会到多态的这一技术特性,到了第而二次作业用到了很多的子类以及子类需要修改功能,这就就用到了多态,理解了一点的多态知识,到了第三次体会到了多态的作用,这三次然我基本有个大概的理解多态这一特性,多态可以说是父类的一些成员,子类继承后去重写从而实现不同的功能,这样就可以做到多功能化,当你需要其它功能时,你就可以重写一个类继承,然后这样就可以增加一个功能了,多态总的来说就是同一个操作方法作用于不同的对象时,可以有不同的解释,产生不同的执行结果。这三次作用通过每次的一小步引用,逐渐将这三大技术特性给体现出来,对这三大特性的学习有一个递进的作用。

(3)、作业过程中遇到的问题及解决方法;

这三次遇到的问题还是很大的,经常一个问题卡了很长时间,比如第一次作业的难度我感觉是最大的,第一次作业我遇到的其中一个问题就是正则表达式的问题,因为正则表达式需要自己去学习,所以几乎是从0开始,同时还有漏了一些其它情况,所以不能运行出来的的结果不同,而我的解决方法就是上网去查一下关于正则表达式的知识,找了很多,然后就尝试先写一些简单的,最后慢慢的增加复杂度,最后把题目给的正则表达式给全部写出来,然后在通过测试类测试一些数据看是否合适,第一次作业还遇到有些方法看不懂如何写的问题,这个时候我就去试着分析这题需要实现的功能,然后把再看每个类里面的方法,一一对应然后就写出来了,第二次作业遇到的主要问题就是一元多项式的拆分,这个题也是用到了大量的正则表达式和字符串处理函数,这些问题我就是看一些网上的一个关于多项式的相关处理思路,差了很久才慢慢的试着去写,花了很长时间,同时我感觉第二次的作业难度最大的就是这个多项式求导,第二次作业业增加了很多的类,程序复杂度明显提高,在继承和多态的这个知识问题上我也是不太熟练,明显的感到了很大的困难,对于这些我就是通过不断的查资料和看一些其它类型的关于这个知识点的程序,慢慢学。而第三次作业,在我看来是难度是这三次中最小的一次了,因为有了前两次的知识储备经验,第三次遇到的主要问题就是多态的使用了,第三次可以说是多态的实现了,接口的问题,但是通过分析也是较好解决了。

(4)、每次作业花费的时间比例;

第一次作业花费了一个星期的时间,主要是正则表达式的学习以及继承和类的处理这一方面花了很多时间。第二次作业同时也是花了一个星期的时间,因为涉及到正则表达式和字符串处理以及继承,多态,封装的同时,所以我感觉难度比较大,花了很长时间,第三次作业我大概花了一天多一点的时间,因为有了前两次的学习,所以第三次作业写得比较快。

扫描二维码关注公众号,回复: 11164363 查看本文章

(5)、对编程过程的严谨性的认识及教训;

在这三次编程过程中对于严谨性让我学到了不少,其中有多次错误就是因为不严谨而导致错误,特别是书写正则表达式的时候,有些表达式有很多情况结果没有重视,最后导致修改正则表达式时候花了不少时间,还有就是就是处理输入的字符串这一方面考虑的不够,比如有一个分离的字符串要消掉两端空格由于没有考虑到结果导致测试点过不去。所以因为自己的不严谨导致花了很多不该花的时间,但是也给了涨了不少的教训,所以你编程的时候一定要看清题目要求,要考虑周全要注意到题目给的比较难以关注的点,这样你才能更好的编程设计。

2、oo设计心得

(1)、对面向对象三大技术特性之间关系的理解;

面向对象这三大特性在这第二阶段的学习中学习了很多,同时对这三大特性也是有了自己的理解,对于封装:封装减少了大量的冗余代码封装将复杂的功能封装起来,对外开放一个接口,简单调用即可。将描述事物的数据和操作封装在一起,形成一个类;被封装的数据和操作只有通过提供的公共方法才能被外界访问(封装隐藏了对象的属性和实施细节),私有属性和方法是无法被访问的,表现了封装的隐藏性,增加数据的安全性。对于继承:继承–单根性,传递性减少了类的冗余代码让类与类之间产生关系,为多态打下基础若一个新类继承了原有类的属性和方法,并增加了自己的新属性和新方法,称之为派生类,派生类就继承了原有类;当子类继承父类的时候,子类不继承父类的构造函数,但是子类生成对象时(new Student())默认会先执行父类无参的构造函数(实例化对象,让子类可以使用父类的成员),当父类定义有参构造函数时,无参构造函数就会被干掉,这时子类会报错,解决方案是1>在父类重新定义无参构造函数 2>子类的构造函数:base(),调用有参构造函数,函数体中只需初始化特有属性;如果不想执行父类的构造函数,可以通过参数的不同调用父类一个空的构造函数。对于多态:虚方法 virtual override;抽象类 abstract override接口 interface,很重要的一个概念,一个接口,多个方法。通过继承实现的不同对象调用相同的方法,进而有不同的行为。

(2)、面向对象设计的基本原则理解(单一职责原则及“开-闭”;

面向对象的单一职责原则,在我看来单一职责原则是一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。类的职责要单一,不能将太多的职责放在一个类中,不能使一个类太累。单一职责原则是实现高内聚、低耦合的指导方针。类的职责主要包括两个方面:数据职责和行为职责,数据职责通过属性来体现,而行为职责通过方法来体现。如果一个类的职责太多,将导致系统非常脆弱,一个职责可能会影响其他职责,因此要职责分类。而开闭原则是面向对象的可复用设计的第一块基石,是面向对象设计的目标。一个软件实体应该对扩展开放对修改封闭,也就是说再设计一个模块的时候,应当使得这个模块可以在不被修改的情况下进行扩展,即实现再不修改源代码的情况下通过实现或者继承扩展系统。为了满足开闭原则,我们需要对系统进行抽象化设计,抽象化是实现开闭原则的关键。开闭原则也是实现组件化编程的基础。

(3)、OO编程思维的理解;

对于oo编程思维我理解就是首先你要知道你需要实现的功能,然后决定你要类,再给每个类提供完整的一组操作,学会使用继承来表现共同点,在使用封装和多态实现多功能化,OO编程思维在我看来就是你要尽量让设计与现实一致化,所以你要向着这个思维去设计,然后接近现实,这样你的设计就会很现实化,同时你的设计质量也是非常不错的。同时思维不要单一,要多元化。这样就可以最大化满足要求。

(4)、类设计心得;

这三次作业让我学到了每一个类的设计都是非常有其用处的,每一类决定一种或者一类功能,对于类的设计我们要做到单一职责原则,这样就可以功能的实现以及对功能的修改有很大的帮助,类的设计好坏决定你的代码拥有的功能,如果你的类设计的时候是没有太多思考的,那么在后来的修改上需要花大量的时间和代码来修改,体现了类的设计和代码的质量不高,所以设计类的时候要分析每个的功能,以及遵循单一原则。

3.测试的理解与实践

(1)、测试对于编码质量的重要性;

在我看来测试可以看出一个代码的质量,同时也可以看出一个代码中出现问题,测试可以看出你的代码那一部分不符合你预期要得到的结果,这样你就可以更好的改一下你的程序,同时测试可以比较两个都可以实现相同功能的代码的质量,可以测试出那个代码的运行时间长短,可以看出那个代码的存在的一些bug,我感觉测试可以让你的代码更加完美,质量更高。我们在完成单方面的设计并不会有很大的困难,但是如果我们将我们编写的代码运用广泛或者是运用生活,会出现很多问题,有些是超额运算的数据不准确而还会有些是我们时间复杂程度上会出现超时运行的现象。

(2)、查阅资料,假设使用Junit进行程序的测试是否可行;

是可以的;

4.课程收获;

(1)、总结这四周来在OO方面的教训及收获

这四周来从开始到熟悉,在OO方面得到了很多的教训以及收获,自己知识的短缺,很多的知识以及设计思想不行,写题时的懵,以及遇到很多完全不知道的知识,同时在做题的是的思路方向的不正确导致无法进行,这都是很大的教训,但是我同时也收获了很多,遇到困哪不要放弃,慢慢来,多查一些资料,学会学类旁通,对于OO这一方面遇到的了三大特性的知识的不够,以及设计出现的弊端。

5.对课程的建议

①第三阶段作业难度、题量的建议;

第三阶段作业的难度尽量不要太难,在我们的大部分学过知识之类,作业难度不要太大,对于题目数量我感觉三题可以,但是不要相等难度,这样会很难进行。

②课程内容讲解方面的建议;

课程内容的讲解我感觉有很大帮助,我觉得可以稍微的向作业这方面讲解一点我觉得会比较好,这样写作业的时候可以联想到上课内容,我感觉这对上课的内容也是有比较大的帮助。也可以讲一些java面向对象的实例,可以帮助我们更好的理解java面向对象。

猜你喜欢

转载自www.cnblogs.com/TREELFY/p/12815452.html