类图中常用的六种关系:继承、实现、组合、聚合、关联、依赖

Mermaid表示法

https://mermaid-js.github.io/mermaid/#/classDiagram?id=defining-relationship

类型描述图例
<|--继承,Inheritance继承
<|..实现,Realization实现
*--组合,Composition组合
o--聚合,Aggregation聚合
<--关联,Association关联
--实线链接,Link (Solid)实线链接
<..依赖,Dependency依赖
..虚线链接,Link (Dashed)虚线链接

UML类图关系

UML,全称Unified Modeling Language,统一建模语言。

继承

继承关系又名泛化关系(Generalization),表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。

箭头指向:带三角箭头的实线,箭头指向父类

示例:

classDiagram
Animal <|-- Tiger
Animal <|-- Lion
Animal Tiger Lion

实现

实现关系就是接口和实现类之间的关系。类实现了接口中的抽象方法。

箭头指向:带空心三角箭头的虚线,箭头从实现类指向接口

示例:

classDiagram
University <|.. Tsinghua
University <|.. Peking
}
University Tsinghua Peking

组合

表示整体和部分之间的关系,但部分不能离开整体而单独存在

箭头指向:带实心菱形的实线,菱形指向整体

示例:

classDiagram
Body *-- Brain
Body *-- Heart
Body Brain Heart

聚合

表示整体和部分之间的关系,成员是整体的一部分,成员也可以脱离整体而存在

箭头指向:带空心菱形的实线,菱形指向整体

示例:

classDiagram
School o-- Teacher
School o-- Student
School Teacher Student

关联

表示类之间的引用关系

箭头指向:单向关联用一个带箭头的实线表示,箭头从使用类指向被关联的类;双向关联用没有箭头的实线来表示

示例:

classDiagram
Teacher -- Student
Student --> Course
Teacher -List<Student> students Student -List<Teacher> teachers -List<Course> courses Course

上图表示老师和学生之间的关系是双向的,一个老师可以有多个学生,一个学生也可以有多个老师。学生和课程之间是单向的,一个学生会学习多门课程,而课程是一个抽象的概念,它不拥有学生。

依赖

表示某个类依赖于另外一个类,通常表现为,某个类的方法的参数使用了另外一个类的对象

箭头指向:带箭头的虚线,箭头从使用类指向被依赖的类

示例:

classDiagram
Computer <.. Programmer
Programmer : +coding(Computer pc) void
Computer Programmer +coding(Computer pc) : void
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