OO第二单元(5-8周)作业总结
0.前言
本次博客针对的作业是使用抽象类,继承,接口解决问题,面向对象的封装性、继承性与多态性三大技术特性。这次的作业刚开始接触的时候还是感觉挺难的,毕竟对于一些函数关系上的处理还是把握的不到位。而这次作业主要表现在类的继承方面,如果没有在开始之前确定好不同类之间的继承关系,在写代码时就容易出现逻辑混乱,导致牛头不对马嘴,写出的代码就如大杂烩一般,看似包容了很多,但实际上相应的功能并不能实现,而且看上去非常杂乱。
1.作业过程总结
①总结三次作业之间的知识迭代关系:三次作业主要涉及封装,继承,多态,三次作业由简入繁,每次的侧重点不同,但始终贯彻逐渐加深三者之间的关系的原则。除此之外还涉及正则表达式,ArrayList等其他内容。第一次的第一题便要使用正则表达式,第二第三题用抽象类解决难度不大。第二次作业强调继承,类的使用,第三次作业用到了接口,加之之前的东西,一步步使用的东西更加多,更加综合,也让我们更加花更多的时间,从中也一步一步将我们带入代码的世界,让我们更加了解面向对象的三大特性:继承性,多态性,封装性。
②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性:
三次作业,先是简单的类创立,用简洁的实例讲演抽象的封装,即将某事物的属性和行为包装到对象中,根据private,protected,public三种修饰符号对外部对象访问发i对象的属性和行为进行限制。
之后初步加入继承的概念,同样用简单的例子进行讲演,使子类与父类的关系更加直观化。
最后开始在程序设计中加入多态性的概念,强调多态性灵活、抽象、行为共享、代码共享的优势特点,通过实例化的例子表现多态性允许不同类的对象对同意信息做出回应,解决应用程序函数同名的问题。
通过现实生活中工程化的例子将三种特征结合在一起,同时表现三者的重要性以及三者同时共存的特征。
③作业过程中遇到的问题及解决方法:
遇到的问题:刚开始对于类中的私有制的概念不是太清楚,还有抽象类的建立和调用也不是很熟悉,导致调用数据时总是会出现一些差错。其中最直观的问题就是在面对要求时,无法将抽象的理论知识实现到代码中,经常出现思路明确但实践代码时无从下手,在这种矛盾下陷入死循环。除此之外,便是对课上涉及的其他内容一知半解,对代码的编写带来了很大的阻碍。
解决办法:上完查询资料和询问同学,学习是需要花时间去完成的。
④每次作业花费的时间比例:每次作业花费的时间都是递增的,但每次代码的完成度不高,完成质量不高。因为我有个毛病就是喜欢拖,所以导致有两次作业写不完,一方面是太难了不知道怎么下手,另一方面是没有足够的时间,这点我需要改正。
⑤对编程过程的严谨性的认识及教训:初学java真的有好多地方都不明白,写代码前没有认真做好规划,语法错误思路不清晰,有时候想实现某个功能却无从下手,还是要学习的时候认真学,把每一个东西都吃透,这样用起来才简单舒服。
教训:好好上网课,课后时间也要多看多学。
2.OO设计心得
①对面向对象三大技术特性之间关系的理解:
面向对象包括封装、继承、多态三大特性。首先封装性体现了一个类对于私有属性的概念,继而,继承性表达了子类从父类继承相关财产的性质,而多态性更像是继承性的拓展,子类不仅是从父类那里继承了财产,他根据这些财产创造出了新的属于自己的财产,就像是一种散发的行为。下面来说说这三个特性的概念:
封装的概念: 封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。封装的目的在于保护信息,
继承的概念: 如同生活中的子女继承父母拥有的所有财产,程序中的继承性是指子类拥有父类数据结构的方法和机制,这是类之间的一种关系;继承只能是单继承。
多态的概念: 面向对象的多态性,即“一个接口,多个方法”。多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。多态性允许一个接口被多个同类使用,弥补了单继承的不足。
②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则):
一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。类的职责要单一,不能将太多的职责放在一个类中,不能使一个类太累。单一职责原则是实现高内聚、低耦合的指导方针;开闭原则是面向对象的可复用设计的第一块基石,是面向对象设计的目标。
③OO编程思维的理解:面向对象的基本概念有对象,类,抽象,封装,继承,多态,接口,消息,组件,模式和复用等。目前学习主要为前四个。关于对象和类,总结地说,每一个对象都是某一个类的实例。类是程序运行前已经定义好的存在,对象是在运行之后动态创立的,类是对象生成的模板。抽象是对实际对象进行抽象化,进行主要特征的强调,次要特征的忽略。面向对象思想使代码与现实世界有关联,面向的是使用者,三大特性也是为其所创,封装性,每一个类都有自己的方法,继承能节省代码,多态更能够让代码有复用性和多义性。
④类设计心得:有关类的设计就是要做到能够充分调用而不会出现问题,具有很好的修改性,独立性,加强程序的可操作性。
3.测试的理解与实践
①测试对于编码质量的重要性:代码较多且较复杂时,测试的重要性便凸显出来了,测试可以保证代码的严谨性,测试是检测代码质量标准,只有通过测试的代码才是合格的代码。
②查阅资料,假设使用Junit进行程序的测试是否可行:使用Junit进行程序的测试是可行的。在eclipse工具下,利用junit功能可以对代码的模块与功能进行测试,可以进行单个测试,也可以进行批量测试。但是也要注意一些相关问题,例如测试程序与开发程序的分隔,否则会产生不好的影响。
4.课程收获
总结这四周来在OO方面的教训及收获:经过这一段时间的学习,我认识到了OO需要开放而灵活的思维,以及坚实的知识基础,任何投机取巧的行为都会收到负面影响,在学习过程中的懈怠,代价便是面对课题是的手足无措,焦头烂额。这四周来的最大教训就是上课要好好听讲,课后作业也要尽早完成,不要拖。不然课后要花更多的时间去补,老师上课举的例子都很通俗易懂,比自己去找资料学习效率更大,课后也要去及时巩固所学内容,不要走马观花。收获是思维逐渐从面向过程转变到面向对象,在学习过程中对类和方法有了一些了解,但还需要多加练习。
5.对课程的建议
①第三阶段作业难度、题量的建议:希望能多出一些基础题,稍微降低点难度,一蹴而就的话反而心态容易爆炸。
②课程内容讲解方面的建议:课程讲解希望更加实用化,与实例结合。
浙公网安备 33010602011771号