OO第二单元(5-8周)作业总结
0.前言
本次博客是记录的第二阶段的作业(5-8周)。
此阶段主要为继承(图形的继承,抽象)。有了更多的实践题,更加贴近现实,更多相对较为困难的语法。
写这篇博客时,已经完成了6次pta上的作业。相对来说,后面3次的困难比前面3次的困难要更大,耗费时间更久需要百度自学的东西也更多。
1.作业过程总结
(1)总结三次作业之间的知识迭代关系(3)作业过程中遇到的问题及解决方法(5)对编程过程的严谨性的认识及教训:

第4次作业的第一题我学会了trim或者repalce方法去空格。split方法来进行分割。也较多的使用正则表达式。

但没有完全的使用uml图里面的类和函数,导致主函数较麻烦,思路不清晰,错一块改一块。出错的时候不容易检查。较为明显的不适应去面向对象。
第五次作业的第二题较为有难度,是对String来进行求导。我认为较难的地方是字符串的分割(在哪里分割?怎么分割?)字符串求导之后的组合也较为困难。

在对输入进行检验的时候,运用函数不当导致main函数有124行。最后提交的时候,正则表达式也多次出现错误。(每次写完正则表达式可以使用https://regex101.com/进行检测),提高找错速度。
第六次pta更加的注重于抽象和继承的使用。更多的使用List和list的包含的一些方法。(比如可以用list.remove(0);移除list里面的第零个单元),第一题和第二题排序的时候没有用到collection.sort(),使输出较为麻烦。

(2)如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性:
封装:封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体是类,类通常对用户隐藏其实现的细节,这就是封装的思想,在Java中通常通过建立一个实体类,用来封装对象的属性和行为,通过setXxx()和getXxx()方法封装起来
继承性:简单来说就是使子类的对象拥有父类的全部属性和行为,同时可以增添自己的所特有的属性和行为。这样可以节省写共同具有的属性和方法代码的时间,有利于代码的复用,这就是继承的基本思想。
多态性:简单来说就是一个程序中同名的多个不同方法共存的情况,通常使用方法的重载和重写(也叫覆盖)来实现类的多态性,多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类以及相关类,多态的实现并不依赖具体类,而是依赖抽象类和接口,在多态的机制中,父类通常会被定义为抽象类,在抽象类中给出一个方法的标准,而不给出实现的具体过程,通过继承父类来实现,而比抽象类更方便的是将抽象类定义为接口。
(3)每次作业花费的时间比例:
第四次:第一题花费了2天左右。二,三题共花费一天。
第五次:第一题花费的时间为半天。第二题花费时间为2天。
第六次:第一题花费时间为1天,第二题为2个小时。
2.OO设计心得
(1)对面向对象三大技术特性之间关系的理解:封装得话就是私有得属性,但是外部又可以用getter和setter来进行访问,容易的修改类的内部实现。继承是使用已经存在的类(父类),新类(子类)可以增加更多的属性或者方法,可使用父类的功能,子类也拥有父类的private属性和方法。多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
(2)面向对象设计的基本原则理解(单一职责原则及“开-闭”原则):我认为单一职责原则就是一个类做一件事(只有一种功能),只有一个东西可以引起它的变化,如果职责过多的话,引起变化的原因就越多,相互会产生影响。开放封闭原则的核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以修改就是封闭的;而通过面向对象的继承和多态机制,又可以实现对抽象类的继承,通过覆写其方法来改变固有行为,实现新的拓展方法,所以就是开放的。
(3)OO编程思维的理解:把面向对象的这个东西当成一个实体,这个实体还有一些他的属性和执行功能的方法,同时它可以被子类继承,同时继续其他更高级的父类。 这里就包含了面向对象三大技术特性,封装继承多态性。
(4)类设计心得:输入,处理,输出。而“处理”又可因为不同的方法,职责去继续设计其他的类。
3.测试的理解与实践
(1)测试对于编3.码质量的重要性:我认为是非常重要的,因为没有测试我的认识就只是片面的,也许可能会对,但是我认为大多数都是不全面的。而且写代码需要细心,一个小毛病就可能引发大问题,测试就是对于错误的处理有着一系列完善的措施。
(2)查阅资料,假设使用Junit进行程序的测试是否可行:可行,JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。也就是说junit就是别人写好的单元测试框架,使用此框架可以大大缩短代码的测试时间和准确度。
4.课程收获
写了这么多代码后,我觉得应该先反复读题,反复去看uml图,理解每个部分所在的职责。然后从大框架开始,再去处理小细节。
5.对课程的建议
(1)第三阶段作业难度、题量的建议:我建议题量和第二次的差不多就好,难度不应加!!!!!!!!!!!
(2)课程内容讲解方面的建议:每次都是写完代码才讲需要的语法和知识点,都已经百度完了,导致听课不专心,容易走神。建议没发pta之前就可以进行讲解。

浙公网安备 33010602011771号