11.5.4 表示法

关联可以被画为一个菱形(比一条直线上的终止符大),它对每一个成员端都有一条实线从该菱形连接到代表该端类型的分类符上。具有两个以上端的关联只能用这种方式表示。

二元关联通常画为连接两个分类符的一条实线,或者是一条连接一个单一分类符自身的实线(两端是不同的)。实线可以包含一条或多条线段。不同线段自身没有明显的语义,只是为了对于使用工具对关联符号进行拖拽或改变大小有着图形化显示意义。

关联符号可以按如下进行修饰:

  • 关联的名字可以以名称字符串靠近关联符号来显示,但不能靠近一端从而与端的名称混淆。
  • 出现在名称(如果没有名称的话,就是名称的位置)前的一个反斜线,标识该关联时衍生的。
  • 一个属性字符串可以靠近关联符号显示,但不能靠近任意一端以防止与端上的属性字符串相混淆。

二元关联画为一条实线,一个实心的三角箭头可以靠近或在关联的名称位置上显示。该箭头指示该关联应该按照箭头所指的方向来读(参见图11.27)。这个图示只是为了文档化的目的,没有一般的语义解释。它用于在相关联的分类符之间捕获一些应用特定的关系细节。

关联之间的泛化可以使用关联符号之间的泛化箭头来表示。其它用于泛化的表示选项例如“共享目标风格”(参见9.2.4)和9.7.4中定义的表示法都可以用于关联之间的泛化,但是遵循本规范的工具不必支持这些选项。

关联端是一个代表关联的直线与代表被连接的分类符图标(通常是一个盒子)之间的连接。可以在关联端放置其名称字符串。这个名称时可选的和可抑制的。

其它的表示可以按照如下显示在靠近线端的地方:

  • multiplicity
  • 被花括号包裹的<prop-modifier>,其中,<prop-modifier>在属性中被定义(参见9.5.4)。
  • <visibility>符号(参见9.5.4)。

注意. 如果在图上没有显示multiplicity,那么不能对模型中的multiplicity做任何结论。

关联端上的开放箭头指示该端是可导航的。关联端上的小x指示该端不可导航。

如果端类端是衍生的,可以在它的名称前或如果没有名字的话,就在名称的位置画一个反斜线。

二元关系可能有一端的aggregation=AggregationKind::shared或aggregation=AggregationKind::composite。当一端的aggregation=AggregationKind::shared时,在该惯例的另一端添加一个中空的菱形作为终结修饰。这个菱形应该被代表关联的菱形要小(明显的看出来)。类似,aggregation=AggregationKind::composite的关联在相应端也有一个菱形,不同的是它是实心的。

被关联的分类符所拥有的关联端可以用一个小的实心圆环来图形化的指示处理,简洁起见,我们称之为一个点。这个点应该直线连接到分类符的地方被画为线路径的一部分,在线端和代表分类符的节点端之间插入。点的直径不应该超过聚合菱形高度的一半,应该比线宽大。这个点表示模型包含一个由点所指的分类符类型的属性。这个属性由另一端的分类符所拥有。此种情况下通常在此属性所属的分类符的属性格间中抑制该属性。

这个点可以与关联的属性以及关联端的线-路径的其它图形化表示联合使用。这包括聚类类型和导航性。

显式的断所属性图示不是必需的,即,遵循本规范的工具可以不支持它。在使用这个点的地方,它的使用应该在每个图中都是一致的,从而点的缺失指示它是由关联所拥有,当在一个用户模型的二元关系中应用这个图示时,只有在端不是被分类符所拥有时才舍略这个点。这样,在这个图示使用的上下文中,特定端上点的缺失并不会使得这些端的所属性变得模糊。

图11.26采用所允许的最大大小来展示点。这个图表示了endA被分类符B所拥有,因为在该图中,图示的使用必需是一致的,所有这个图也表示了endB被BinaryAssociationAB所拥有。

图11.26 Graphic notation indicating exactly one Association end owned by the Association

过去导航性通常以一种非正式的惯例被使用,其中,不可导航的端被认为由关联所拥有而可导航的端被认为被另一端的分类符所拥有。这种惯例现在已经弃用(deprecated)。聚合类型、导航性和端的所属性是独立的概念,每一个都有自己的显式图示。被类拥有的关联端总是可导航的,而那些被关联所拥有的关联端也许可以导航也许不能。

关联类表示为一个通过一条虚线附加到一条关联路径上的类符号。关联路径可能包括一个菱形,此种情况下,类符号应该通过一条虚线附加到该菱形上。关联路径和关联类代表相同的模型元素,它有一个单一的名称。这个名称可以被放置到路径上、类符号内,或者两处都显式,但是它们必须是相同的名称。关联端的名称与它在普通的关联中出现的位置相同,不在关联类的属性格间内。

逻辑上,关联类和关联是相同的意义实体;然而,它们在图形上是不同的。关联类符号可以从直线进行拖拽,但虚线必须总是从关联路径连接到类符号。

当两条关联线交叉时,遵循本规范的工具可以提供选项来显式一个小的半圆来指示线没有重合(如图电子电路图中一样)。

实践中,通常可以很方便的抑制一些指示关联端导航性的箭头和叉号。遵循本规范的工具可以提供不同的选项来表示导航性箭头和叉号,与点图示一样,这些选项应用在一个完整图像的层次。

  • 显示所有的箭头和叉号。导航性和它的缺失都完全显式地被表达。
  • 抑制所有的箭头和叉号。关于导航性不能做任何推理。
  • 抑制所有的叉号。抑制具有双向可导航的关联箭头,只显示具有单向可导航的惯例的箭头。此种情况下,双向的可导航性与两端都不能导航的情况无法区分;然而,实践中后一种情况几乎没有。

如果相同的集合体上有两个或更加的聚合,遵循本规范的工具可以提供一个纯粹显式上的选项,通过把聚合端合并到一个单一的带有实心或中空的聚合菱形符号的线段上,把它们表示为一棵树。任何在这个单一线段上的修饰都应用于所有的聚合端。在合并线段上一个修饰的缺失并不意味着对于所有的聚合端该修饰所对应的属性具有相等的值。

限定符表示为一个小矩形,它附加到关联路径的终端路径线段与分类符符号之间。限定符的矩形要比所附加到的类矩形小,除非这是不实际的。限定符矩形是关联路径的一部分,而不是分类符的一部分。限定符矩形所附加到的关联路径的端代表了该成员端拥有这个限定符

目标端附加的multiplicity表示由配对的限定实例和一个限定符值所选择的目标实例集合的可能的势。

限定符属性显示在限定符盒子内。可能有多个属性,每行显示一个。限定符属性与分类符属性具有相同的表示,但它的初始值表达式是无意义。

允许(尽管很不常见)单个关联的每个端都有一个限定符。

限定符不应该被抑制。

results matching ""

    No results matching ""