0.前言

在一次次大作业的折磨下,Java课即将结束。在这样特殊的大环境下,我们所有的课程都是采用网课的形式。同时也感谢于网课,让上课打瞌睡的我,或是第一次没听懂的我,都有了一个看回放的机会。

在这一学期的学习中,我解决问题的能力有了一定的提升。这一学期,我的学习状况大概如下。

1.作业过程总结

(1) 作业之间的迭代关系

本课程的大作业难易程度由易到难,从开始为了让我们的思想从面相过程转为面向对象的简单题目,到中间给我们参考类图自己构思,到最后完全由自己设计。

(2) 作业过程中遇到的问题及解决方法

课程的初期,困扰我的问题无非是一些不熟悉的语法问题,通过CSDN一点一点了解

到中期变成概念性的问题,继承,多态,分装。这些不仅要听懂老师课上对概念的讲解,还要自己动手在下面亲手操作。

最后,问题就不在那么具体了。前面知识储备不充足编程能力不扎实就被完全暴露出来,面对庞大的知识体系,这个时候该怎么设计才是最正确最完美的、该用哪一个类才可以达到我的目的。这个问题的解决可能需要我之后的努力与对知识的巩固才可以做到。

(3) 作业花费的时间比例

由于作业一次比一次难,花费的时间也一次比一次多,比较起来,每当作业中涉及到正则表达式时,时间就出奇的长。

(4)认识与教训

通过几次作业,我深刻的认识到了逻辑严谨性的重要性。它不同于其他问题,错哪儿改哪儿,它更是宏观上的问题,可能你每一步都没有什么错误,但答案一定是错的。

2.oo设计心得

Java有三大基础特性

封装

封装,就是将抽象的数据类型和操作隐藏起来,构成一个不可分割的部分。

使用封装有三大好处:

1、良好的封装能够减少耦合。

2、类内部的结构可以自由修改。

3、可以对成员进行更精确的控制。

继承

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

多态

多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

而实现Java多态有三个必要条件:继承、重写、向上转型。

继承:在多态中必须存在有继承关系的子类和父类。

重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。

向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。

这些知识与心得都让编写过程变得更有条理。

面向对象还遵循以下原则:

1.开闭原则

对扩展开放------- 模块的行为可以被扩展从而满足新的需求。

对修改关闭-------不允许修改模块的源代码(或者尽量使修改最小化)

2.单一原则

单一原则表明,如果你有多个原因去改变一个类,那么应该把这些引起变化的原因分离开,把这个类分成多个类,每个类只负责处理一种改变。当你做出某种改变时,只需要修改负责处理该改变的类。当我们去改变一个具有多个职责的类时可能会影响该类的其他功能

3.接口隔离原则

接口隔离原则表明客户端不应该被强迫实现一些他们不会使用的接口,应该把肥胖接口中的方法分组,然后用多个接口代替它,每个接口服务于一个子模块。

4.里氏替换原则

里氏替换原则是对开闭原则的扩展,它表明我们在创建基类的新的子类时,不应该改变基类的行为。

5.依赖倒转原则

上层模块不应该依赖于底层模块,它们都应该依赖于抽象。

抽象不应该依赖于细节,细节应该依赖于抽象。

6.迪米特法则

迪米特法则(Law of Demeter)又叫最少知识原(Least Knowledge Principle LKP),就是说一个对象应当对其他对象有尽可能少的了解。

7,组合/聚合复用原则

聚合表示整体与部分的关系,表示“含有”,整体由部分组合而成,部分可以脱离整体作为一个独立的个体存在。组合则是一种更强的聚合,部分组成整体,而且不可分割,部分不能脱离整体而单独存在。

3.测试的理解与实践

比起c语言,在这里我更加理解到了测试的重要性。给一些正常数据、边界值数据进行测试,都可能会发现不一样的结果,发现问题。Debug模式也是我在java中感受到的新天地,找对方法去使用确实方便却许多。

4.课程收获

经历了三个多月的学习,从完全不了解面向对象想象的小白,到对Java的语法与大致框架有一定了解的人。尤其是在做设计雨刷系统的大作业时,我感觉到了不同。第一次在实验课上碰到这个题目时,对这个题目的设计云里雾里,也不清楚为什么要搞得“更加复杂”;当后面它作为大作业出现时,有了之前的理解,再加上题目给的类图,整个思路豁然开朗。但大多数时候,我都是面对着毫无感情的类图,无从下手。就这样,在一次次的大作业中成长、蜕变,这种成就感让我很快乐。我就是这样在Java课程中痛并快乐着。

5.对课程的建议

平时的大作业很耗时,这也意味着我们自学的过程大大增加,我认为用平时成绩代替期末考试的方法要比期末一锤定音的方法科学的多。