OO第二单元(5-8周)作业总结

0.前言
  本次博客是针对PTA4,5,6次作业的总结,进入java学习的第二阶段,我感觉难度有一定的提升,几次作业的成绩都不是很理想,我对自己个人的一些原因进行分析和检讨,还有学习上的一些心得体会。
1.作业过程总结
①总结三次作业之间的知识迭代关系;

  第4次作业7-1 水文数据校验及处理,考察了正则表达式的运用和类的使用,7-2 蒙特卡罗方法求圆周率考查了对类之间的使用 ,7-3 图形继承 考查了继承。

  第5次作业7-1 图形继承与多态考查了继承和多态,7-2 一元多项式求导考查了正则表达式的使用,继承和多态的使用。

  第6次作业7-1 图形卡片排序游戏考查了类的继承、多态性使用方法以及接口的应用,7-2 图形卡片分组游戏类的继承、多态性使用方法以及接口的应用 ,7-3 求素数主要是对算法的设计。 
②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性;

  第4次作业7-3 图形继承就是通过将圆心,矩形,三角形进行封装,将图形的边长,面积等属性进行了封装,并给出了set和get方法供其他地方调用,同时这题还将这些图形进一步抽象成shape类,其他图形都是继承于shape.

在第五次作业7-1 图形继承与多态中就是在第四次作业最后一题的基础上运用多态父类引用指向子类对象Shape circle ,Shape recatngle 等等
③作业过程中遇到的问题及解决方法

  在水文监测中,为了掉字符串两端的多余的空格,了解到trim方法。同时对正则表达式的学习则参考了网上的一些资料  

    http://c.biancheng.net/view/5812.html?tdsourcetag=s_pcqq_aiomsg

    https://www.runoob.com/java/java-regular-expressions.html

  在第五次作业7-1 图形继承与多态中要求输出的数保留两位,当时不知道怎么格式化字符串,后面请教同学,String.format("%.2f",getArea())就能保留两位,
④每次作业花费的时间比例

  时间比例大概是20:5:5
⑤对编程过程的严谨性的认识及教训

  在水文检测题中,对数据的要求是比较严格的,我编写代码不够严谨,导致许多逻辑错误,查找十分困难。在第六次作业7-1 图形卡片排序游戏中,输出时,我多加了空格,导致许多测试点格式错误,还有写错输出内容,错误之处仅仅是因为一个单词两个字母写法,导致答案错误,也找了半天才发现,因为编程的不严谨,导致我浪费了许多时间。
2.OO设计心得
①对面向对象三大技术特性之间关系的理解

  面向对象三大技术分别是封装,继承和多态。我觉得封装是基础,我们将要完成某一功能的条件放在一个类中,别人使用这个功能时不需要知道里面具体的代码就能使用,而继承则是在封装的基础上将一些类都有的特征提取出来,从而使代码能够复用,而多态这又是在继承的基础上,让代码通用,提高扩展性。
②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)

  单一原则:通过这几次的作业提供的指导书,他们都有给出类图,我发现上面设计的类都是为了完成某一个单一的职责而设计的,设计程序时并不会把多个职责都写在一个类上面,每个类都有自己具体的职责,我认为这就是单一原则。

  开闭原则:对拓展开放,对修改关闭。我的理解是:我们设计的程序要有良好的扩展性,当我要增加某项新的功能时,不需要去修改已经写好的代码,只需要加入新功能的代码,而不会影响之前的功能,同时也不允许去修改之前的代码。
③OO编程思维的理解

  在这一阶段的学习过程中,我对面向对象编程又有了进一步的理解,我觉得面向对象编程仿佛就像制造一部机器,这个机器能完成某一种事情,它有很多的功能部件,不同的部件有不同的作用,将它们按照正确的逻辑组合在一起,机器才能正常的运转。我觉得java中的类就像这些部件一样,而部件又是由零件组成,一个个的小零件就是方法。
④类设计心得

  在类的设计时,我们首先要清除完成一个任务需要那些对象来完成,这些对象又分别完成了什么的功能,然后我们要对这些对象进行抽象,抽象出来的写成类,能继承就继承,功能就是类中的方法, 要尽量减少代码的重复,要尽量遵循开闭原则。
3.测试的理解与实践
①测试对于编码质量的重要性

  就拿水文检测那题来说,它对数据的检测较为严格,因为数据处理就需要严格的数据,如果我们不对输入的数据进行检测,不对编写的代码进行测试,就很难保证数据的准确性和可用性 ,我们需要通过测试来检测自己编写的代码是否能达到使用的标准。
②查阅资料,假设使用Junit进行程序的测试是否可行

  使用Junit进行程序的测试是可行的.JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。可以书写一系列的测试方法,对项目所有的接口或者方法进行单元测试。启动后,自动化测试,并判断执行结果, 不需要人为的干预;只需要查看最后结果,就知道整个项目的方法接口是否通畅;每个单元测试用例相对独立,由Junit 启动,自动调用。不需要添加额外的调用语句;添加,删除,屏蔽测试方法,不影响其他的测试方法。 开源框架都对JUnit 有相应的支持


4.课程收获
总结这四周来在OO方面的教训及收获

  在这四周的面向对象编程中,我发现自己对题目给出的类图依赖较大,思维也或多或少被禁锢,不能自己独立的想出完整的流程,还不能自主的设计程序,同时在这几次作业中,因为编程的不严谨,有一些错误花了好一些时间才修改过来。收获:我觉得设计一个程序,画出类图结构,可以让我们有一个完整的大体方向,加快我们的开发,UML类图是一个很好的工具。同时我也体会到程序的开闭原则,对拓展开发,对修改关闭,多运用抽象继承的知识,减少程序的耦合度,提高程序的扩展性。
5.对课程的建议
①第三阶段作业难度、题量的建议

  建议难度不要太大,题量可以多一点,基础知识要考查的到。同时希望题目能给出 测试点尽量直观一点,具体一点。
②课程内容讲解方面的建议

  希望以后的课能多请同学们进行分享交流,提升自我。老师能多讲讲一些例子,加深我们对知识的印象。同时PTA中的试题在结束之后希望能有一份参考,没做出来可以学习,做出来了可以对比,比较不足。

posted @ 2020-05-02 22:57  IOTANDME  阅读(117)  评论(0)    收藏  举报