关联是分类器之间的一种关系,用来表示分类器的实例可以相互连接,也可以在逻辑上或物理上组合成某种聚合。
UML规范将关联分类为语义关系。其他一些uml源也将关联归类为结构关系。wikipedia声明关联是实例级关系,并且关联只能显示在类图上。不知道他们从哪里得到的信息,但它不是基于UML规范的。关联可用于不同类型的UML结构图:
- 类图关联,
- 用例图关联,
- 部署图工件关联,
- 部署图通信路径。
有几个与关联相关的概念:
UML 2.4规范声明,对于关联来说:“聚合类型、可导航性和最终所有权是正交的概念,...”这显然是夸大其词。正交通常意味着完全独立。虽然聚合类型、可导航性和关联最终所有权的符号可以独立应用,但概念本身并不正交。例如,在UML
2.4中,最终类拥有的关联的最终属性是可导航的,这显然使得可导航性依赖于所有权。
关联关系概览图
关联通常被绘制为一条实线,连接两个分类器或单个分类器。关联的名称可以显示在关联线中间的某个位置,但不能太靠近行的任何端点。线的每一端都可以用关联端的名称进行修饰。
教授和书本之间的关联
作者和教科书的关联
关联端(Association End)
关联端是描述关联的线和描述所连接分类器的图标之间的连接。关联端的名称可以放在线末端附近。关联结束名通常称为角色名(但在UML2.4标准中并没有这样定义)。角色名是可选的且不可显示。
教授 “扮演作者 ”
与类型为Book的教科书结尾相关。
角色的概念是相同的分类器可以在其他关联中扮演相同或不同的角色。例如,教授可以是一些书的作者或编辑。
关联端可以由以下任一方拥有
关联分类器对关联结束的所有权可以用一个小的实心圆(也称为点)图形化表示。点画在直线与分类器相交的点上。它可以被解释为显示模型包括由点接触的分类器表示的类型的属性。这个属性属于另一端的分类器。
关联结束查询由分类器QueryBuilder拥有
关联端qbuilder由关联构建本身拥有
“所有权”点可以与其他图形线路径符号结合使用,用于关联和关联结束的属性。这些包括聚合类型和导航性。
UML标准并不要求使用明确的最终所有权符号,而是定义了一种符号,该符号将应用于选择使用这种符号的模型中。点符号必须在完全关联或更高的级别上应用,因此没有点表示关联的所有权。换句话说,在二进制关联中,点只在不属于分类器的末端被省略。
属性符号可以用于类拥有的关联端,因为类拥有的关联端也是属性。该符号可以与线箭头符号结合使用,以清楚地表明属性也是一个关联结束。
关联结束qb是SearchService类的一个属性
属于这个类。
导航性(Navigability)
如果在运行时可以从链接另一端的实例有效地访问链接这一端的分类器实例,则可以从关联的另一端导航关联的End属性。
UML规范并没有规定这种访问应该有多高的效率,也没有规定实现效率的任何特定机制。它是特定于实现的。
当关联的end属性被标记为不可导航时,在[UML2.4]中,它意味着“从另一端访问可能是或可能是不可能的,如果是,它可能是无效的。”这个不可导航的定义的问题是它实际上意味着“无论什么”或“谁关心?”适航性。
UML 2.4还提供了导航性的另一个定义:
关联的端类所拥有的关联的端属性,或关联的可导航的所拥有的关联的端属性,表示关联可以从相反的端导航;否则,关联就不能从相反的方向导航。
这个定义很奇怪,因为它使导航性强烈依赖于所有权,而这些被认为是正交的概念;UML 2.4规范中的一些例子显示类拥有的最终属性不可导航,这与上面的定义相矛盾;并且可导航性是使用“关联的可导航拥有端”来定义的。
不推荐使用的导航约定:
- 不可通航的终点被假定为协会所有
- 可导航端被假定为相对端的分类器所拥有。
符号:
- 可导航末端由关联末端的开放箭头指示
- 不可导航的末端用关联末端的小x表示
- 关联结束时没有装饰意味着不明确的导航性
关联的两端都具有未指定的可航性。
关联的两端都具有未指定的可航性。
关联的两端都具有未指定的可航性。
A2具有未指定的可导航性,而B2 可从A2进行导航。
A3 无法从B3 导航,而B3具有未指定的导航能力。
A4 不可从B4 导航,而B4 可从A4 导航。
A5 可从B5 导航,而B5 可从A5 导航。
A6 不可从B6 导航,而B6 不可从A6 导航。
可见性符号可以作为装饰添加到可导航端,以将该端的可见性显示为特征分类器的属性。
元数(Arity)
每种关联都有其特殊性,因为它可能涉及两个或多个项目。
二元关联(Binary Association)
二元关联涉及两个类型化实例。它通常呈现为连接两个分类器的实线,或者连接单个分类器自身的实线(两端不同)。该线可以由一个或多个相连的线段组成。
一个小的实心三角形可以放在二元关联名称的旁边或位置(画为实线),以显示关联末端的顺序。箭头沿直线指向关联结束顺序中最后一个结束的方向。该符号还指示关联将从第一端读取到最后一端。
端面和端面的顺序:汽车-设计年份
UML 2.4规范声明这个箭头仅用于文档目的,没有一般的语义解释。这是一个奇怪的澄清,因为事实上,UML图主要用于文档目的,但更重要的是,根据UML规范,这个箭头定义了关联结束的顺序——这确实属于语义。
多元关联(N-ary Association)
任何关联都可以绘制为菱形(大于直线上的终止符),每个关联端用实线将菱形连接到该端类型的分类器。两端以上的n元关联只能这样绘制
三元关联设计涉及三个分类器
共享和复合聚合(Shared and Composite
Aggregation)
聚合是表示某种整体/部分关系的二元关联。聚合类型可以是:
关联类(Association Class)
一个关联可以被细化为具有它自己的一组特征;也就是说,特征不属于任何连接的分类器,而是属于关联本身。这种关联称为关联类。它既是一个关联,连接一组分类器和一个类,因此可以具有特征,也可以包含在其他关联中。
关联类可以被视为也具有类属性的关联,或者也具有关联属性的类。
关联类被显示为通过虚线附加到关联路径的类符号。关联路径和关联类符号代表相同的基础模型元素,它只有一个名称。关联名称可以放在路径上、类符号中或两者上,但它们必须是相同的名称。
链接(Link)
Link是关联的一个实例。它是一个元组,每个关联的末端都有一个值,其中每个值都是末端类型的一个实例。关联至少有两个端,由属性(端属性)表示。
链接使用与关联相同的表示法呈现。实线连接实例而不是分类器。链接的名称可以加下划线显示,但不是必需的。可以显示结束名称(角色)和导航箭头。
教授扮演作者角色的实例p之间的链接
以及教科书角色的书的实例B。
|