UML 中的六大关系详解

UML类图类之间的关系 根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关系,关联关系,聚合关系,组合关系,泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。 1、依赖关系 依赖(Dependency)关系是一种使用关系,它是对象之间耦合度最弱的一种关联关系,是临时性的关联。在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。 在UML类图中,依赖关系使用带箭头的虚线来表示,箭头从使用类指向被依赖的类。 图 4 所示. 阅读详情

UML中的六大关系

  在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。
在这里插入图片描述

1、 继承关系—泛化(Generalization)

  指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中用extends关键字。

clip_image001

【泛化关系】 是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:猫头鹰是鸟的一种,即有鸟的特性也有猫头鹰的共性。

【箭头指向】 带三角箭头的实线,箭头指向父类。

【描述】 上图中的类bird有嘴、翅膀、羽毛等属性。会飞、会唧唧喳喳的叫,那么就有这些方法。而猫头鹰有大眼睛和捕捉老鼠的本领,这则是自身的特性。

2、 实现关系(Realization)

  指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识。

clip_image003

【实现关系】 是一种类与接口的关系,表示类是接口所有特征和行为的实现.

【箭头指向】 带三角箭头的虚线,箭头指向接口。

【描述】 上图中IFly是一个接口,接口中有时间、速度等常量,还有一个fly方法。FlyImpl继承了这个IFly接口后,需要实现fly方法,同时实现类也可以拥有自己的属性和方法。

3、 依赖(Dependency)

  可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数、属性被类A在某个method方法中使用;
clip_image005

(注:图中依赖关系有误,应由 bird 指向 IFly,详情见:IBM文档—UML 中的依赖关系)
【依赖关系】 是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。

【代码表现】 局部变量、方法的参数或者对静态方法的调用

【箭头及指向】 带箭头的虚线,指向被使用者

【描述】 Bird类中有一个setFly方法,它需要使用者用到IFly接口的实现,那么这种关系就是依赖关系。

4、 关联

  他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;
clip_image007

【关联关系】 是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

【代码体现】 成员变量

【箭头及指向】 带普通箭头的实心线,指向被拥有者

【描述】 在Bird类中有一个IFly类型的fly属性,需要提供IFly的接口实现。Bird对象会利用IFly接口的实现完成fly方法。

4.1、双向关联

  双方都知道对方的存在,都可以调用对方的公共属性、方法。
clip_image002
【关联关系】 双方都有关联的关系,通过自身对对方关联的属性来访问对方的属性和方法。

【代码体现】 成员变量

【箭头及指向】 用不带箭头的实线连接双方

【描述】 在中国一个妻子只能嫁给一个丈夫,一个丈夫也只能取一个妻子。

4.2、自身关联

  自己关联自己,这种情况比较少出现但是也有用到。
clip_image004

【自关联关系】 双方都有关联的关系,通过自身对自身关联的属性引用来访问对方的属性和方法。

【代码体现】 成员变量

【箭头及指向】 用带普通箭头的实线连接自己

【描述】 在盗梦空间中,演员需要在梦中再造梦,这种梦中梦的情况跟上图描述很符合。

5、 聚合(Aggregation)

  聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
clip_image009

【聚合关系】 是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

【代码体现】 成员变量

【箭头及指向】 带空心菱形的实心线,菱形指向整体

【描述】 birdChild一只鸟有很多鸟宝宝,所以自引用。鸟有很多不同数量和颜色的羽毛,所以引用关系是0~*。

6、 组合(Composition)

  组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
clip_image011
【组合关系】 是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

【代码体现】 成员变量

【箭头及指向】 带实心菱形的实线,菱形指向整体

【描述】 一个学校由多个班级组成,班级离开学校也就不存在、而学校离开班级也不成立。像这种不可分离的关系就需要用组合。

示例

clip_image013

  对于继承、实现这两种关系没多少疑问,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准备定位是很难的,前面也提到,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖。

UML——Unified modeling language UML (统一建模语言) 文章目录1: UML基本介绍2: UML图3: UML类图3.1 类图—依赖关系(Dependence)3.2 类图—泛化关系(generalization)3.3 类图—实现关系(Implementation)3.4 类图—关联关系(Association)3.5 类图—聚合关系(Aggregation)3.6 类图—组合关系(Composition) 1: UML基本介绍 UML——Unif... 阅读详情

