OO第二单元(5-8周)作业总结要求
【Java面向对象】对第二阶段作业的总结提高
前言:本次博客对第二阶段的作业情况进行一个总结,题目如下:
•

•

•
很显然第二阶段的大作业的难度远远高于第一阶段的作业,完全是用面向对象的思想已及类与类之间的关系,在刚开始做的时候难度实在是有一点点高,当然只要努力,是没有什么不可能完成的。所以针对第二阶段的作业,我也会认真去总结,我打算也像上一次总结一样分为六大方向去总结提高:1、作业过程总结2、面向对象设计心得3、测试的理解与实践4、课程的收获5、对课程的建议6、对下一阶段的学习安排。

一、作业过程总结
1、知识的迭代:该阶段大作业主要考察的是有关类的封装、多态、继承,所以有关知识的迭代都体现在关于类的设计与考察中,这三次作业基本上都用到了类的封装、继承,有的作业都用到了。所以知识的迭代过程就体现在我们不断的对类的设计等等。
2、通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性:
①对象的封装性:通过这几次的大作业,我明白了所谓封装性,就是把对象的成员属性和成员方法给结合起来,形成一个特定的单位,除了对象以外的都不能去获取,还有一些属性是根本不能被获取的,这样就可以更好的保证程序的安全。封装性几乎在每一个类的设计、编写都有体现,我认为是类最为根本的性质。
②对象的继承性:继承性在这几次的大作业中都有涉及到,比如第一次大作业的第三条是单单的图形的继承,只有父类子类,第二次大作业的第一题是继承与多态,继承与多态相结合起来。所谓继承性,通过这一阶段的大作业中就是子类去继承父类,可以有多个子类继承一个父类。子类继承父类后,可以具备父类的所以属性以及方法,可以直接用,也可以重写父类的方法。这就加大了语言的灵活性。
③对象的多态性:多态性是建立在继承的基础上的,而且常常会和抽象父类来使用。一个父类产生了多个子类,这些子类个不相同,具有直接独特的属性以及方法,这也就叫做多态性。


比如上面这两副图,就是多态和抽象父类的结合,子类必须实现父类的抽象方法,子类也表现了不同的特征,把多态性给体现出来了。
3、遇到的问题及解决方法:我遇到的问题及解决方法主要分为四大块:
①正则表达式的使用:本次大作业是第一次使用正则表达式,所以在使用起来的时候遇到了许多麻烦,最主要的就是不知道如何去写正则表达式或者说是写的没有很准确,就花了较长的时间慢慢去修改。
②对象的ArrayList、LinkedList的使用:

刚开始接触list的时候不知道可以存储对象做为list的元素,然后通过在网上的学习明白了list的实例化,里面的元素类型可以是String、integer、对象名等等。还有就是如上图所示的不知道怎么转化为LinkedList去使用,不知道如何去操作,这也是我的一个知识盲区,这也需要自己慢慢去学习,去熟练的掌握以及使用。
③tostring方法的使用:这个问题在当时纠结了我挺久的时间的,我一开始都不知道它怎么去使用,后来慢慢的明白了,每个类里面对象都有一个系统给的tostring方法,如果不去重写的话就会去输出一些特殊的东西,重写就可以输出你想要输出的形式,这样更为的方便。
④算法上的问题:算法上的问题还是老问题,比如在这第二次大作业的一元二次多项式求导,我觉得把每一项给提出来非常的困难,一开始想直接用+每项分割,但是还有减号怎么办,所以在这里我是用了较为麻烦的处理方式,用的时间挺久的。
4、作业花费的时间比例:第一次大作业可以说什么时候结束就做到什么时候,因为对于我有点难度了而且还没有全做对,第二次大作业就是一元二次多项式求导的时候有点麻烦,第三次大作业挺简单的,花了不到一天的时间,我认为比例可以为4:3:1
5、对编程过程的严谨性的认识及教训:就这第三次的大作业中,题目要求输入的是浮点型的数据,然而我用的是int输入,eclipse不停的报错,我也不知道哪里有问题然后就弄得很麻烦很难搞,挺费时间的。
二、面向对象设计心得
1、对面向对象三大技术特性之间关系的理解:在作业过程的总结中,我已经详细的把我对这三大技术的特性认识就行了阐述,这里我就这三大技术的关系再阐述一下。封装性我认为在每个类都要使用到的,因为每个类都有其属性和方法,然后在封装的基础上就是继承,可以单继承也可以多继承,然后在继承的基础上继承抽象父类,这就有了多态,各个子类的表现出自己的特色。总的来说三大技术都互相联系的。
2、面向对象的基本原则理解:在上一阶段的大作业中总结中,我阐述了对单一原则的理解,现在我想说一下对开闭原则的认识。开闭原则是一个非常基础性的原则,它可以使我们的系统更为的灵活,“开”就是开放,对一些相同的拓展可以开放以实现较高的复用性,“闭”就是不能去修改。我认为就是一个系统达到复用性,不是去修改代码,而是直接通过拓展、抽象去实现。开闭原则是Java设计最为基础性的原则。
3、面向对象思维的理解:通过这一阶段的学习,我明白了万物都可以为类,面向对象就是不看这个过程而是去看每个类,对一个程序要解决的问题,分步骤去解决,通过每个类把大问题化为每个小问题去,然后再通过对象的引用实现这个程序。
4、类设计心得:类的设计一定要切实地符合题目,一定要做到单一职责以及开闭原则,还有就是要让程序出现更好的复用性,这就要求对类的设计一定要准确。
三、测试的理解与实践
1、测试对于编码质量的重要性:测试有时候也需要自己去猜想、去试试才能更好的保证自己的程序。比如水位校验数据的这道大作业,在pta上有一些测试用例是非常的不容易去发现,真的需要自己去慢慢的去测试才能检查得出来,也耗费时间。总的来说测试是极为的重要的对于编码的质量,而且有的测试点难以发现,这就需要自己去琢磨探索了。
2、假设使用Junit进行程序的测试是否可行:
JUnit是Java单元测试框架,是专门给程序测试用的,所以肯定是可以用Junit来测试的程序的,使用Junit来测试程序可以 让你的条理更加清晰,而且当某个功能出现问题时,可能通过单元测试很容易的定位和解决问题,用Junit可以更好地去测试程序去发现问题。
四、课程的收获
这一阶段的学习,我才真正的感受到入门了一点点。我理解并使用了面向对象的三大使用性质,知道了对list的使用,相比第一阶段来说,自己提高了很多,一些较难的编程题在自己的慢慢努力下也可以一点点的啃下。所以说,经过这一阶段的大作业完成以及课程的学习,一些面向对象的基本原理以及如何去实现、怎么去操作、还有对类的设计、对类设计的原则都有了一定的认识,真的感觉到了提高,所以希望在继续地努力下去吧。
五、对课程的建议
①第三阶段作业难度、题量的建议:我觉得可以现易后难,题量不要过多,作业的难度可以稍微的难点但也不要难以去实现。
②课程内容讲解方面的建议:我希望老师可以多讲点题目的例子,单纯的讲一些面向对象的一些知识,有一点难懂。
六、对后一阶段的学习安排
下一阶段是更为高难度的大作业,所以,希望自己能够多花时间去学习,认真地对待每一次的作业,争取对Java的认识越来越深入。


浙公网安备 33010602011771号