前五周我们学习了类的相关内容,包括一些常见的类、类与类之间的关系、类设计的原则等内容,而这些内容也伴随着雨刷问题的不断深入、pta作业、学习通实验等不断得到巩固。为了进一步巩固学习内容,也为了整合自己所学,现在主要通过雨刷问题串联前五周知识点。

第一次雨刷问题

  在这一次作业中,我们分别用C语言、Python、Java三种语言写这道题,也算是承上启下了,因为我们上个学期学习了C语言和Python,这学期学Java。这次作业需要我们用函数来实现相关内容,因为我们之前说学的C语言中并没有类的概念,这导致了用Java写起来非常别扭,这也让我意识到了类对于Java来说是多么重要的存在。

 

第二次雨刷问题

  在这次作业中,我们改进了上一次的作业,主要用函数来实现相关内容改进成了用类来实现,类图如下:

 

   通过这次作业我们主要学习到了类的定义、类的组成和构造方法

  定义:   class 类名{

       }

  组成属性方法

  构造方法:  public 类名() {

         }

第三次雨刷问题

  在引入Java面对对象的三大特征之一封装后,我对上一次的作业进行了改进,即在原有的基础上用private将各个属性私有化,而实现封装并尝试采用MVC设计模式,类图如下:

 

   在封装后,便会带来一个问题,即对其他类属性的访问,在上一次作业中是直接用 类名.类的属性 来获取和改变该属性的值,但将其private后,此方法就行不通了,因此我们引入了gettersetter的方法来实现私有属性的访问。

  同时,我们也引入了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 

学习状态总结

  这五个星期的学习状态比上个学期好了非常多,具有较高学习积极性,但网课的学习没有线下学习的效果好

 

 

 

  

posted on 2022-04-03 16:56  不知明月照何人  阅读(46)  评论(0)    收藏  举报