我在搜索理解一元关联时,得到了以下两个解释:
第一个解释是:
一元关系是指关系中的两个参与者是同一实体。例如:某些课程可能是其他课程的先修课程,或者一个员工管理着多个员工。
第二个解释是:
B类知道A类。
A类不知道B类。
现在让我们看下面的例子:
您可以在下面看到“人”和“地址”的关系。我们将这种关系称为具有关系,因为人具有地址。所以人知道地址,但地址不知道任何关于人的信息。
我是否有什么误解?
我在搜索理解一元关联时,得到了以下两个解释:
第一个解释是:
一元关系是指关系中的两个参与者是同一实体。例如:某些课程可能是其他课程的先修课程,或者一个员工管理着多个员工。
第二个解释是:
B类知道A类。
A类不知道B类。
现在让我们看下面的例子:
您可以在下面看到“人”和“地址”的关系。我们将这种关系称为具有关系,因为人具有地址。所以人知道地址,但地址不知道任何关于人的信息。
我是否有什么误解?
一个关联的 arity 指与多少个类相关联。这是一个模糊的概念,因为有些人理解不同的类,而另一些人则理解实例。
当应用于单元时,第一种解释意味着反射关联(或自我关联,即一个与其自身相关联的类),而第二种解释意味着一个与任何东西都没有关联的类(并不是很有用:任何类都可以与其他类没有关联)。
幸运的是,UML 规范比常用语言更加精确:
在UML中没有"一元关联"的概念,只有二元、三元或者n元(规范中使用的术语)。在UML中没有特定的术语用于描述两端均为同一类的二元关联。但是自反或自关联是比一元更常用的术语。一个关联指定了可以在类型化实例之间发生的语义关系。它有 至少两个成员端点,由属性表示,每个属性具有端点的类型。关联的多个端点可以具有相同的类型。
韦氏词典将Unary定义为:
仅有一个元素、项目或组件的,由一个元素、项目或组件组成的或作用于单个元素、项目或组件的
因此,第一个解释是正确的,因为这种关联只作用于一个类。然而,在UML中并不使用术语“Unary”,这可能会让人感到困惑。
UML使用术语binary来表示关联具有两个端点,ternary或n-ary则表示关联具有多个端点。
你所谈论的Unary关联实际上是一种二元关联,也称为reflexive关联。
不要与Unidirectional关联混淆,后者是一种只能从一个方向导航(有箭头)的关联。