相关推荐

UML类图关系详解:依赖、关联、聚合、组合、泛化与实现

面向对象设计中,类与类之间的关系是静态结构建模的核心。依赖、关联、聚合、组合、泛化与实现六种关系,分别对应不同的耦合强度与生命周期语义。理解这些关系的代码表现与画法,能有效避免设计歧义与耦合隐患。在订单系统、库存管理等场景中,正确区分聚合与组合、关联与依赖,是保证模型准确性的关键。本文深入拆解UML类图关系,结合代码落地与实操案例,帮助开发者掌握面向对象建模的底层逻辑。

weixin_30047059的博客 259

UML-类图学习

原文地址:http://www.cnblogs.com/silent2012/archive/2011/09/07/2169946.html1、什么是类图类图(Class diagram)主要用于描述系统的结构化设计。类图也是最常用的UML图,用类图可以显示出类、接口以及它们之间的静态结构和关系2、类图的元素在类图中一共包含了以下几种模型元素,分别是:类(Class)、接口(Interface)、依

Programming is an art form. 941

UML类图六大关系详解:从依赖到组合,掌握面向对象设计核心

在面向对象编程中,理解类与类之间的关系是构建清晰、可维护软件架构的基础。这些关系本质上定义了对象之间的协作方式,直接影响代码的耦合度、复用性和扩展性。从最松散的依赖关系到最紧密的组合关系,每种关系都有其特定的语义和适用场景。掌握这些核心概念,能帮助开发者在设计阶段更好地规划模块结构,避免后期出现高耦合、难维护的代码。例如,依赖关系通过方法参数或局部变量实现临时协作,体现了低耦合的设计思想;而组合关系则描述了整体与部分同生共死的强关联,常用于表达严格的所属关系。在实际工程实践中,如电商系统的订单与商品管理、支

weixin_30512965的博客 261

【UML】类图及其六种关系,超详细介绍,细节满满

类图的介绍及其六种关系

hffh123的博客 1万+

UML类图六大关系详解:泛化、实现、依赖、关联、聚合、组合

在软件设计与系统架构中,UML类图是表达对象间静态结构的通用语言,其中的类与类连线往往决定了设计的清晰度。理解泛化、实现、依赖、关联、聚合、组合六大关系,是掌握类图语义的关键。聚合与组合常因空心菱形与实心菱形的细微差别而混淆,判断依据在于整体与部分的生命周期是否绑定;依赖则表现为方法参数或局部变量的临时使用,与长期持有的关联关系形成对比。正确区分这些关系,不仅能提升架构文档的准确性,还能指导代码解耦与模块划分。无论是绘制技术方案、评审设计模型,还是备考系统架构师,都需要在实际业务场景中反复运用。本文以电商订

weixin_42575505的博客 314

UML事务关系图详解:类图六大关系与PlantUML实战指南

在软件设计与系统建模中,理解实体间的关联是构建可靠架构的基石。UML类图作为表达静态结构的核心工具,通过依赖、关联、聚合、组合、泛化与实现六种关系,将业务规则转化为精确的设计语言。正确区分聚合与组合的生命周期语义、准确标注多重性约束,不仅影响代码的职责划分与数据库外键设计,更决定了系统在面对需求变更时的扩展弹性。从概念澄清到关系判定,再到PlantUML文本化建模实践,本文以快递柜业务为案例,展示了如何将模糊需求逐步推导为清晰的事务关系图,并提供了从图到表结构映射、循环依赖排查等工程落地经验。无论你是备战系

weixin_33960567的博客 278

UML 类图及六大关系详解:继承、实现、依赖、关联、聚合、组合(Java+类图)

本篇文章系统讲解 UML 类图中的六大关系:依赖、关联、聚合、组合、继承(泛化)与实现。通过清晰的代码示例与图形说明,帮助你掌握它们的本质区别与绘制原则,并在实际开发中选择最合适的关系表达方式。

2301_80038984的博客 7763

