前五周我们学习了类的相关内容,包括一些常见的类、类与类之间的关系、类设计的原则等内容,而这些内容也伴随着雨刷问题的不断深入、pta作业、学习通实验等不断得到巩固。为了进一步巩固学习内容,也为了整合自己所学,现在主要通过雨刷问题串联前五周知识点。
第一次雨刷问题
在这一次作业中,我们分别用C语言、Python、Java三种语言写这道题,也算是承上启下了,因为我们上个学期学习了C语言和Python,这学期学Java。这次作业需要我们用函数来实现相关内容,因为我们之前说学的C语言中并没有类的概念,这导致了用Java写起来非常别扭,这也让我意识到了类对于Java来说是多么重要的存在。
第二次雨刷问题
在这次作业中,我们改进了上一次的作业,主要用函数来实现相关内容改进成了用类来实现,类图如下:

通过这次作业我们主要学习到了类的定义、类的组成和构造方法
定义: class 类名{
}
组成:属性、方法
构造方法: public 类名() {
}
第三次雨刷问题
在引入Java面对对象的三大特征之一封装后,我对上一次的作业进行了改进,即在原有的基础上用private将各个属性私有化,而实现封装并尝试采用MVC设计模式,类图如下:

在封装后,便会带来一个问题,即对其他类属性的访问,在上一次作业中是直接用 类名.类的属性 来获取和改变该属性的值,但将其private后,此方法就行不通了,因此我们引入了getter和setter的方法来实现私有属性的访问。
同时,我们也引入了MVC设计模式,即M:Model (实体类,Entity)、V:View (接口类,GUI)、C:Controller (控制类,Control)
第四次雨刷问题
本次作业类图如下:

在此之前我们学习了多种类与类的关系:依赖关系(Dependency)、关联关系(Association)、聚合关系(Aggregation)、组合关系(Composition)、继承关系(泛化关系 Generalization)、实现关系(Realization)
区分类与类之间的关系,用从语义上而不是语法上。
耦合性强弱:组合 > 聚合 > 关联 > 依赖
并且,在这次作业中,我们也尝试运用了设计模式中的单例模式
而之后我们也学习了一些Java设计模式:简单工厂模式、工厂方法模式、抽象工厂模式等
同时我们也,学习到了学到一些类的设计原则,如下:
单一职责原则:一个类只负责一项职责
迪米特法则:1.不要和陌生人说话(实体类之间一般都是陌生人) 2.只和你的直接朋友通信 3.最少知识原则
里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能
合成复用原则:在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现
依赖倒置原则:要依赖抽象,不要依赖具体 要依赖接口,不要依赖编程
开闭原则:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭
接口隔离原则:一个接口里的方法越少越好(所以一个接口就一个方法)
第五次雨刷问题
类图如下:

在这次作业中,我们尝试运用了继承关系 class 子类 extends 父类 {},也引用了super:
1.子类想用到父类的东西时,需要用到super.
2.在子类构造方法的第一行(只能)用super()调用父类对应的构造方法为了创建子类对象时,先初始化父类型特征
同时也引入了抽象类 abstract class类名{} ,抽象类不能实例化对象,抽象方法需要在子类中@Override复写
其他
1.接口
public interface 父类{}
class 子类 implements 父类1,父类2...{}
应用场合:对于行为/方法的抽象,区别抽象类(对于实体的抽象)
特点:支持多继承
2.容器
(1)Array
String[] array = {}
//输出
for(String data:array){
Systrm.out.print(data + " ");
}
System.out.println("")
//排序(升序)
java.util.Arrays.sort(array);
(2)list
定义:ArrayList list = new ArrayList();//查找数据时用 LinkedList list = new LinkedList();//增删时用
泛型:把类型做参数 LinkedList<Integer> list = new LinkedList()<Integer>;
输出:for(int i = 0; i < list.size();i ++){ };
(3)String StringBuffer StringBuilder
字符串连接效率: StringBuilder > StringBuffer > String
涉及变长字符串用StringBuilder、StringBuffer,在涉及多线程用StringBuffer
3.八种基本变量类型
int long short char float double byte boolean
4.一些修饰符
private public protected default static final(不能继承) abstract class interface extends implements Object(Object类是所有类的父类) this super
学习状态总结
这五个星期的学习状态比上个学期好了非常多,具有较高学习积极性,但网课的学习没有线下学习的效果好
浙公网安备 33010602011771号