阅读 149

UML类图快速对照

前言

让时光积累真正的价值

最近一直会看到一些类图,大概是类图看得少的原因,很多连线我都不知道什么意思。需要经常要来回百度。为了节约看UML类图的时间,我记录这一篇笔记,供自己参考。

怎样分辨类和类之间的关系

类图与类图之间的连线代表了类之间的关系。基本上有6种连线。

简便起见,就不使用真正的类图了,使用矩形代替。

泛化关系——实线空心三角形箭头

说白了就是继承关系,B类继承A类,B与A就有泛化关系

在Java中,继承关系常常表现为extends关键字

interface A{
    ...
}
class B extends  A{
    .......
}
复制代码
实现关系——虚线空心三角形箭头

简单的来说就是一个类实现了另外一个类的接口。

在Java中实现关系常常表现为implements关键字

class A{
    ...
}
class B implements A{
    .......
}
复制代码
依赖关系——虚线箭头:

表示依赖,箭头指着被依赖的实体(依赖,一个节点是另外一个节点的一部分)

在Java中,依赖关系常常表现为局部变量,方法的参数等等

class A{
    ...
}
class B {

    //方法A依赖类A
    public void methodA(A a){
        .........
    }
}
复制代码
关联关系——实线箭头:

关联,表示对象与对象之间的连接。关联关系使得一个对象知道另外一个对象的的属性和方法。

在Java中,关联关系常常使用实例变量(类属性)来表示

class A{
    ...
}
class B {
    private A a;
    .......
}
复制代码
聚合关系——空心菱形+实线+箭头

聚合关系是关联关系的特例,是强的关联关系,是个体和整体的关系。

注意:个体和整体是独立可分离的。比如部门和员工(员工可以脱离部门独立)

在java聚合关系也是使用实例变量来表示,一般会使用一个集合来装载个体(一对多关系)。

class A{
    ...
}
class B {
    private List<A> aArray;
    .......
}
复制代码
组合关系——实心菱形+实线+箭头

聚合关系可以看作是聚合关系的强化版,个体是不能脱离整体独立存在,就像人和手的关系。

不能用从语法上直接区分聚合关系和组合关系,只能从对象间的逻辑关系来区分。

补充说明

泛化关系和实现关系很常见,也很容易辨认出来。依赖关系、关联关系、聚合关系、组合关系之间的耦合程度依次提高。

怎么画UML类的实体

一般来说,常用的类图有有两种,一种是接口的类图,另外一是普通类图

普通类类图

类图分有三个方格,不同的方格表示不同的内容。

第一个方格——类名
第二个方格——类的属性

这里有很多行,每一行对应的一个属性

+ attribute1:type = defaultValue
复制代码
  • 第一个“+”的位置用来表示属性的可见性。其中:

  • “+”对于的是public

  • “-”对应的是private

  • “#”对应的是protected

  • attribute1表示属性的名字

  • type对应的是属性的类型

第三个方格——类的方法

跟属性类似,一行表示一个方法,方法的可见性同样使用“+”、“-”、“#”来表示。

方法的括号中需要加上参数列表

接口类图

接口类中是没有属性的,和普通的类图相比,接口的类图就是把第二个方格删除掉。