1. 前言:
本次博客用于表述在学习面向对象知识的第二阶段中获得的知识总结, 还有表述一些在编程过程中获得的心得.
2. 作业过程总结:
1总结三次作业之间的知识迭代关系;
正则表达式
5-6 次作业中要求使用正则表达对数据进行合法的校验. 第五次作业要求在一串数字中提取关键数据, 而第六次作业这是在多现实里面提取每一项并对每一项的数据进行识别分析提取. 从易到难.
类间关系应用(关联, 聚合, 依赖, 继承)
本阶段学习中, 图像类的构建贯穿整个阶段.
从最基础的一个 4 个图形类设计到后面类间关系应用
继承与多态
在进行图形类设计中, 加入了继承与多态, 提高了程序的健壮性
ArrayList 类的应用
在对现有数据进行识别筛选提取时还需要分类, 通过 ArrayList 类将数据进行分组, 通过数组的方式进行储存
2如何通过作业逐步理解面向对象的封装性, 继承性与多态性三大技术特性;
封装性: 在处理数据的过程中, 由于数据的多样性和相似性, 不同的数据很可能在不同类之间含有不同的含义, 利用封装性能完成对数据的控制, 减少错误.
. 本阶段作业中, 在定义圆的类时, 构造方法中将参数的值赋给类内定义的 radius 时由于构造参数与类内 radius 类似, 造成数据赋值失败, 通过封装性能有效减免错误的发生.
this.radius = radius
继承性: 父类和子类的使用减少了数据的重复性, 同时通过继承的方式可以获取父类中的得到的数据
本阶段中并未要求我们从父类中提取数据, 只有将父类中的方法提取出来使用.
多态性: 指具有不同功能的函数可以使用相同的函数名, 这样就可以用一个函数名调用不同内容的函数. 在面向对象方法中一般是这样表述多态性: 向不同的对象发送同一条消息, 不同的对象在接收时
会产生不同的行为(即方法). 同继承性相同可以减少数据的重复性, 并且还增加了程序的灵活性, 增加了程序额可扩展性.
3作业过程中遇到的问题及解决方法
线程出错(NullPointerException)
原因: 类设计中构造方法未写导致线程出错
总结: 构造方法错误将导致线程出错
2. 正则表达式判断出错
原因: 计算机无法灵活分析目标
解决办法: 使用 (?= exp) 解决
3.ArrayList 使用问题
错误: Index n out of bounds for length
检查后发现原因: 在调用 add()方法时出错将导致 ArrayList 大小小于预计值, 当 index 大于实际长度时将导致报错.
通过调试可以检测 add()是否正常使用.
4. 运行超时
解决方案: 优化代码, 减少不必要的检测.
4每次作业花费的时间比例
本阶段第一次作业: 15h
本阶段第二次作业: 8h
本阶段第三次作业: 3h
5对编程过程的严谨性的认识及教训
认识: 编程过程需时刻保证严谨性, 否则小错成大错
教训: 莫名出错, 找不到
2.OO 设计心得
1对面向对象三大技术特性之间关系的理解
封装将数据变得可操作化
继承则提高数据复用性
多态则使不同数据有不同的处理
三者都是在提高数据效率.2面向对象设计的基本原则理解(单一职责原则及 "开 - 闭" 原则)
单一制作原则
功能细化, 每个类行使其独特的功能.
每个类功能独立, 当功能需要拓展时只需在某个类进行拓展, 而当某个功能存在 bug 时则可通过该功能的作用来确定他的类.
"开 - 闭" 原则
避免因为数据修改导致的错误.
3OO 编程思维的理解
将构成问题分解成各个对象, 建立对象是为了描述某个事物在步骤中的行为.
4类设计心得
每个类应该实行其独特的作用, 通过设计多个类可以提高代码的可读性.
3. 测试的理解与实践
1测试对于编码质量的重要性
测试有助于提高代码的质量. 在测试过程中, 通过输入不同情况的数据可以找到代码缺陷以及一些隐晦的错误, 从而改进代码, 提高代码的健壮性.
2查阅资料, 假设使用 Junit 进行程序的测试是否可行
可行;
先思考测试再变成可有效减少错误 4. 课程收获
总结这四周来在 OO 方面的教训及收获
5. 对课程的建议
1第三阶段作业难度, 题量的建议
1. 提高难度, 减少题目数, 每题知识点丰富, 充满联系
2. 增加题目数量, 细化分数, 通过迭代的方法提升难度.
2课程内容讲解方面的建议
现在挺好
来源: https://www.cnblogs.com/jieni1604912953/p/12818442.html