UML学习

一、类、接口的表现形式

在这里插入图片描述

抽象类:

在这里插入图片描述
另外一种表示方式为 类名是斜体

类之间的关系

1、泛化关系 (在java中表示为继承)
2、实现关系(体现在一个类实现一个接口)
3、依赖关系
4、关联关系
5、聚合关系
6、组合关系
泛化关系

表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系;,在Java中通过关键字extends来表示。
从子类指向父类。
在这里插入图片描述

public abstract class Father {

  Integer age;

  String name;
}


public class Son extends Father{

}

public class Daughter extends Father {


}
实现关系

体现在一个类实现一个(或多个)接口;Java中通过implements关键字来表示。
在这里插入图片描述

public interface Person {

}

public abstract class Father implements Person{

  Integer age;

  String name;
}
依赖关系

依赖关系表示一个类依赖于另外一个类的定义,依赖关系时是单向的。简单理解就是类A使用到了类B,这种依赖具有偶然性、临时性,是非常弱的关系。但是类B的变化会影响到类A。举个例子,如某人要过河,则人与船的关系就是依赖,人过河之后,与船的关系就解除了,因此是一种弱的连接。在代码层面,为类B作为参数被类A在某个方法中使用。
在这里插入图片描述

public interface Person {

  void toRiver(Ship ship);

}


public class Ship {

  //船只编号
  private String shipNum;
}

关联关系

关联关系体现的是两个类,或者类与接口之间的强依赖关系,这种关系很强烈,比依赖更强,不是偶然性的,也不是临时性的,而是一种长期性,相对平等的关系,表现在代码层面,为被关联的类B以类属性的形式出现在类A中**,也可能是关联类A引用了被关联类B的全局变量。
在Java中,关联关系是使用实例变量来实现的
在这里插入图片描述

public class Mother {

  private Son son;

  private Daughter daughter;

}

public class Daughter  {

}

public class Son  {

}
聚合关系

聚合关系是关联关系的一种情况。聚合关系表示整体与部分的关系。在聚合关系中,成员对象是整体的一部分,但是成员对象可以脱离整体对象独立存在。
代码实现聚合关系,成员对象通常以构造方法、Setter方法的方式注入到整体对象之中
如汽车(Car)与引擎(Engine)、轮胎(Wheel)、车灯(Light),Java表示为:
在这里插入图片描述

public class Engine {
}

public class Wheel {

}

public class Light {

}


public class Car {
    private Engine engine;
    private Light light;
    private Wheel wheel;
    
   // 构造   属性由外部传入
 public Car(Engine engine, Light light, Wheel wheel) {
        super();
        this.engine = engine;
        this.light = light;
        this.wheel = wheel;
    }
    
    public void drive() {
        
    }
}
组合关系

组合关系是关联关系的一种情况。比聚合更强,是一种强聚合关系。它同样体现整体与部分的关系,但此时整体与部分是不可分的,整体生命周期的结束也意味着部分生命周期的结束;反之亦然。如大脑和人类。
组合与聚合几乎完全相同,唯一区别就是对于组合,“部分”不能脱离“整体”单独存在。
代码实现组合关系,通常在 整体类的构造方法中直接实例化成员类,这是因为组合关系的整体和部分是共生关系,如果通过外部注入,那么即使整体不存在,那么部分还是存在的,这就相当于变成了一种聚合关系了。
在这里插入图片描述

public class Head {

}


public class Person {

  private Head head;

//构造  属性 直接创建对象
  public Person() {

    this.head = new Head();
  }

}

参考链接1
参考链接2
参考链接3
参考链接4

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值