前言
本次博客是针对java第一阶段学习(java基本语法 面向对象基础 类与类之间的关系--包含 依赖)的总结,以及前三次作业的自我总结。
作业过程总结
第一阶段三次作业之间的关系:
1)第一次作业:
第一次作业的5道编程题主要考察的是java的基本语法(if-else)的使用,如:计算税率,判断坐标点所在范围,电话键盘字母数字转化,判断三角形的类型这些主要都是要利用到if-else语句的使用。而我们知道,java里的if-else的使用与C语言中if-else的使用基本一致,还是比较简单的。
2)第二次作业:
第二次作业的4道编程题主要考察的是循环,选择,方法,数组的使用,这次最主要的特点是通过设计方法实现需求,在java里通常将C语言里面的函数称之为方法,而两者之间最大的不同就是,java里可以方法重载(overload),方法重写(override)。
通过这次作业,我们还可以看到java中数组的创建与C语言数组的创建有很大不同, 在java中我们需要new一个对象。
3)第三次作业:
相比于前两次作业,第三次作业的难度有很大的提升。第三次作业主要是将第二次作业通过设计类来实现。主要考察的是类与对象的定义,构造方法的重载与使用,属性和方法,类的设计原则以及类与类之间的关系,培养我们的面向对象编程思想。
总结:
可以看出这三次作业的难度是层层递进的,从第一次作业熟练if-else的使用到第二次作业熟练java基本语法(循环,选择,方法,数组)的使用,再到第三次作业真正用到面向对象编程的思想 通过设计类来实现需求。从面向过程递进到面向对象,感受到了面向对象与面向过程的区别。
作业过程中遇到的问题及解决方法
1) Question1:1-1计算税率问题第11个测试点不通过
Solution1:经过测试发现代码中写的一个数据与图表中的数据不一致
2) Question2:2-2判断闰年及星期几闰年1月 闰年4月末这两个测试点未通过
Solution2:星期四个单词写错成Thurday,改为Thursday
3) Question3:2-4求前N天 前0天测试点未通过
Solution3:没有考虑n=0的情况
4) Question4:3-3设计类时编译时出现java.lang.NullPointException(空指针异常)
Solution4:做题目时这个空指针异常困扰了许久,后来在网上查了下,出现空指 针异常有如下原因:
字符串常量未初始化
接口类型对象没有用具体的类初始化
下面是几个实例:
int[][] array = new int[3][]
array[0][0] =10;
Person p = null;
p.getName();
3.每次作业花费的比例
1)第一次作业相对较简单,花费的时间较少2-3小时
2)第二次作业相比于第一次作业较难,花费的时间较多8-9小时
3)第三次作业难度大幅提升 花费的时间最多写了两天(20小时以上)
4.对编程过程的逻辑严谨性的认识及教训
这三次编程作业,对于编程过程的严谨性我是有着很深刻的体会,特别是在前两次作业当中,1-1的计算税率问题,找一个测试点的错误,找了大半天,因此还修改了一些代码,但修改代码的结果于事无补,到最后才发现是代码中的数据写错,与图表中的数据不匹配。
还有2-2的日期设计问题,星期四的英文单词都写错误,这个错误找了很久。在我们做题中,一个小小的错误可能会搞得我们心态不好,最后连做题的兴趣都会没有。所以,在编程过程中,一定要非常非常严谨。
OO设计心得
面向过程与面向对象的比较
面向过程的编程
解决问题的时候按照一定的过程(流程)
以过程为核心的编程思想,没有面向对象这么丰富(继承 多态 包含 依赖)
理解为 将大的过程---->拆分成很多小的过程 每个过程是那些事物做的
面向对象的编程
解决问题的时候按照现实生活中的规律来考虑问题
以对象为核心的编程思想
考虑在这个问题的过程中---->有几个实体参与进来
理解为 实体动作动作的支配者---> 没有实体动作就发生不了
面向对象设计的基本原则理解
通过网上的一些文献,了解到了面向对象设计的基本原则包括开闭原则,用组合代替继承,依赖倒置原则,单一职责原则,接口隔离原则,李式替换原则。
而就我目前所学习的单一职责原则谈谈我的一些理解,所谓单一职责原则就是一个类只做一件事,这样可以使的代码更具有可读性,复用性更高,单一职责原则也是高内聚的体现。
3.OO编程思维的理解
对于面向对象编程思维的理解,我认为主要是不断通过对象去做事情。解决问题的时候要按照现实生活中的规律来考虑问题,考虑在这个问题的过程中有几个实体参与进来,然后再去分析每一个类个体都有什么特点,做了哪些事情。
测试的理解与实践
1.测试对于编码的质量的重要性
测试可以帮助我们找寻代码中的问题所在,也可以帮助我们优化代码,这样提高了代码的质量,增强了代码的可读性和复用性。
2.假如让你设计测试用例,你会如何做
增加减少代码运行时间的限制、限制代码行数这些测试点,这样有助于提高我们优化代码的能力。
课程收获
第一阶段在OO方面的教训与收获
教训:在这一阶段的学习过程中,经常会犯一些空指针异常错误,经常调用为初始化的
对象。
收获:理解了面向过程与面向对象的差异,注重培养面向对象编程思想,还要培养良好 的编程习惯,如运算符两边要用空格隔开。
课程建议
挺喜欢老师这种上课模式,老师可以一边讲的同时我们也可以一边动手去操作,这样一来,有问题就可以立马提出来。但同时希望老师每次上课可以更快的切入这堂课的主要知识点。