通俗易懂的UML类图
背景
小明去动物园看动物,来简述整个UML的认知过程
基础定义
根据上面事实,我们将了解UML类途中的几种关系:Inheritance (继承) ,Realization(实现),Association(关联),Aggregation(聚合),Composition(组合),Dependency(依赖)
UML类的基本认识
在开始之前我们先认识下UML类的基本特征
对于属性和方法前面的修饰符 - + 等,具体是一下含义
- - private 任何其他类和子类都不可访问
- + public 可以被任何类进行访问
- #protected 相同类或其子类存取
- ~ package/default 同一个包中
继承
有了上面对类的基本理解,我们再看下不同实体之间的关系。
Inheritance 继承关系
-
作用:它指定了子类如何特化父类的所有特征和行为,例如:老虎是动物的一种
-
箭头指向:带三角箭头的实线,箭头指向父类,符号用下面的表示
假设动物园有花豹、老虎、长颈鹿,分别对应Leopard、 Tiger、 Giraffe,他们有自己的名字、编号、年龄已经他们都可以吃东西,可以抽象为三个实体类
三个实体我们可以抽出一个共用的Animal父类,三个子类分别继承 name id age.. 属性和方法,可以用UML继承关系表示,如下
另外,对于抽象类,我们可以类名变斜体Animal;或者类名加 <
>
关联
Association 关联关系
-
关联关系:关联关系比较简单,比如东北虎会捕食野猪作为食物,那么老虎和野猪就是关联关系
-
箭头指向:关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头,带普通箭头的实心线,指向被拥有者
聚合
Aggregation 聚合关系
-
作用:是整体与部分的关系,并且部分可以存在于整体之外,如一群乌龟和一只乌龟之间的关系
-
箭头指向:带空心菱形的实心线,菱形指向整体
比如动物园中的一群乌龟,我们可以定义为Creep类,他与乌龟有关系,并且仍然可以独立存在
组合
Composition 组合关系
-
组合关系:是整体与部分的关系,但是他是比聚合关系还要强的关系,要求普通聚合关系的整体部分的声明周期代表部分的生命周期
-
箭头与方向:带实心菱形的实线,菱形指向整体
比如动物园的 Visitor Center (访客中心),会有 Lobby (大厅) 和 Bathroom (厕所), Lobby 以及 Bathroom 与 VC之间就是组合关系,现实世界里,Lobby不可能脱离VC单独存在,Bathroom也不可能脱离VC单独存在
另外,VC和lobby之间,VC和bathroom之间在数量级上,也有对应的一对一、一对多等关系。
eg:
- 0..1 zero to one
- n specific number
- 0..* zero to many
- 1..* one to many
- m..n specific number range
因此,一个VC中对应一个lobby,对应至少一个bathroom
依赖
Dependency 依赖关系
-
依赖关系:是一种使用关系,尽量不要使用双向依赖
-
箭头与方向:带箭头的虚线,指向被使用者
zookeeper (动物圆管理员) 使用computer(计算机)系统管理每个屋子的温度
总结
总结以上的关系强度 继承>组合>聚合>关联>依赖,我们可以看下全部的关系图。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)