UML 关系类型:关联、依赖、泛化

⚡ 智能摘要

UML关系连接结构、行为和组ping 模型要素,展示对象在执行过程中如何相互依赖。本资源解释了关联、依赖、泛化、实现、组合和聚合,并为每种类型提供了符号和实际示例。

  • 🔗 协会: 对象之间相互连接的结构性联系,约束和多样性决定了参与的数量。
  • ➡️ 依赖: 一种单向关系,其中供应商要素的变化可能会影响依赖客户。
  • 🌳 概括: 实现通用实体与专用实体之间继承的父子关系。
  • 🧩 实现: 接口连接trac其中,一个实体定义责任,另一个实体执行责任,以规范形式或省略形式表示。
  • 💠 组成与聚集: 整体与部分的关系;组合会随着整体的消亡而破坏部分,而聚合则会让部分比整体存活更久。

UML关系类型

什么是UML关系?

UML 中的关系 用来表示结构、行为或群体之间的联系ping 事物。它也被称为链接,用于描述两个或多个事物在系统执行过程中如何相互关联。UML 关系类型包括关联、依赖、泛化和实现。

让我们详细研究一下

UML 类图关系的类型

UML 类图关系

社区

它是连接 UML 模型元素的一组链接。它还定义了参与该关系的对象数量。

依赖

依赖关系,顾名思义,是指两个或多个元素相互依赖。在这种关系中,如果我们对某个元素进行更改,则所有其他元素也可能会受到该更改的影响。

推广

它也被称为父子关系。在泛化中,一个元素是另一个通用组件的特化。它可以替代它。它主要用于表示继承。

实现

在 UML 的实现关系中,一个实体表示一些不由其自身实现的责任,另一个实体则实现这些责任。这种关系主要出现在以下情况下 接口。

社区

它是一种结构关系,表示对象可以与系统内的另一个对象连接或关联。可以对关联关系应用以下约束。

  • {隐式} – 隐式约束指定关系不是明显的;它基于概念。
  • {已排序} – 有序约束指定关联一端的对象集处于特定方式。
  • {多变} – 可改变的约束指定可以根据要求添加、删除和修改系统中各个对象之间的连接。
  • {仅添加} – 它指定可以从位于关联另一端的对象添加新的连接。
  • {冻结} – 它指定在两个对象之间添加链接时,当给定链接或连接上的冻结约束处于活动状态时,该链接不能被修改。

我们还可以创建一个具有关联属性的类;它被称为关联类。

反身联想

反身关联是 UML 中关联关系的一个子类型。在反身关联中,同一个类的实例可以相互关联。类的实例也称为对象。

反身关联指出链接或连接可以存在于同一类的对象中。

让我们考虑一个水果类的例子。水果类有两个实例,例如芒果和苹果。反身关联表明芒果和苹果之间可以存在联系,因为它们是同一类的实例,例如水果。

定向联想

顾名思义,有向关联与关联类内的流动方向有关。

在有向关联中,流是有向的。从一个类到另一个类的关联只沿一个方向流动。

它用带箭头的实线表示。

计费示例:

可以说,服务器和客户端之间存在有向关联关系。服务器可以处理客户端的请求。此流程是单向的,仅从服务器流向客户端。因此,系统的服务器和客户端之间可以存在有向关联关系。

依赖

使用 UML 中的依赖关系,可以关联特定系统内各种事物如何相互依赖。依赖关系用于描述 UML 中相互依赖的各种元素之间的关系。

定型

  • «绑定» – 绑定是一种约束,它指定源可以使用提供的参数或值在目标位置初始化模板。
  • “派生” – 表示可以根据目标物体计算出源物体的位置。
  • “朋友” – 它指定源在目标对象中具有唯一的可见性。
  • «实例» – 它指定目标分类器的实例是源对象。
  • «实例化» – 它指定源对象能够创建目标对象的实例。
  • «精炼» – 它明确指出源对象具有特殊的绝对值trac比目标对象更稳定。
  • “使用” – 在 UML 中创建包时使用。使用构造型描述了源包的元素也可以存在于目标包中。它描述了源包使用目标包的某些元素。
  • “代替” – 指定在运行时可以用客户替代供应商。
  • “使用权” – 指定源包访问目标包的元素 这也被称为私人合并。
  • “进口” – 它指定目标可以导入源包的元素,就像它们在内部定义一样 目标也称为公共合并。
  • “允许” — 指定无论供应商声明的可见性如何,源元素都可以访问供应商元素。
  • “延长” – 帮助您指定目标可以扩展源元素的行为。
  • “包括” – 允许您指定可在指定位置包含另一个元素的行为的源元素。(与 c/c++ 中的函数调用相同)
  • “变得” – 它指定目标与源相似但具有不同的价值观和角色。
  • “称呼” – 它指定源可以调用目标对象方法。
  • “复制” – 它指定目标对象是独立的,是源对象的副本。
  • “范围” 供应商是客户运营的一个参数。
  • “发送” – 客户是指向供应商发送一些未指定目标的操作。

