UML类图符号 各种关系说明以及举例

ZYNQ USB按键读写操作详解:从裸机到Linux系统的完整实现 USB接口在现代嵌入式系统中扮演着至关重要的角色,而按键作为最基础的人机交互设备,其与USB的结合能够实现丰富的应用场景。这种实现不仅适用于简单的键盘应用,还可以扩展为游戏控制器、专业输入设备或工业控制面板,展现了ZYNQ在嵌入式USB应用中的强大灵活性。:USB控制器需要准确的时钟源,通常使用外部33MHz晶振,并在Vivado中正确配置。结合ZYNQ的PL(可编程逻辑)和PS(处理系统)优势,可以创建创新的USB按键应用。本文详细介绍了在ZYNQ平台上实现USB按键读写的完整方案,涵盖了从。 阅读详情


更多内容关注微信公众号:fullstack888

UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等。

  • 依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。uml中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素。

  • 泛化(Generalization):通常所说的继承(特殊个体 is kind of 一般个体)关系,不必多解释了。uml中用带空心箭头的实线线表示Generalization关系,箭头指向一般个体。

  • 实现(Realize):元素A定义一个约定,元素B实现这个约定,则B和A的关系是Realize,B realize A。这个关系最常用于接口。uml中用空心箭头和虚线表示Realize关系,箭头指向定义约定的元素。

  • 关联(Association):元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。uml中用实线表示Association关系,箭头指向被依赖元素。

  • 聚合(Aggregation):关联关系的一种特例,表示部分和整体(整体 has a 部分)的关系。uml中用带空心菱形头的实线表示Aggregation关系,菱形头指向整体。

  • 组合(Composition):组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。uml中用带实心菱形头的实线表示Composition关系,菱形头指向整体。

1.1.1       依赖(Dependency):虚线箭头表示

1、依赖关系也是类与类之间的联结
2、依赖总是单向的。(#add 注意,要避免双向依赖。一般来说,不应该存在双向依赖。)
3、依赖关系在 Java 或 C++ 语言中体现为局部变量、方法的参数或者对静态方法的调用。

(软件开发中,往往会设计一些公用类,供别的类调用,如果这些公用类出问题了,那调用这些公用类的类都会因此而出问题。 两个元素之间的一种关系,其中一个元素(提供者)的变化将影响另一个元素(客体),或向它提供所需信息显示一个类引用另一个类)

方法参数示例:

public class Person
{
    void buy(Car car)
   {
       ...
    }
}

3dc0a1a00894d8b302448b1abdc47f73.png

表示方法:虚线加箭头

特点:当类与类之间有使用关系时就属于依赖关系,不同于关联关系,依赖不具有“拥有关系”,而是一种“相识关系”,只在某个特定地方(比如某个方法体内)才有关系。

依赖关系可以分为以下四类:

1)  使用依赖(Usage)表示客户使用提供者提供的服务以实现它的行为,包括:

  • 使用<<use>>--声明使用一个类时需要用到已存在的另一个类。

  • 调用<<call>>--声明一个类调用其他类的操作的方法。

  • 参数<<parameter>>--声明一个操作和它的参数之间的关系。

  • 发送<<send>>--声明信号发送者和信号接收者之间的关系。

  • 实例化<<instantiate>>--声明用一个类的方法创建了另一个类的实例。

2)  抽象依赖(Abstraction)表示客户与提供者之间用不同的方法表现同一个概念,通常一个概念更抽象,一个概念更具体。包括:

  • 跟踪<<trace>>--声明不同模型中的元素之间存在一些连接但不如映射精确。

  • 精化<<refine>>--声明具有两个不同语义层次上的元素之间的映射。

  • 派生<<derive>>--声明一个实例可以从另一个实例导出。

3)  授权依赖(Permission)表达提供者为客户提供某种权限以访问其内容的情形。包括:

  • 访问<<access>>--允许一个包访问另一个包的内容。

  • 导入<<import>>--允许一个包访问另一个包的内容并为被访问包的组成部分增加别名。

  • 友元<<friend>>--允许一个元素访问另一个元素,不管被访问的元素是否具有可见性。

4)  绑定依赖(Binding)较高级的依赖类型,用于绑定模板以创建新的模型元素,包括:

  • 绑定<<bind>>--为模板参数指定值,以生成一个新的模型元素。

1.1.2       关联(Association):实线箭头表示

