UML

UML类图是面向对象系统建模的核心工具,它通过不同的关系来描述类与类、类与接口之间的静态联系。下面这个表格帮你快速把握这六种核心关系。
关系类型
定义与关键区别
代码中的体现
UML表示
生活化示例
​​依赖 Dependency​​
一种临时性的“使用”关系。如果类A的变化会影响类B,则B依赖于A。
局部变量、方法的参数、静态方法调用
带箭头的虚线 ---->
人过河需要船(人依赖船)
​​关联 Association​​
一种结构性的长期“拥有”关系,比依赖更强。可以是单向或双向的。
成员变量(实例变量)
带普通箭头的实线 —->或无线/双箭头的实线
老师与学生(老师拥有学生列表)
​​聚合 Aggregation​​
一种“整体-部分”的​​弱​​关联关系,部分可以独立于整体存在。
成员变量(通过Setter方法或构造函数参数传入)
带空心菱形的实线,菱形指向整体 ◇—-
汽车与轮胎(轮胎可以卸下装到别的车上)
​​组合 Composition​​
一种“整体-部分”的​​强​​关联关系,部分与整体共存亡,生命周期一致。
成员变量(在整体的构造函数中实例化)
带实心菱形的实线,菱形指向整体 ◆—-
公司与部门(公司没了,部门也随之消失)
​​泛化 Generalization​​
​​继承​​关系,表示类与类之间的“is-a”关系。
在面向对象语言中使用extends(Java)或 :(C++)等关键字继承
带空心三角箭头的实线,箭头指向父类 ⏶——
老虎是动物的一种
​​实现 Realization​​
类​​实现​​接口的关系,约定类将实现接口的所有特征和行为。
在面向对象语言中使用implements(Java)等关键字实现接口
带空心三角箭头的虚线,箭头指向接口 ⏶ - - ->
大雁实现了“飞翔”接口
💎 核心关系梳理与记忆
理解这些关系的关键在于把握它们所体现的​​耦合度​​(类之间连接的紧密程度)强弱。这些关系的强弱顺序为:​​泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖​​

​​区分聚合与组合​​:判断核心是“​​部分能否脱离整体而独立存在​​”。例如,轮胎可以从未装到车上,或从一辆车换到另一辆车,这是​​聚合​​;而人的心脏不能离开身体独立工作,这是​​组合​​。从代码来看,组合关系中的部分通常在整体的构造函数内部被实例化,表明它们同时诞生

​​区分关联与依赖​​:判断核心是“​​是否以成员变量(属性)的形式存在​​”。关联是一种长期、稳定的结构关系,体现为类的属性;而依赖是一种临时性的使用关系,主要体现在方法内部

希望这些解释能帮助你更清晰地理解UML类图中的各种关系。如果你对某个具体关系或应用场景有进一步的疑问,我们可以继续探讨。

posted @ 2025-10-13 11:55  软工李文轩  阅读(7)  评论(0)    收藏  举报