OO第二单元(5-8周)作业总结要求(第八次作业)

. 前言

 

     本次博客主要记录这几次作业后的思考,出现的问题和我的解决办法。本次作业主要体现再类的继承方面,还有ArrayList等其他方面的内容。总的来说,这几次的作业颇有难度,两题就能让我纠结一下午或者一晚上,做不完还睡不着。

 

. 作业过程总结

1.这三次的作业是由简单到难。第一次作业的第一题可谓难度偏高,要利用正则表达式以及类的继承等方法来实现 ,这题的数据太过繁琐,难倒了我。而第二题第三题就比较好下手。从面向过程过渡到面向对象,然后又过渡到类的继承,中间夹杂着正则表达式的使用和ArrayList的使用,然后第二次作业和第三次作业让我们熟悉和掌握了abstract抽象类的用法。这三次作业让我们熟悉了Java中类的继承的特点,Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类叫做父类,父类和子类的关系,是一种和特殊的关系。子类继承了父类,也将获得父类的全部成员变量和方法,但是子类不能继承父类的构造器。子类继承了父类,所以说子类是一个特殊的父类,大部分的时候,子类总是以父类为基础,额外增加新的成员变量和方法。了解掌握了继承的概念,又通过作业掌握重写父类的方法,更深入地了解到两同两小一大的规则。要实现重写,方法名要相同,形参列表要相同,子类方法返回值类型应比父类方法返回值类型小或相等。子类方法访问权限应比父类方法的访问权限大或相等。

2.  在前一阶段的学习中我们知道:在类中定义了自己的私有属性和方法,规范属性的范围,体现了面向对象的特征:封装性;而在这个阶段的练习中有较多的类继承关系的运用,像父子类的继承关系、抽象类的子类要全都实现父类定义的方法、子类重写父类的方法等等;而在第二阶段第三次作业中体现了三大特性之一的多态,多态体现了同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,通过这几次作业,知道了继承是多态的前提,如果没有继承,就没有多态,继承主要解决的问题就是:共性抽取

3.写作业时难免遇到许多问题,比如忘记重载和重写的区别,不会利用接口来联系两个子类,不会用Collection的方法对ArrayList中的东西进行排序,解决方法很简单,在网上查找相关的代码,看看人家是如何使用这些方法。第一题水文检验难度对我来说非常大,要使用Java中字符串处理类以及正则表达式对输入字符串数据进行合法性校验及计算,关读题解题就花了我不少时间,在断断续续写了几天,测试点一个没过,我就打算放弃了。而最后一次作业,真的把我折磨了很久,在eclipse上写好代码,经过不断调试,然后测试PTA上给出的样例,发现和PTA上给出的答案一样,我就十分放心地交上去了。结果PTA上就过了两个测试点,40分的题目只得了个位数,思考了很久还是没有发现自己哪里错了,于是去做第二题,没想到第二题也出现了类似的情况。代码逻辑没有什么问题,也全部对的到。于是我就去请教一些高手,高手看了很久也没看出什么问题。后来我将类中的方法直接写在Main函数中,然后再提交,就得了满分。这里我一直在纠结为什么,一直没有得到答案。

4.除了水文数据的那题,其他题还好说。5:4:2

5. 最后两题给我很大的思考,我们在学习过程中要有自己的设计思路,不要一味的按指导书上给的方案来思考。但还是要尽量多使用面向对象的设计思路和方法,使用封装性、继承性与多态性三大技术特性让自己的代码得到更多的复用。 

.OO设计心得

1. 对面向对象三大技术特性之间关系的理解

封装和继承目的都是为了代码重用,而多态目的是为了接口重用。

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

    一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。

   类的职责要单一,不能将太多的职责放在一个类中,不能使一个类太累。

   单一职责原则是实现高内聚、低耦合的指导方针。开闭原则是面向对象的可复用设计的第一块基石,是面向对象设计的目标。一个软件实体应该对扩展开放对修改封闭,也就是说再设计一个模块的时候,应当使得这个模块可以在不被修改的情况下进行扩展,即实现再不修改源代码的情况下通过实现或者继承扩展系统。为了满足开闭原则,我们需要对系统进行抽象化设计,抽象化是实现开闭原则的关键。开闭原则也是实现组件化编程的基础。

3. OO编程思维的理解

OOP应该体现一种网状结构,这个结构上的每个节点“Object”只能通过“消息”和其他节点通讯。每个节点会有内部隐藏的状态,状态不可以被直接修改,而应该通过消息传递的方式来间接的修改。

4.类设计心得

通过画类图来对类进行设计,先弄清楚各个小问题之间的关系,再设计的类与类之间的关系,是依赖,继承,实现,关联,聚合还是组合。

 

.测试的理解与实践

1. 测试对于编码质量的重要性:

测试点可以测试出代码哪个地方出现了问题,可以针对问题这方面进行修改,提高了编写代码的质量

2. 查阅资料,假设使用Junit进行程序的测试是否可行:

使用Junit进行程序测试是可行的

.课程收获

总结这四周来在OO方面的教训及收获:

教训:要强化对面向对象的思路

收获:经过这几次作业和老师的指导,让我逐渐体会到了面向对象的继承,多态还有代码复用性等思想的巧妙。

.对课程的建议

1. 第三阶段作业难度、题量的建议:

希望老师能体谅我们这些小菜鸟的解题速度,类图能简单实用一些

2. 课程内容讲解方面的建议

希望老师能够针对我们这几次的作业讲解一下,毕竟不是所有同学都能过测试点…

 

posted @ 2020-05-02 15:17  ShaulChen  阅读(108)  评论(0)    收藏  举报