【问题标题】:What is a Unary association in UML什么是 UML 中的一元关联
【发布时间】:2022-02-28 00:38:49
【问题描述】:

当我用谷歌搜索了解一元关联时,我得到了以下两种解释:

第一个是:

一元关系是指关系中的两个参与者都是 同一个实体。例如:科目可能是其他科目的先决条件 科目,或一名员工管理多名员工。

第二个是:

B 类知道 A 类。

A 类不知道 B 类。

现在让我们看看下面的例子:

您可以在下面看到 Person 和 Address 关系。我们称之为 关系 as has-a 关系,因为人有一个地址。所以 人知道地址,但地址一无所知 人

我是不是误会了什么?

【问题讨论】:

  • 您的第二个解释与一元关联完全无关。
  • @GeertBellekens,感谢您的评论。我看到了几个使用第二种解释来解释一元关联的 slideShare 和 youtube 视频,这让我很困惑。
  • 一元的定义:具有、组成或作用于单个元素、项目或组件 所以这显然是关于只涉及单个元素的关联。不要与 单向 混淆
  • UML 中的关联是二进制或 n 元的。什么是一元关联?什么都没有的连接器?

标签: uml associations class-diagram


【解决方案1】:

通用语言

关联的arity 是关于关联的类的数量。这是一个模棱两可的概念,因为有些人理解不同的类,而另一些人则理解实例。

当应用于一元时,第一种解释意味着自反关联(或自关联,即与自身关联的类),而第二种解释意味着与无关联的类(不是很有用:任何类都不能与其他任何东西相关联)。

UML 视角

幸运的是,UML 规范比通用语言要精确得多:

关联指定类型化实例之间可能发生的语义关系。它有至少两个memberEnds,由Properties 表示,每个都具有end 的类型。 关联的多个端点可能具有相同的类型

所以在 UML 中没有“一元关联”。它是二进制、三元或 n 元(规范中使用的术语)。 UML 中没有专门的术语来表示两端具有相同类的二进制关联。但是reflexive 或自关联是比一元更受欢迎的术语。

E/R 建模

术语“一元”在entity-relationship modeling 的上下文中很流行,用于描述关系数据库中的关系。关系或多或少对应于 UML 中的关联,实体对应于类,但存在一些细微的语义差异。 E/R 的基础是set theory。如果一个关系是在相同的实体之间,这实际上意味着只涉及一个集合。这可能就是为什么一元在这种情况下更受欢迎的原因。

【讨论】:

    【解决方案2】:

    Merriam-webster 将一元定义为

    拥有、组成或作用于单个元素、项目或 组件

    所以第一个解释是正确的,因为这种类型的关联作用于单个类。但是,在 UML 中不使用术语 一元,并且可能会造成混淆。
    UML 使用术语 binary 表示关联有两个端点,使用 ternaryn-ary 表示关联有多个端点。 你说的一元关联其实是对自身的二元关联,也称为reflexive关联。

    不要与 单向 关联相混淆,后者是一种只能在一侧导航(带有箭头)的关联。

    【讨论】:

    • 我不认为第一个可以声称是一元的。它仍然是二进制文件,因为它有两端。像香肠(著名的德国笑话歌曲)。
    • @qwerty_so 是的,但一元似乎是有时用来描述与同一类的二进制关联的术语。
    • @GeertBellekens 一元一词在 ERD 上下文中很流行。然而,即使在那里它也会产生误导;一个类比来解释为什么: + 是一个二元运算,但没有人(我希望)会声称 1 +1 是一个一元运算,因为它在两边都是相同的数字。在 UML 上下文中,该术语与规范相矛盾(并且没有单独提及一元)。 +1 用于图形解释和消歧
    • @Christophe 感谢您的意见。我添加了关于一元一词的更多解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多