OO第一作业周期(前四周)总结
- 0. 前言
本次博客主要用于总结使用java语言完成的三次作业。这三次作业由易到难,由浅入深,逐步体现了java的特点,让我对java有了浅薄的了解。
- 1. 作业总结情况
①总结三次作业之间的知识迭代关系:第一次作业比较简单,个人觉得和C语言作业差别不是很大。虽然从概念上来讲java是面向对象的语言,但完成此次作业时我更趋于面向过程。这次作业大概是对java基本语法的一个掌握吧。第二次作业稍微增加了一点难度,在Main类中除了main方法,根据题目规定和提供的已知条件使用了其它方法,所以虽然计算难度大于第一次,但通过调用本类中的其它方法,降低了复杂程度。所以第二次作业学习的是同类中的方法调用。不过第一次作业和第二次作业都只使用了一个类,可以说基本上还是面向过程解决问题。到了第三次作业,终于不再是一个类了,过渡到了两个类,对java的学习更深了一步。所以这三次作业是一个循序渐进的过程。
②如何通过作业逐步从面向过程过渡到面向对象:第二次作业到第三次作业是从面向过程过渡到面向对象。这两次作业的题目是差不多的,只是思路的不同。比如求一元二次方程这题(二,三次作业都有),前者:首先确定根的算法,编写一个方法,计算根的个数和值,再返回给主方法就好了,这其实是POP(面向过程的程序设计方法)思考。这里,程序并没有将数据和方法有效的组织在一起,而这里的类就成为了外壳,迫于java中必须定义类而定义的。后者是OOP(面向对象的程序设计方法)思考:首先把一个方程看成一个方程对象,方程有三个状态:a,b,c,两个行为:求根的值和求Δ,然后将所有方程的共性轴抽出来,设计一个方程类,通过方程所有行为,就可以求出根的值和Δ。这就是面向过程到面向对象的过渡。
③作业过程中遇到的问题及解决方法:比如将一组整数型数字存入数组中,我自己是相当迷惑的,这一组数字也不知道具体是几个,无法用if语句,我用while循环又一直错误,然后我就百度了学习到了一个很好的方法:
String inputStr=in.nextLine();
String[] strArray=inputStr.split(" ");
int[] num=new int[strArray.length];
for(int i=0;i<num.length;i++)
{
num[i]=Integer.parseInt(strArray[i]);
if(num[i]==0)
break;
}
然后就自己查资料理解它。其他题目时常还会有算法错误,然后我又不太会单步调试,只能一遍一遍的试,看代码再修改。
④每次作业花费的时间比例:我第二次作业花费的时间最长,不是它有多难,就是某个地方算错了,找错误都要很久,自然时间就长了。第一次作业一天半。第二次作业感觉两天半到三天,第三次作业大概一天半(因为后面三题差不多一样)。比例1:2:1
⑤对编程过程的严谨性的认识及教训:编程过程的确要很严谨,不然就容易错洞百出。我比较喜欢边写边想,往往效果不是很佳,所以最后老有一种自己感觉没问题,但答案总错误,然后自己找错误又无迹可寻。因为我的思路比较乱,没有系统的整理出来。
- 2. OO心得设计
①面向过程与面向对象的比较:面向过程:OOP,分析问题的解决步骤,而后用 函数 把步骤按顺序一一实现并调用即可。面向对象:POP,把构成问题的事务分解为各种对象,而建立对象的目的不是为了完成一个一个的步骤,而是描述某个事务在解决整个问题过程中发生的行为。
②面向对象设计的基本原则理解:单一职责原则:就一个类而 言,应该仅有一个引起它变换的原因,即一个类实现一个功能,也可以说是自己做自己的事情,不是自己的事情不去插手。开放关闭原则:通过扩展实现变化,而不是通过修改原有的代码来实现变化。里氏替代原则:在使用父类的任何地方都可以使用子类,并且不影响程序运行,也就是继承。
③OO编程思维的理解:面向对象是将客观事物和一些关系,抽象成具体的类,并为其设计属性和方法。
- 3. 测试的理解与实践
①测试对于编码质量的重要性:
作业中出现过无效边界值测试,最大值测试,最小值测试,正常值测试。各种测试可以检验处代码的错误点,使代码更加完善,保证了编码质量。
②假如让你设计测试用例,你会如何做
我会设置输入范围,超出范围则非法输入,测试多个特殊值和正常值以保证代码的完整性。
- 4. 课程收获
四周里,一开始对于面向对象挺迷惑的,但是通过几次作业的过渡,以及每堂课的课堂作业,让我已经能够区分面向过程和面向对象,并且能够在简单的题目里使用OO思想。
- 5. 对课程的建议
希望老师上课能稍微讲一下课堂作业,或者提供可参考的答案。多讲些类。
6.之后一阶段的学习计划
尽早完成作业,课外学习老师涉及不深的知识。我也会多花时间在java的练习上。

浙公网安备 33010602011771号