JAVA第三阶段作业总结
前言
第七次作业:在给定的汽车手动风挡玻璃雨刷程序的基础上,对程序进行重构(Refactoring),使得程序可以对功能进行扩展。
第八次的作业:编写程序统计一个输入的Java源码中关键字(区分大小写)出现的次数。
第九次作业:编写程序,从键盘输入一个合法的表达式,对该表达式进行求值并输出。
作业过程总结
① 总结三次作业之间的知识迭代关系
- 第七次作业涉及的知识点主要是类的封装、继承、多态、抽象类、接口。第八次作业的题目必须使用List、Set或Map中一种或多种,如完全未使用如上接口;第九次作业主要练习类的继承、多态性使用方法以及接口的应用以及栈的使用使用两个栈(Stack),一个运算符栈,一个操作数栈。
② 如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性
封装性:作业的结构中会有不同的类,将对象的属性和行为(或方法)封装起来,而将对象的属性和行为封装起来的载体是类,类通常对用户隐藏其实现的细节,这就是封装,在Java中通常通过建立一个实体类,用来封装对象的属性和行为,具体操作不在main函数中出现。
继承性:简单来说就是使子类的对象拥有父类的全部属性和行为,同时可以增添自己的所特有的属性和行为以及改变父类行为的内容使其成为自己特有的行为。如果有大量的相似的类需要写 这样可以节省写共同具有的属性和方法代码的时间,有利于代码的复用。
多态性:表现在同一方法在不同类中具体过程不同。例如:在父类定义了getArea()的方法,继承父类的 圆类、球类等子类 的getArea()的具体操作并不相同。
② 作业过程中遇到的问题及解决方法
1、 在第七次作业中问题不大。
2、 第八次作业中,第一次自己构建对象类,有点复杂,还有过程中找错了关键字导致一直过不去测试点,通过重新百度关键字得到解决。
3、 第九次作业中对使用栈进行计算有点问题,通过上网查阅资料以及问同学解决。
三次作业花费的时间比例:
虽然第四次作业也不是很难,但是由于第一次接触,所以花费时间较长
所以时间比例为 1:1:1
③ 对编程过程的严谨性的认识及教训:
通过第八次作业查找关键字的作业中因为没有找对关键字而导致测试点无论如何也过不去。思维不够严谨,对判断输入的字段识别的并不符合要求。导致很多次出现不符合题目要求的结果出现。在使用正则表达式时情况要考虑全面,逻辑要严谨
OO设计心得
① 对面向对象三大技术特性之间关系的理解
面向对象三大技术特征分别是封装、继承、多态。
封装:就是隐藏对象的具体实现细节。是编写程序的最基本的操作。
继承:在封装的基础上实现使一个类拥有另一个类的属性以及行为。
多态:在有多个类继承同一个父类时候,子类们继承过来的方法具体实现步骤不同。
面向对象设计的基本原则理解(单一职责原则以及“开-闭“原则)
单一原则:考虑对象的属性行为,使其只实现自己应有的职责,使代码的复杂度下降,提高了类的可读写性和可维护性。
“开-闭“原则:实现应该对扩展开放,对修改关闭,其含义是说一个软件应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化的。
OO编程思维的理解
面向对象顾名思义就是考虑问题时候,要优先考虑应该拥有什么什么对象,而不是具体的方法,在考虑对象的属性行为和功能,最后考虑对象与对象之间的关系,使其结合起来实现具体功能,达到要求。
② 类设计心得
遇见问题时候,需要将问题分解,应该需要的对象(什么类),对象又应该有怎样的属性和方法,这时候就需要实现单一原则,考虑到类与类之间的关系,绝对是否实现继承等关系。
测试的理解与实践
① 测试对于编码质量的重要性
只有多多的测试不同的数据才能从数据的输出上判断代码的优劣,是否存在漏洞,如果提交的代码因为侥幸通过测试,代码并不是完整的需要改进,在使用代码时肯定会出现一些错误。只有多多测试才能让代码不断的优化,更加实用。
② 使用Junit进行程序的测试
需要新建一个测试类。测试的类名,通常是直接在需要测试的类名后加Test。
测试类中main函数前加入以下代码
import static org.junit.Assert.*;
import org.junit.Test;
测试的main函数中填写 需要测试的代码
测试的代码前要加上@Test
Junit测试用例不是用来证明你是对的,而是用来证明你没有错。
测试通过后,进度条会是绿色的,没有通过的是红色的。
课程收获
这四周来在OO方面的教训及收获:第四次作业水文数据校验及处理中因为写的杂乱,没有遵循单一原则,测试和修改起来很麻烦,很难知道问题出在哪里。收获表现在对正则表达式的应用更加熟练,更加深入了解了 面向对象 的知识。
对课程的建议
希望老师课堂上可以布置一些有趣的课堂作业,调起学生们的兴趣和动手欲望。

浙公网安备 33010602011771号