11.5.5 示例
图11.27表示了一个从Player到Year、名为PlayedInYear的二元关联。
图11.27 Binary and ternary Associations
实心三角形指示阅读的顺序:Player PlayedInYear Year。该图还表示了分别带有team、season和goalie端的Team、Year和Player之间的一个三元关联。
如下的示例展示了带有不同修饰的关联端。
图11.28 Association ends with various adornments
在图11.28的四个关联端上显示了如下的修饰:
- 在三个端上的名称a、b和d。
- 端a、b和d上的公共可见性。
- a上的multiplicities是0..1,b上的是*,d上的是0..1。
- b和d上的次序规约。
- d上的subsetting。对于类C的一个实例,d的集合是b集合的子集。这与OCL约束 context C inv: b->includesAll(d) 是等价的。
下面的示例展示了由关联所拥有的端(没有点)。
图11.29 Examples of navigable association-owned ends
在图11.29中:
- 最顶部的AB对展示了一个带有两个可导航端的二元关联。
- CD对展示了一个带有两个不可导航端的二元关系。
- EF对展示了一个未指定导航性的二元关联。在一个只用箭头来显示单向导航的图中,这很可能指的是双向可导航。
- GH对展示了一个带有一个可导航端一个不可导航端的二元关联。
- IJ展示了一个带有一个可导航端一个不可导航端的二元关联,其中只用箭头来表示单向导航,叉号被抑制。
下面的示例展示了一些由类拥有的端,它们由点来指示。在图11.30中:
- 在AB对中,端b由类A拥有,端a由类B拥有。因为这些端是类拥有的,所有它们是可导航的。
- 在CD对中,端d由类C拥有,因此它是可导航的。端c由关联拥有,它被标记为可导航的。
- 在EF对中,端f被类E拥有,因此它是可导航的。端e由关联拥有,这在一个只用箭头表示单向导航、叉号被抑制的图中表示不可导航。
- 在GH对中,端h由类G拥有,端g由类H拥有。因为这些端由类拥有,它们是可导航的。本图展示的是只用箭头表示单向导航的模型图。
图11.30 Examples of class-owned ends
图11.31展示了属性图示可以用于表示被类所拥有的关联端,因为被类拥有的关联端也是一个属性。尽管为了避免冗余它通常被抑制,该表示可以与关联的图示一块儿使用以清晰地表明该属性也是一个关联端。
图11.31 Example of attribute notation for navigable end owned by an end Class
图11.32展示了用于衍生联合的图示。属性A::b通过对所有对其进行集合划分的属性的严格联合而衍生。本例中只有一个,C::d。因此,对于类C的一个实例,d是b的一个子类,并且b从d衍生。
图11.32 Derived supersets (union)
图11.33展示了用于组合聚合的黑色菱形。本图中组合端的名称被抑制。
图11.33 Composite aggregation is depicted as a black diamond
图11.34使用在多个组合中共享相同源线段的图示选项展示了一个类似的模型。共享端的multiplicity和名称修饰应用于所有的组合。合并线段上的其它缺失的模型值,可能不同的组合有不同的值。
图11.34 Composite aggregation sharing a source segment
图11.35展示了关联类的图示。本例中,关联类的名称出现了两次,一次是在类矩形中,一次是在管理上。它们代表的都是相同的模型元素。
图11.36使用关联类的菱形表示法展示了相同的模型。
图11.36 Example AssociationClass using diamond symbol
图11.37展示了一些限定的关联。左图表示对于给定的一个Bank,特定的accountNo将鉴别0或1个Person。属性accountNo是限定符,被限定的对象是Bank。这个限定符由该关联在Bank端的一个未命名的属性所拥有,即该属性的类型是Bank。
右图展示了如何通过rank和file来鉴别Chessboard上的 一个独立的Square;本例中,因为multiplicity是1,这个图表示每一个Rank和File的可能值都指示一个单独的Square。本例中限定符由类型为Chessboard的未命名关联端属性所拥有,而对立端的属性类型是Square并且标记为aggregation=composite。
图11.37 Qualified associations