java 类图中常见的类与类的关系

平常项目中如果我们只是编写代码的话,基本上是用不到类图的,因为类图是在项目新建的时候需要的,能让我们更清晰的了解到各个类之间的关系,了解设计模式或者有架构方向发展的意向,类图是绕不过去的一个东西,由于本人项目中也是很少接触,所以需要从头开始学习,先整理一下类与类的关系以及类图的表示方法。

  1. 聚合关系(Aggregation)
    聚合关系是关联关系的一种特例,主要用来表示整体与部分的关系,且整体与部分可以有单独的生命周期,即部分离开整体可以单独存在,关联与聚合在语法生无法区分,只能根据具体的业务逻辑来进行区分,比较常用的例子就是公司与员工的关系。
    聚合关系在类图中如下:
    一个公司有n个员工,带有菱形与箭头的实线,菱形指向整体
    java 类图中常见的类与类的关系
  2. 关联关系 (Association)
    关联关系是一种拥有的关系,表示一个对象与另外一个对象有联系,通常将一个对象作为另一个对象的成员变量,常见的关联关系有:单向关联、双向关联、自关联等等。
    关联关系的类图是实线的普通箭头,箭头指向被拥有者。常用的例子如下:
    一个学校对应多个老师(单向关联),老师跟学生可以是多对多(双向关联)
    java 类图中常见的类与类的关系
  3. 组合关系 (Composition)
    组合关系也是关联关系的一种特例,但是关系比聚合关系要更强,也是强调整体与部分的关系,但是部分是完全依赖与整体的,离开整体的部分是不能单独存在的。比较常用的例子就是公司与部门的关系,没有公司,部门就不存在。
    实心菱形与带剪头的实线,菱形指向整体
    java 类图中常见的类与类的关系
  4. 依赖关系 (Dependence)
    依赖关系是一种使用的关系,相对来说关系没那么强,一般变现为一个类为另一个的方法中的参数,常用例子人有开车的技能,方法的参数为车,那么人就使用了车
    带箭头的虚线指向被使用者
    java 类图中常见的类与类的关系
  5. 泛化关系 (Generalization)
    泛化关系是一种继承关系,表示了一般与特殊的关系,它指子类如何特化父类的所有特征和行为,比较常用,常用的例子:动物与老虎
    带三角的箭头实现,箭头指向父类
    java 类图中常见的类与类的关系
  6. 实现关系 (Realization)
    实现关系是一种类与接口的关系,表示列是接口所有的特征和行为的实现。例子的话常用的就是协议与产品的关系。
    带三角箭头的虚线,箭头指向接口
    java 类图中常见的类与类的关系
    可以实现USB协议的一些方法