从代码到图表:用PlantUML语法在IDEA里画UML类图,比Visio香多了(含六大关系详解)

本文详细介绍了如何使用PlantUML语法在IntelliJ IDEA中高效绘制UML类图,替代传统拖拽工具如Visio。通过代码化设计,开发者可以精确表达UML六大关系,实现版本控制友好的设计迭代,提升团队协作效率。文章包含核心语法精要、高级建模技巧和工程化实践指南。

weixin_26911099的博客 289

UML类图六大关系详解:从依赖到组合的设计核心

在面向对象设计与系统建模中,理解类与类之间的关系是构建清晰、可维护软件架构的基础。这些关系基于不同的耦合度与生命周期语义,定义了对象之间的交互方式。从最临时的依赖关系到最紧密的组合关系,每一种都对应着特定的设计意图与代码实现模式。掌握这些关系不仅能提升代码质量,还能有效支持微服务架构、模块化设计等现代工程实践。例如,依赖关系体现了低耦合的临时协作,而组合关系则表达了严格的整体-部分生命周期绑定。通过精确运用这些关系,开发者可以更好地进行系统建模、规避设计缺陷,并在团队协作中实现高效沟通。本文聚焦UML类图中

weixin_31856057的博客 340

Java基础高级进阶篇五之UML统一建模语言(详解四十四)

是统一建模语言的缩写,是一种用于软件系统可视化建模的标准语言。核心目标以图形化方式描述软件系统提供标准化的建模符号支持从需求到实现的全过程促进团队沟通与理解PlantUML 是一个开源工具,可以使用文本描述来创建 UML 图。优点文本即图表,易于版本控制支持所有常用 UML 图可集成到 IDE 和文档工具代码可读性强。

萧瑟余晖的博客 164

图像质量评估:使用 SSIM 计算图像相似性

在图像处理领域,衡量两幅图像之间相似性的一种常见方法是使用结构相似性指数(SSIM)。SSIM 是一种全参考的图像质量评估指标,它不仅考虑了图像的亮度、对比度,还考虑了结构信息。在本文中,我们将介绍一个使用 Python 和 OpenCV 实现的 SSIM 计算脚本,并使用该脚本评估两幅图像的相似性。

hasque2019的博客 1153

UML类图六大关系详解:从泛化到组合的代码与图元对照

统一建模语言(UML)是软件架构设计中用于可视化系统结构的标准工具,类图作为其核心视图,通过六大静态关系——泛化、实现、依赖、关联、聚合、组合——精确描述类与类之间的耦合程度与生命周期语义。理解这些关系不能仅靠背箭头图例,而应从代码特征出发:继承看extends,接口看implements,成员变量持有对应关联,而聚合与组合的差异在于整体对部分生命周期的管理方式。这些知识不仅是系统架构师考试的高频考点,也是后端工程师在领域建模、代码评审和类图绘制中避免设计误判的实用技能。结合IDEA自动生成类图、StarU

weixin_28709649的博客 348

海康威视摄像头CVE-2017-7921漏洞复现:从零到一的实战指南(含解密工具下载)

本文详细解析了海康威视摄像头CVE-2017-7921漏洞的技术原理与复现方法,提供从环境搭建到实战利用的完整指南。通过认证绕过漏洞,攻击者可获取敏感信息并执行高权限操作,文章还包含解密工具下载与防御建议,助力安全研究人员深入理解物联网设备安全风险。

weixin_29325515的博客 810

详解UML六大关系(依赖、类属(继承)、关联、实现、聚合和组合)

