面向对象程序设计_第二阶段总结

1.前言:

  本次博客用于表述在学习面向对象知识的第二阶段中获得的知识总结,还有表述一些在编程过程中获得的心得。

2.作业过程总结:

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

  • 正则表达式    

  5-6次作业中要求使用正则表达对数据进行合法的校验。第五次作业要求在一串数字中提取关键数据,而第六次作业这是在多现实里面提取每一项并对每一项的数据进行识别分析提取。从易到难。

  • 类间关系应用(关联、聚合、依赖、继承)

  本阶段学习中,图像类的构建贯穿整个阶段。

  从最基础的一个4个图形类设计到后面类间关系应用

  • 继承与多态

  在进行图形类设计中,加入了继承与多态,提高了程序的健壮性

 

  • ArrayList类的应用

  在对现有数据进行识别筛选提取时还需要分类,通过ArrayList类将数据进行分组,通过数组的方式进行储存

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

    封装性:在处理数据的过程中,由于数据的多样性和相似性,不同的数据很可能在不同类之间含有不同的含义,利用封装性能完成对数据的控制,减少错误。

·     本阶段作业中,在定义圆的类时,构造方法中将参数的值赋给类内定义的radius时由于构造参数与类内radius类似,造成数据赋值失败,通过封装性能有效减免错误的发生。

    this.radius = radius

  

    继承性:父类和子类的使用减少了数据的重复性,同时通过继承的方式可以获取父类中的得到的数据

        本阶段中并未要求我们从父类中提取数据,只有将父类中的方法提取出来使用。

 

    多态性:指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时

        会产生不同的行为(即方法)。同继承性相同可以减少数据的重复性,并且还增加了程序的灵活性,增加了程序额可扩展性。

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

  1. 线程出错(NullPointerException)

 

 

   原因:类设计中构造方法未写导致线程出错

   总结:构造方法错误将导致线程出错

 

  2.正则表达式判断出错

  原因:计算机无法灵活分析目标

  解决办法:使用(?= exp)解决

  

 

 

 

 

 

 

  3.ArrayList使用问题

  错误:Index n  out of bounds for length

  

 

 

   检查后发现原因:在调用add()方法时出错将导致ArrayList大小小于预计值,当index大于实际长度时将导致报错。

   通过调试可以检测add()是否正常使用。

 

  4.运行超时

  解决方案:优化代码,减少不必要的检测。

 

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

    本阶段第一次作业:15h

         本阶段第二次作业:  8h

         本阶段第三次作业:3h

 

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

    认识:编程过程需时刻保证严谨性,否则小错成大错

    教训:莫名出错,找不到

  2.OO设计心得


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

    封装将数据变得可操作化

    继承则提高数据复用性

    多态则使不同数据有不同的处理

    三者都是在提高数据效率。
  ②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)  

  • 单一制作原则

      功能细化,每个类行使其独特的功能。

      每个类功能独立,当功能需要拓展时只需在某个类进行拓展,而当某个功能存在bug时则可通过该功能的作用来确定他的类。

  • "开-闭"原则  

   避免因为数据修改导致的错误。

 

  ③OO编程思维的理解

    将构成问题分解成各个对象,建立对象是为了描述某个事物在步骤中的行为。

    
  ④类设计心得

    每个类应该实行其独特的作用,通过设计多个类可以提高代码的可读性。

 

3.测试的理解与实践


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

    测试有助于提高代码的质量。在测试过程中,通过输入不同情况的数据可以找到代码缺陷以及一些隐晦的错误,从而改进代码,提高代码的健壮性。


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

    可行;

    先思考测试再变成可有效减少错误
4.课程收获


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


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

   1.提高难度,减少题目数,每题知识点丰富,充满联系

 

   2.增加题目数量,细化分数,通过迭代的方法提升难度。


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

   现在挺好

posted @ 2020-05-02 16:08  jieni_160  阅读(188)  评论(0编辑  收藏  举报