使用mermaid画类图
1.类与类之间的关系
mermaid类图关系语法
- 泛化(Inheritance)
- 一种
继承关系
,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。 - 箭头指向:带
三角箭头的实线
,子类指向父类
- mermaid语法:
A --|> B
- 一种
- 实现(Realization)
- 一种
类与接口
的关系,表示类是接口所有特征和行为的实现. - 箭头指向:
带三角箭头的虚线
,箭头指向接口
- mermaid语法:
A ..|> B
- 一种
- 关联(Association)
- 是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的
- 双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头
- 代码体现:成员变量
- 箭头指向:带
普通箭头的实线
,拥有者指向被拥有者
- mermaid语法:
A "1" --> "n" B
- 聚合(Aggregation)
- 整体与部分的关系,且部分可以离开整体而单独存在,如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在.
- 聚合关系是关联关系的一种,是
强关联
;关联和聚合在语法上无法区分,必须考察具体的逻辑关系 - 代码体现:成员变量
- 箭头指向:带
空心菱形的实心线
,菱形指向整体.
- mermaid语法:
A o-- B
- 组合(Composition)
- 是整体与部分的关系,但部分不能离开整体而单独存在.如公司和部门是整体和部分的关系,没有公司就不存在部门。
- 组合关系是关联关系的一种,是比聚合关系还要强的关系.
最强的关联关系
- 要求普通的聚合关系中
代表整体的对象
负责代表部分的对象的生命周期
- 代码体现:成员变量
- 箭头指向:带
实心菱形的实线
,菱形指向整体
- mermaid语法:
A "1" *-- "n" B
- 依赖(Dependency)
- 是一种使用的关系,即一个类的实现需要另一个类的协助
- 要尽量不使用双向的互相依赖
- 代码体现:局部变量、方法的参数或者对静态方法的调用
- 箭头指向:带
箭头的虚线
,指向被使用者
- mermaid语法:
A ..> B
2.各种关系的强弱顺序
泛化(类与继承关系) = 实现(类与接口关系)
>
组合(整体与部分的关系) > 聚合(整体与部分的关系) > 关联(拥有的关系)
>
依赖(使用的关系)
mermaid实现上述关系:
%%下面是mermaid代码:
classDiagram
class 动物{
+声明
+新陈代谢()
+繁殖()
}
class 鸟{
+羽毛
+下蛋()
}
class 鸭子{
+下蛋()
}
class 大雁{
+下蛋()
+飞()
}
class 企鹅{
+下蛋()
}
class 雁群
class 唐老鸭
class 气候
class 翅膀
class 氧气
class 水
class 飞翔
class 讲话
动物 ..> 氧气 :依赖
动物 ..> 水 :依赖
鸟 --|> 动物
大雁 --|>鸟
鸭子 --|>鸟
企鹅 --|>鸟
唐老鸭 --|>鸭子
雁群 "1" o-- "n" 大雁 :聚合
企鹅 --> 气候 :关联
鸟 "1" *-- "2" 翅膀 :组合
唐老鸭 ..|>讲话
大雁 ..|> 飞翔