1、关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法。
2、关联可以是双向的,也可以是单向的(#add还有自身关联)。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
3、在 Java 或 c++ 中,关联关系是通过使用成员变量来实现的。

public class 徒弟
{  


}


public class 唐僧
{
     protected: list<徒弟> tdlist;
}

ea04627dccd20992474170d91827665e.png 

表示方法:实线箭头

特征:表示类与类或类与接口之间的依赖关系,表现为“拥有关系”;具体到代码可以用实例变量来表示。(A类有一个成员变量保存的是B类的一个引用,也就是说由A类可以找到B类)

1.1.3       聚合(Aggregation):带空心菱形头表示

1、聚合关系是关联关系的一种,是强的关联关系。
2、聚合是整体和部分之间的关系,例如汽车由引擎、轮胎以及其它零件组成。
3、聚合关系也是通过成员变量来实现的。但是,关联关系所涉及的两个类处在同一个层次上,而聚合关系中,两个类处于不同的层次上,一个代表整体,一个代表部分。
4、关联与聚合仅仅从 Java 或 C++ 语法上是无法分辨的,必须考察所涉及的类之间的逻辑关系。

public class 引擎
 {


 }
public class 轮胎
 {


 }
public class 汽车
{
        protected:引擎 engine;
        protected:轮胎 tyre[4];
}

2c6e6aeaf6ffd9a09f5e20174afb6638.png 

表示方法:空心菱形头

特征:属于是关联的特殊情况,体现部分-整体关系,是一种弱拥有关系;整体和部分可以有不一样的生命周期;是一种弱关联;

1.1.4       组合(Composition):带实心菱形头的实线表示

1、合成关系是关联关系的一种,是比聚合关系还要强的关系。
2、它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

class 肢
 {
 }
 class 人
 {
        protected:  肢   limb[4];
 }

c9026c43d8d444257a969a178b51a618.png

表示方法:一般是实心菱形加实线箭头表示

特征:属于是关联的特殊情况,也体现了体现部分-整体关系,是一种强“拥有关系”;整体与部分有相同的生命周期,是一种强关联;

1.1.5       泛化(Generalization):

带空心箭头的实线线表示

泛化(下图)表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进行建模的UML元素。在Java中,用extends关键字来直接表示这种关系。

泛化关系表示类与类之间的继承关系,接口与接口之间的继承关系。如下图:

4f7dcd04ae427ef8126975c0e9ed29d3.png 

1.1.6       实现(Realization):空心箭头和虚线表示

实例(图I)关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。对Java应用程序进行建模时,实现关系可直接用implements关键字来表示。表达一种说明元素与实现元素之间的关系;

08d37d573ab015bcd7362360e32fe225.png

二、相互之间的区别

1.聚合与组合

(1)聚合与组合都是一种结合关系,只是额外具有整体-部分的意涵。

(2)部件的生命周期不同

聚合关系中,整件不会拥有部件的生命周期,所以整件删除时,部件不会被删除。再者,多个整件可以共享同一个部件。 
组合关系中,整件拥有部件的生命周期,所以整件删除时,部件一定会跟着删除。而且,多个整件不可以同时间共享同一个部件。

(3)聚合关系是“has-a”关系,组合关系是“contains-a”关系。

93a8b08775af40f5958ce89cefe2588f.png

  • “弱”包含表示如果部门没有了,员工也可以继续存在;

  • “强”包含表示如果部门没有了,员工也不再存在;

在做软件需求时,往往会将所有的包含关系画成“弱”包含,后面发现某些关系可以表示为“强”包含是,才转为实心菱形。

2.关联和聚合

(1)表现在代码层面,和关联关系是一致的,只能从语义级别来区分。

(2)关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的。

(3)关联是一种结构化的关系,指一种对象和另一种对象有联系。

(4)关联和聚合是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。

3.关联和依赖

(1)关联关系中,体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。

(2)依赖关系中,可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A。

4.泛化和实现

实现表示类对接口的实现关系,表示方式:用一条带有空心三角箭头的虚线指向接口。

泛化表示类与类之间的继承关系、接口与接口之间的继承关系,表示方式一条带有空心三角箭头的实线指向基类(父接口)。

5.综合比较

  这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:

          组合>聚合>关联>依赖

其中依赖(Dependency)的关系最弱,而关联(Association),聚合(Aggregation),组合(Composition)表示的关系依次增强。换言之关联,聚合,组合都是依赖关系的一种,聚合是表明对象之间的整体与部分关系的关联,而组合是表明整体与部分之间有相同生命周期关系的聚合。

而关联与依赖的关系用一句话概括下来就是,依赖描述了对象之间的调用关系,而关联描述了对象之间的结构关系。

- END -

推荐阅读:

你需要了解的网络协议

敏捷道路上的五大障碍

消息队列上云挑战与方案:腾讯云的 Apache Pulsar 实践

关于研发效能提升的思考

盘点市面上主流的时序数据库

7张图了解kafka基本概念

抽象、低内聚、难变更,你还在用“堆栈”组织代码?

8ab9ec0b1665bb5a64c95adcd0aa106d.png

关注:fullstack888

学习架构知识

互联网后端架构

24bc8e82115bd609ebdacb67db46778f.png

SKUA-GOCAD入门教程-第七节 点的创建与编辑3 本文介绍了四种从井数据创建点集的方法 阅读详情

相关推荐

瑞萨单片机-硬件I2C从设备

瑞萨单片机上实现I2C从机,根据主机发来的数据,从机返回或者保存数据2、R5F1115AxFL最多支持3个从设备地址(即可以作为三个从设备)3、从接收模式:直接将数据保存到RAM中,接收完再处理4、从发送模式:按照I2C读取传感器数据经验,主机读取从设备时,从设备需要立刻返回数据的,但是程序要如何实现一收到指令就返回特定的数据?(时钟拉伸)这里先跳过,我们先实现返回固定的数据。

qq_27893147的博客 3220

UML 图之类图关系符号

1、泛化(Generalization) 继承关系,箭头指向父类 2、实现(Realization)实现关系【箭头指向】:带三角箭头的虚线,箭头指向接口 3、关联(Association) 成员变量之间的拥有关系【箭头及指向】:带普通箭头的实心线,指向被拥有者 4、聚合(Aggregation)部分可以离开整体单独存在,成员变量的一种强关联关系 【箭头及指向】:带空心菱形的实心线,菱形指向整体 5、组合(Composition) 部分不能离开整体单独存在,成员变量之间的一种关系【箭头及指向】:带..

dontdong的博客 5111

稳压二极管选型指南:关键参数与电路稳定性优化

本文深入解析了稳压二极管在电路设计中的核心作用与选型要点。文章详细阐述了稳定电压、动态电阻、额定功耗等关键参数对电路稳定性的影响,并结合实战案例,提供了从需求分析到参数验证的系统化选型流程与优化策略,帮助工程师避免常见设计陷阱,实现电路稳定性优化。

weixin_29196891的博客 686

图文并茂,详细讲解UML类图符号、各种关系说明以及举例

作者:duanxzhttps://www.cnblogs.com/duanxzUML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚...

Java知音 1243

从服装打版到激光切割:二维异形件排版算法在实际生产中的避坑指南

本文深入探讨二维异形件排版算法在服装、家具等行业的实际应用,对比NFP和重叠移除两种核心策略的优缺点,并提供算法落地的五大实战陷阱与解决方案。通过案例分析和技术要点解析,帮助生产管理者提升材料利用率5%-15%,优化生产效率。

weixin_28717431的博客 416

接入 deepseek 实现AI智能问诊

必须包含user角色,用于传递用户输入。system角色可选,用于设置对话背景。多轮对话需要将历史记录添加到messages中。

weixin_51326478的博客 6541

UML几种关系的理解

UML 类图 UML常见关系

囚徒之困 1208

一文解释电路中常用电子元器件应用和选型01

电容和二极管是电路中最常用的两个电子元器件,种类和系列众多,这里简单总结一下应用场景和选型方式 电容(Capacitor) 电容的种类(20种以上)和应用非常广泛,但是我经常遇到的无非就是下面这几种: 应用 1.隔直流。 2.旁路(去耦) 3.耦合 4.滤波 5.温度补偿 6.计时 7.调谐 8.整流 9.储能 种类 1. 陶瓷电容 2. 云母电容 3. 铝电解电容 4. 钽

weixin_43904073的博客 2237

UML中类之间的六大关系

理解六大关系中在代码中的体现,就可以轻松的阅读设计模式 一、泛化关系(Generalization) 说明:这种关系就是面向对象语言中的继承关系,逻辑上可以用"is a"表示。 代码体现:子类继承父类。 UML符号:一条实线+空心箭头。 图示: 二、实现关系(Realization) 说明:和泛化关系相似,逻辑上也是用"is a"表示。区别在于实现关系继承一...

大迪deblog 1319

数据结构——滑动窗口

入:下标为 i 的元素进入窗口,更新相关统计量。如果 i < k−1 则重复第一步更新:更新答案。一般是更新最大值 / 最小值出:下标为 i−k+1 的元素离开窗口,更新相关统计量✔1. 定长子串中元音的最大数目✔2. 找到一个数字的 K 美丽值✔4. 子数组的最大平均数 |方法一:前缀和方法二:滑动窗口7. 得到 K 个黑块的最少涂色次数8. 爱生气的书店老板9. 几乎唯一子数组的最大和10. 长度为 K 子数组中的最大和11. 可获得的最大点数12. 最少交换次数来组合所有的1 ||

qq_68915288的博客 762

分享一个我自用的 Python 消息发送模块,支持邮件、钉钉、企业微信

🔥 分享一个我自用的 Python 消息发送模块,支持邮件、钉钉、企业微信

XiaoqiangClub的博客 478

UML中类之间的几种关系小结(包括类图之间关系符号符号)

由于最近这段时间一直在看设计模式,因此接触了很多类关系图,发现自己以前对于UML中类之间的关系的基础知识掌握的不是很牢固,因此,写一篇博文用来重温与巩固一下相关的知识。在面向对象程序设计时,类与类之间的关系主要分为继承,实现,依赖,关联,聚合,组合六种关系。其中前两种理解很简单,重点是比较容易混淆的后四种。继承(或叫泛化):指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能...

冬的博客 2万+

Ollama DNS 重新绑定攻击 (CVE-2024-28224)

一旦 DNS 重新绑定攻击成功,攻击者就可以对这些 API 进行排序,以读取 Ollama 运行的进程可访问的任意文件数据,并将这些数据泄露到攻击者控制的系统中。完成对“创建模型” API 请求的调用后,Ollama 将收集组成新创建的用户模型的许多工件,包括大型语言模型数据、许可证数据等,以及我们要提取的文件,所有这些都可以通过其 SHA256 内容进行寻址。这是我们要窃取的文件,在我们的示例中,是可通过运行 Ollama 的主机上的路径名访问的现有文本文件。值得注意的是,该模型配置为通过参数中的。

技术超强的网络安全平台 1648

详解:UML类图符号、各种关系说明以及举例

详解:UML类图符号、各种关系说明以及举例 文章目录详解:UML类图符号、各种关系说明以及举例1.1.1 依赖(Dependency):虚线箭头表示1.1.2 关联(Association):实线箭头表示1.1.3 聚合(Aggregation):带空心菱形头表示1.1.4 组合(Composition):带实心菱形头的实线表示1.1.5 泛化(Generalization):带空心箭头的实线线表示1.1.6 实现(Realization):空心箭头和虚线表示二、相互之间的区别 UM

qq_43383323的博客 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java uml类图举例_UML类图符号 各种关系说明以及举例

UML中描述对象和类之间相互关系的方式包括:依赖,关联,聚合,组合,泛化,实现等。表示关系的强弱:组合>聚合>关联>依赖相互间关系聚合是表明对象之间的整体与部分关系的关联,而组合是表明整体与部分之间有相同生命周期关系的聚合。而关联与依赖的关系是,依赖描述了对象之间的调用关系,而关联描述了对象之间的结构关系。依赖(Dependency):虚线箭头表示依赖(Dependency):元...

weixin_39632728的博客 272

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

[转发]UML类图符号 各种关系说明以及举例

[转发]UML类图符号 各种关系说明以及举例 UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等。 依赖(Dependency):元素A的变化会影响元素B...

fgmah2000的博客 192

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

UML类图符号:各种关系说明以及举例

点击上方「蓝字」关注我们UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Compositio...

天行健,君子以自强不息;地势坤,君子以厚德载物。 422

转UML类图符号各种关系说明以及举例

转UML类图符号各种关系说明以及举例 UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realiza...

136
上一篇: 你需要了解的网络协议
下一篇: Uber 如何为近实时特性构建可伸缩流管道?
qianshanding0708
博客等级 码龄11年 427粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值