【UML】类图Class Diagram

1、面向对象

面向对象分析:OOA(Object-Oriented Analysis)
面向对象设计:OOD(Object-Oriented design)

面向对象分析和面向对象设计的核心问题是怎么抽象对象。类图就是用来表示对象,可以表示对象的属性、行为以及对象之间的关系。

Inheritance继承
Composition组合
Aggregation聚合
Association关联
Link(Solid)实线直连
Dependency依赖
Realization实现
Link(Dashed)虚线直连
classA
classB
classC
classD
classE
classF
classG
classH
classI
classJ
classK
classL
classM
classN
classO
classP

2、类之间的关系

2.1 关联

最简单关联关系如下图,类图之间是一条直线连接,也可以称为“直线”关系。在需求分析时,暂时不知道两个类之间是啥关系,就先画条直线,等对项目进一步了解后,再添加箭头、一对一或一对多的信心。

classA
classB

“箭头”关系:classA可以找到classB,比如classA(a)的一个成员变量b是classB的引用,a.b

Association关联
classA
classB

2.2 包含

包含关系分两种,弱包含和强包含,分别用空心的菱形和实心的菱形表示,菱形靠近主体这边。标准叫法是聚合(弱包含)和组合(强包含)。

Composition组合
Aggregation聚合
classA主体
classB子体
classE主体
classF子体

“弱”体现在如果主体没有了,子体还能继续存在,比如人和衣钵,人没了,衣钵还能给别人。
“强”体现在如果主体没有了,子体也不能存在了,比如人和器官,人没了,器官也就没了。
如果处于医学的角度考虑到器官移植,那么人和器官也就成了“弱”包含的关系。
一般画UML图时,先视为弱包含,等确定为强关系后,再将菱形涂黑即可。

2.3 继承

继承关系好理解,龙生龙凤生凤老鼠的孩子会打洞,都体现了继承关系。如下图,classB继承了classA,classB将具有classA的非私有的属性和方法。也可以反过来理解,classB抽象(泛化)为classA。

Inheritance继承
classA
classB

标准UML中,继承是空心的三角箭头,但是在Markdown中使用语法创建的继承图显示的是实心的三角箭头。

2.4 依赖

酒鬼依赖酒、烟民依赖烟,依赖关系使用虚线箭头表示。

Dependency依赖
酒鬼

2.5 关联类

当两个类的关键属性有相同的,并且无论单独放到某一个类中都不太合适,可以考虑使用关联类。即将某些属性抽象到关联类中。

class1
class2
AssociationClass

【UML】类图Class Diagram_第1张图片

2.6 实现

类和对象的关系,可以使用下图表示,但是一般不使用。

Realization实现
对象

3、博客中绘制UML

参考网址:https://mermaid-js.github.io/mermaid/#/classDiagram

3.1 语法:

//```mermaid
classDiagram
classA --|> classB : Inheritance继承
classC --* classD : Composition组合
classE --o classF : Aggregation聚合
classG --> classH : Association关联
classI – classJ : Link(Solid)实线直连
classK …> classL : Dependency依赖
classM …|> classN : Realization实现
classO … classP : Link(Dashed)虚线直连

3.2 示例

Cool
Where am i?
«interface»
Class01
int chimp
int gorilla
size()
AveryLongClass
Class09
C2
C3
Class07
Object[] elementData
equals()
Class10
>>service>>
int id
size()
Animal
+int age
+String gender
+isMammal()
+mate()
Duck
+String beakColor
+swim()
+quack()
Fish
-int sizeInFeet
-canEat()
Zebra
+bool is_wild
+run()

你可能感兴趣的:(设计模式,uml)