OO第二阶段作业总结

0.前言

  本次博客是针对第二阶段pta作业的总结与教训,这一阶段作业难度较之第一阶段作业难度要高,下面是我的总结与教训。

1.作业过程总结

①总结三次作业之间的知识迭代关系

第二阶段作业一共有三次大作业,分别是第四,五,六次大作业。

第四次大作业第一题主要是让我们学习并熟练运用字符串处理类以及正则表达式对输入字符串数据进行合法性校验及计算,在写这题的代码的时候要考虑很多情况,正则表达式也不能出错误,而且在写这一题的时候当时的感觉是有点懵,不知道该如何做,第一次用到这么多类编写一个代码,当时脑子有点乱,根本不知道对象与对象之间该怎么把他们联系起来,该怎么从别的对象中获取想要的东西,当时我就向班上的大佬请教了,理解了大佬的思路瞬间感觉不再那么迷茫了,后面的分割和检验也是挺痛苦的,因为要考虑各种情况 ,不过在我的不懈努力下,终于做好了,后面两题难度倒不是很大,也算是老师开恩了,理解我们的痛苦,后面就水到渠成了。第五次大作业两题,都是使用类的继承、多态性编写程序,这里要运用抽象类,不过还好后面老师讲了,而且抽象类的使用也不难理解,第一题不难,第二题又要运用正则表达式了,好在有了上次作业用正则表达式的经验并且有重新系统的学习了一下正则表达式,正则表达式的问题倒不是很大,就是在写代码时有些不严谨,有些测试点没能直接通过,后面通过检查调试并且询问别人最终解决。第六次大作业难度倒是不大,主要是掌握类的继承、多态性使用方法以及接口的应用,不过后面的加分题我倒是弄了挺久的,刚开始是用最笨的方法,在编译器上运行大的数据(1000000)等了好久才出结果,后来放到pta上更加运行超时,后来试了很多方法都不行,不得不到百度上去学习方法,后来在理解了百度的方法后,我自己又想到了一种类似的方法解决。三次作业都要用到

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

封装性就是把对象的进行封装,变量属性都设为私有,其他对象只能通过get和set方法来获取相关属性。

继承性就是类与类之间的关系,子类可以继承父类的属性和方法,同时也可以增加自己的属性。

多态性就是从字面理解就是多种形态,在不同的对象中相同的方法会做不同的事,可以这么认为,封装和继承几乎是为多态而准备的。

③作业过程中遇到的问题及解决方法

(1)、做水文校验题搞不清楚对象与对象之间的联系,该如何从其他的对象中获取想要的信息,怎么把这些对象连接起来,还有就是正则表达式这个问题了,对象之间的关系我是通过问同学得知思路的,通过理解他的思路,最后差不多理清楚了对象间的关系,正则表达式就是通过百度菜鸟教程学习并不断的尝试并修改正则表达式,才通过检验。

(2)、在多项式求导函数时,不知道怎么用正则表达式匹配单项式,通过问大佬知道用Pattern,Matcher实现,然后百度它们的用法,最后解决问题。

(3)、还有就是接口不知道怎么用,后来通过百度然后自己测试才知道如何使用。

(4)、不会对List类型的 进行排序,通过问同学解决。

④每次作业花费的时间比例

对于我来说,我觉得这几次代码的难度在逐次递减,用的时间当然是越来越少了,时间比例大概是4:3:2

⑤对编程过程的严谨性的认识及教训

编程中,严谨性是非常重要的,写代码的过程中不但需要考虑到本题目的要求并且实现它,还需要考虑自己写的代码是否有复用性,是否符合OO的哪几项基本原则,代码的逻辑上需要更加的严谨,不然会很容易出现各种bug,通过这两个阶段的学习之后,现在的常识性错误在慢慢的减少,对自己的要求也越来越高了,在运用正则表达式上一定要非常非常的严谨小心,不然打错或者少打一个字符,自己是很难发现的。

2.OO设计心得

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

面向对象三大技术特性分别是封装性、继承性、多态性,封装性就是把对象的进行封装,变量属性都设为私有,其他对象只能通过get和set方法来获取相关属性。继承性就是类与类之间的关系,子类可以继承父类的属性和方法,同时也可以增加自己的属性。多态性就是从字面理解就是多种形态,在不同的对象中相同的方法会做不同的事,三者之间是有联系的,封装性和继承性几乎是为多态性而准备的,三者共同构成了java的技术特性。

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

这些原则较上一阶段理解深刻了一点

单一原则:对象的方法和属性,都有自己的职责,并借只能实现做自己的一个职责。

“开-闭”原则:针对可复用性的,对于扩展时开放的,对于修改确实关闭的,在职责和功能改变时,扩展是可以的,但是没有必要进行改动。

③OO编程思维的理解

运用多个对象,每个对象执行每个对象的职责,各自独立完成并实现功能。拿到问题时首先考虑有几个对象,对象该履行什么职责,对象中应该用哪些方法来实现功能,最后把对象与对象联系起来,使其成为完整的代码。

④类设计心得

在设计类前,自己要明确这个类要干什么,哪些类跟它有关系(方便与其他类联系起来,比如继承),这个类要实现什么功能,这些功能将由哪些方法实现,再写方法是怎么设计算法来实现这个功能,一定要考虑到单一原则,类一定要独立,提高复用性,使得在下一次使用该类时能够心安理得的遵守开闭原则。

3.测试的理解与实践

①测试对于编码质量的重要性

如果没有测试,自己也不知道代码的bug在哪里,无从修改,通过测试,代码的bug就会容易知道,修改就方便,代码就会更加完善,质量就会提高,更加节省时间,有时候我们没有注意到的语法错误或者逻辑错误都可以通过测试来发现。

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

本人测试过一个代码,发现使用Junit进行程序的测试是可行的,在eclipse中已经将JUnit模块集成好了,我们可以直接的在自己的项目中使用JUnit的测试模块,十分的方便。

4.课程收获

这四周的收获还是很多的,学到了使用正则表达式,抽象类,接口等等很多OO知识,并且对面向对象设计的基本原则理解更加深了,面向对象三大技术特性封装性、继承性、多态性理解也深了,从开始的看到复杂的UML类图不知所措,到现在能够有自己的独力思考能力,但是这四周的教训也很多,也发现了自己的很多不足之处,比如再写水文校验作业时,代码写的很复杂,冗余,并且OO的基本原则也没有严格遵守,特别是单一原则,有时候一个方法会执行好几个职责,开闭原则也是没有严格遵守。

5.对课程的建议
①第三阶段作业难度、题量的建议

因为第三阶段的题目不会给我们UML类图作参考。我希望老师可以把题目难度先降低一点,待得我们自己设计并完成了一次作业的UML类图和代码时,难度可以逐渐增加到适合我们的难度,题量的话建议一次作业2—3题就不错。

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

希望老师在上课前能透露一下下节课会讲的大概内容,我们也能有个准备和预习,并且在结束作业后老师能跟我们提一下那些难度比较大的题目的思路和解决方法,便于我们学习和借鉴更好的方法。

 

posted @ 2020-05-01 19:56  hnjfine  阅读(115)  评论(0)    收藏  举报