UML的六大关系---泛化、实现、关联、聚合、组合、依赖

文章目录

  • 前言
  • [1. 泛化关系(Generalization)](#1. 泛化关系(Generalization))
  • [2. 实现关系(Realization)](#2. 实现关系(Realization))
  • [3. ‌关联关系(Association)](#3. ‌关联关系(Association))
  • [4. 聚合关系(Aggregation)](#4. 聚合关系(Aggregation))
  • [5. 组合关系(Composition)](#5. 组合关系(Composition))
  • [6. 依赖关系(Dependency)](#6. 依赖关系(Dependency))
  • 总结

前言

讲到设计模式,就会有 U M L UML UML类图这个东西。

一开始就很难理解各种线啥意思,这里做一个笔记记录一下。

同时如果我的设计专栏博客里面对类图有些问题的话,这里可以做一下回顾。


1. 泛化关系(Generalization)

表示一般与特殊的关系,通过带空心三角形的实线表示,指向父类。

例如,动物和老虎的关系,其中动物是父类,老虎是动物的一个具体类型。‌

在C++中,继承关系其实就是泛化关系。

2. 实现关系(Realization)

表示类与接口之间的关系,通过带空心三角形的虚线表示,箭头指向接口。例如,一个操作接口有绘画接口,Person类有Draw去实现。

这个实现就相当于虚函数,子类重载函数。

3. ‌关联关系(Association)

表示类与类之间的联系,通过实线表示。关联可以是双向的或单向的,通过箭头表示方向。

例如,老师与学生之间的关系,老师有多个学生,每个学生也有多位老师,双向关联。

一个学生只拥有一张床,单向关联。

4. 聚合关系(Aggregation)

表示整体与部分的关系,部分可以离开整体单独存在。通过带空心菱形的实线表示,菱形指向整体。

例如,汽车与轮胎的关系,轮胎可以脱离汽车独立存在。‌

5. 组合关系(Composition)

也是整体与部分的关系,但部分不能离开整体单独存在。通过带实心菱形的实线表示,菱形指向整体。例如,人和心脏的关系。可以理解为心脏、血液、骨骼...组成了一个人

6. 依赖关系(Dependency)

表示一个类使用另一个类。通过带箭头的虚线表示,箭头指向被使用的类

例如,人雕刻要用工具,人相当于依赖工具。

最后贴一个我看书的一个总的图,结合了各种关系。上面六种明白了之后,考虑一下总图。

下面这幅图能看明白,后面看设计模式的类图都算是比较easy了。

总结

六种关系的熟悉是学习设计模式的基础。

这里做一个记录,后面如果有遗忘,做一个回顾。

相关推荐
高亦真3 分钟前
今天是学习嵌入式的第37天
linux·学习·算法
软件课代表CiCi16 分钟前
运行库是什么?电脑缺运行库怎么办?c++运行库缺失修复全攻略
开发语言·c++·windows·电脑·dll修复·dll丢失·运行库
蒸蒸yyyyzwd2 小时前
从面经中学到的三件事
c++·笔记
时时三省2 小时前
【时时三省】计算机c语言二级考试选择题重点
c++
泡泡鱼(敲代码中)3 小时前
Python 字符串 str 完整学习笔记
python·学习
ThornArmor4 小时前
重铸1996|肉体渲染:关节的裂缝:分段模型积木拼装与未成熟的 RSP 矩阵骨骼动画形变
c语言·汇编·c++·python·硬件架构·游戏机
kyrie_sakura4 小时前
python学习笔记15 -- Anaconda,Jupyter,numpy
python·学习·jupyter·numpy
Elsa️7466 小时前
算法一周刷题总结
c++·算法
风合星语6 小时前
2026 机器人工程实例(五):让 Allegro Hand 在 MuJoCo 中完成接触抓取——抓取状态机、稳定抬升与受控释放
c++·python·机器人·仿真
小羊没烦恼!6 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#