状态机之间的刻板印象

  • “发送” – 指定源操作发送目标事件。

推广

它是系统内部存在的一般实体和独特实体之间的关系。

在泛化关系中,面向对象的概念称为 继承权 可以实现。两个对象之间存在泛化关系,也称为实体或事物。在泛化关系中,一个实体是父实体,另一个实体是子实体。这些实体可以使用继承来表示。

在继承中,任何父对象的子对象都可以访问、更新或继承父对象中指定的功能。子对象可以向自身添加其功能,也可以继承父对象的结构和行为。

这种类型的关系统称为泛化关系。

刻板印象及其限制

  • “执行” – 此构造型用于表示子实体正在由父实体通过继承父对象的结构和行为来实现,但不违反规则。 注意: 这种刻板印象在单一领域被广泛使用。 继承权.

泛化关系包含完全、不完全等约束,以检查所有子实体是否都包含在关系中。

实现

在 UML 的实现关系中,一个实体表示一些不由其自身实现的责任,另一个实体则实现这些责任。这种关系主要出现在以下情况下 接口。

实现可以用两种方式来表示:

  • 使用 规范形式
  • 使用一年 省略形式
UML 中的实现
UML 中的实现

在上图中,账户业务规则实现了接口IRuleAgent。

实现类型

  1. 规范形式:在 UML 的实现关系中,规范形式用于实现系统中的接口。它使用接口构造型来创建接口,并使用实现关系来实现特定的接口。在规范形式中,实现关系用带有大箭头的虚线表示。在上图中,接口 Iruleagent 使用名为 Account Business Rules 的对象来实现。
  2. 省略形式:实现于 UML 类图 也可以使用省略形式来表示。在省略形式中,接口用圆圈表示,也称为棒棒糖表示法。当使用系统内部的任何组件实现此接口时,都会创建一个省略结构。在上图中,接口 Iruleagent 使用省略形式表示,并由 acctrule.dll 实现。

组成成分

它不是标准的UML关系,但它仍然在各种应用程序中使用。

复合聚合是聚合关系的一种子类型,其特点是:

  • 它是对象之间的双向关联。
  • 这是一个整体/部分的关系。
  • 如果删除了复合材料,则与其关联的所有其他部分也将被删除。

复合聚合被描述为在聚合(整体)端用实心黑色菱形装饰的二元关联。

UML中的组合

UML中的组合

文件夹是一种可容纳 n 个文件的结构。文件夹用于存储其中的文件。每个文件夹可以与任意数量的文件相关联。在计算机系统中,每个文件都是文件组织系统内至少一个文件夹的一部分。同一个文件也可以是另一个文件夹的一部分,但这不是强制性的。每当从文件夹中删除文件时,文件夹都不会受到影响,而与该特定文件相关的数据将被销毁。如果对文件夹执行删除操作,则它也会影响文件夹中存在的所有文件。一旦文件夹从系统中删除,与该文件夹关联的所有文件都会自动销毁。

UML 中的这种关系类型称为复合聚合关系。

聚合

An 聚合 聚合关系是 UML 中关联关系的一种子类型。聚合和组合都是 UML 中的关联关系类型。聚合关系可以简单地描述为“一个类的对象可以拥有或访问另一个类的对象”。

在聚合关系中,即使源对象被破坏,依赖对象仍然保留在关系范围内。

让我们考虑一个汽车和车轮的例子。汽车需要车轮才能正常运转,但车轮并不总是需要汽车。它也可以用于自行车、自驾游或任何其他车辆,但不能用于特定的汽车。在这里,即使没有汽车对象,车轮对象也是有意义的。这种类型的关系称为聚合关系。

常见问题

多重性表示一个类的实例可以与另一个类的实例建立多少个关联关系,其值表示为 1、0..1 或 1..*。例如,一个文件夹可以包含零个或多个文件。

UML 使用不同的线尾来表示关系类型:实线表示关联,空心箭头表示依赖,空心三角形表示泛化,带空心三角形的虚线表示实现,菱形表示聚合或组合。

关联是一种结构性联系,对象之间在一段时间内彼此了解。依赖是一种较弱的、暂时的关系,其中一个元素使用另一个元素,因此供应商的变更可能只会对客户产生短暂的影响。

AI代码分析工具可以扫描类,并根据对象之间的引用方式,建议可能的关系——关联、依赖、泛化或聚合。工程师应确认这些建议,因为AI可能会误判间接或动态连接。

是的。一些AI绘图工具可以读取你对类的简单语言描述,并生成包含关联、泛化和组合链接的类图草稿。输出结果只是一个起点,仍然需要人工验证。

总结一下这篇文章: