常见UML符号详解

我们学习设计模式,会碰到设计模式UML类图,但是其中的相关符号看不懂怎么办呢,需要我们对常见UML符号进行简单的归纳。

类之间关联图

人类属于动物,但是人会思考(think);人通过实现Swim,IFly接口,获得了游泳和飞翔能力;文学俱乐部是个由人组成的群体,每个成员都才华横溢;PeopleA是一位成功的气候学家,因此他了解天气的变化。


类之间关联图

相关的修饰符

public ,private ,protected

public

+ 表示

private

- 表示

protected

# 表示

相关的元素

类,接口,字段,方法

单个类图,一般分三层,第一层表示类的名称;第二层表示类的特性,通常就是字段和属性;第三层是类的操作,通常是方法或行为。

接口

接口类似单个类图也分三层,第一层表示接口的名称;第二层表示接口的特性,通常就是字段;第三层是接口的操作,通常是方法或行为。

表示方式有两种

  • 顶部有 <>显示:如IFly接口
  • 棒棒糖表示法:如Swim接口

字段

表示方式:修饰符 字段名:字段类型
例如:

  • - name:String
  • + sex:String
  • # age:int

方法

表示方式:修饰符 方法名(参数类型 参数):返回值类型
例如:

  • - think():void
  • # work(int type): void
  • + playGame(int type): String

相互关系

继承(extends),实现(implement),关联(Association),聚合(Aggregation),合成(Composition),依赖(Dependency)。

继承(extends)

继承有的文章使用泛化(Generalization)来表示。
定义:

  • 接口与接口之间的继承关系
  • 类与类之间的继承关系

表示方式:
带三角箭头的实线空心三角形,箭头指向父类


Extends

例子:人继承动物的相关特性

People Extends Animal

实现(implement)

定义:

  • 类对接口的实现关系

表示方式:
带三角箭头的虚线,箭头指向接口


implement

例子:人实现IFly接口,拥有飞翔能力

IFly接口

关联关系(Association)

定义:

  • 是一种拥有的关系,它使一个类知道另一个类的属性和方法,当一个类‘知道’另一个类时,我们可以说它们之间相互关联;
  • 双向关联:可以有两个箭头或者没有箭头(不推荐);
  • 单向关联:有一个箭头,且箭头方向指向被关联的对象;

代码体现:成员变量

表示方式:
实线箭头,且箭头指向被拥有者


Association

例子:如PeopleA了解天气变化

PeopleA了解天气变化

聚合(Aggregation)

定义:

  • 一种弱的‘拥有’关系,体现的是 A 对象可以包含 B 对象,但 B 对象不是 A 对象的一部分;
  • 整体与部分的关系,如文学俱乐部全体成员与文学俱乐部成员

代码体现:成员变量

表示方式:
带空心菱形的实心线,菱形指向整体


Aggregation

例子:文学俱乐部全体成员与文学俱乐部成员


文学俱乐部全体成员与文学俱乐部成员

注意关联关系和聚合关系的不同点:

  • 关联关系所涉及的两个类处于同一个层次上;
  • 聚合关系所涉及的两个类处于不平等的层次上(一个代表整体,一个代表部分)

合成关系(Composition)

定义:

  • 一种强的‘拥有’关系,体现了部分与整体的关系,它们拥有相同的生命周期

代码体现:成员变量

表示方式:
带实心菱形的实线,菱形指向整体


Composition

例子:人由头、手等其它部分组成


人由头、手等其它部分组成

依赖(Dependency)

定义:

  • 依赖是单向的,通常以方法参数的形式、局部变量的形式,及对静态方法调用的形式出现

代码体现:方法参数,局部变量,静态方法

表示方式:
虚线箭头来表示


Dependency

例子:动物依赖水,没有水就会失去生命


动物依赖水,没有水就会失去生命

各关系的强弱顺序

继承=实现>组合>聚合>关联>依赖

类图XML文件

类的关联图(需要使用https://www.draw.io/打开)

参考资料

设计模式之基础篇UML(类图)
大话设计模式

你可能感兴趣的:(常见UML符号详解)