详解UML六大关系(依赖、类属(继承)、关联、实现、聚合和组合) UML定义的关系主要有六种:依赖、类属、关联、实现、聚合和组合。这些类间关系的理解和使用是掌握和应用UML的关键,而也就是这几种关系,往往会让初学者迷惑。这里给出这六种主要UML关系的说明和类图描述,一看之下,清晰明了;以下就分别介绍这几种关系: 1、继承 指的是一个类(称为子类、子接口)继承另外的一个类(称为...

abble32189的博客 368

麦当劳app之sign逆向分析

摘要:本文分析了麦当劳APP请求参数sign的逆向过程。通过抓包发现32位sign参数疑似MD5加密,使用frida-trace工具跟踪CC_MD5函数验证其为标准MD5算法。加密参数包含时间戳、token、版本号等固定和动态字段,拼接后经MD5加密生成sign。文章提供了JS和Python两种实现方案,包含完整的请求头参数和加密逻辑,最终成功获取API响应数据。该研究仅用于逆向技术学习,展示了移动应用常见加密参数的逆向分析方法。

佛系更新... 2437

告别Godot默认编辑器:手把手教你用VSCode配置C#开发环境(附中文注释避坑指南)

本文详细介绍了如何将VSCode配置为Godot引擎的C#开发环境,提升游戏开发效率。从环境准备、扩展配置到解决中文编码问题,提供完整的避坑指南和高级调试技巧,帮助开发者充分利用VSCode的智能补全和调试功能,打造高效工作流。

weixin_30596023的博客 189

[轉]详解UML六大关系(依赖、类属(继承)、关联、实现、聚合和组合)

类和类之间的依赖、关联、聚合、组合关系 一、继承关系 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口。 二、实现关系 实...

weixin_34279184的博客 662

【实战指南】从零构建UNet多分类分割数据集:标注、转换与训练全流程

本文提供了一份从零构建UNet多分类分割数据集的完整实战指南。详细介绍了使用Labelme进行图像标注的核心技巧与规范,并通过Python脚本将标注结果转换为模型可用的VOC格式。最后,指导如何修改经典的PyTorch版UNet代码,以适配自定义数据集并进行训练与测试,帮助读者完成从数据准备到模型训练的全流程。

arduino9maker的博客 287

UML类图六大关系详解:从代码语义到设计实践,彻底理清泛化、实现、依赖、关联、聚合与组合

在面向对象设计与系统建模中,类图是描述软件结构的重要工具,而理解类与类之间的关系——泛化、实现、依赖、关联、聚合与组合——是每个开发者从编码迈向架构设计的关键一步。泛化对应继承,实现对应接口,依赖体现方法中的临时使用,关联则表现为字段引用,聚合与组合进一步划分整体与部分的生命周期绑定性。掌握这些关系的判断标准,不仅有助于绘制规范的UML图,更能指导代码设计中的耦合度控制与扩展性优化。从订单系统到策略模式,类图关系广泛应用于需求分析、架构评审与代码重构等场景。本文结合代码实例与工具操作,系统拆解六种关系的箭头

weixin_29722783的博客 240

【Android 11】使用Android Studio调试系统应用之Settings移植(五):编译Settings 模块、解决编译错误

基于Andorid 11,系列第5篇文章,本章开始,终于轮到解决正主Settings的编译问题了,使用android studio编译出Settings.apk,能看到这一章的同学,也着实不容易了,再接再厉

上周的博客 3919

基于YOLO系列的安全帽检测系统:从理论到实现的完整指南

安全帽检测作为计算机视觉在工业安全领域的重要应用,近年来得到了广泛关注。本文详细介绍了基于YOLOv5、YOLOv6、YOLOv7和YOLOv8的安全帽检测系统的完整实现方案,包括算法原理、数据集构建、模型训练、性能优化以及完整的UI界面设计。通过对比分析不同YOLO版本的性能差异,本文为工业安全检测系统的开发提供了全面的技术参考和实践指导。

YOLO 364

UML之关系详解

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

fanxiaobin 1万+

qt项目中添加 jsoncpp 库

qt使用jsoncpp库

deroy 1349

别再死记硬背了!用Spring Boot项目实战,5分钟搞懂UML类图6大关系

本文通过Spring Boot实战项目,详细解析UML类图的6大关系,包括关联、聚合、组合、依赖、泛化和实现。通过图书馆管理系统的代码示例,展示如何从实际编码中自然体现这些关系,帮助开发者摆脱死记硬背,真正掌握UML类图的设计精髓。

weixin_30756499的博客 511

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: 大厂面试题之TCP三次握手与四次挥手,这样回答没问题
下一篇: 阿里云CentOS7 %Cpu达到100us,kthreaddi进程处理(已解决)
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值