(2)关联的命名
关联命名的原则是命名有助于模型的理解,若一个关联意思已经很明确,则不需要关联名。图11.10使用关联名的关联
在关联端可以标出多重性,其表示方法与类属性的多重性描述了方法相同,关联端的多重性标记规定该对象类中由多少对象参与关联常用的多重性标记由“0..1”、“1”、“#”
(3)角色
在关联的对象类图标旁可以标出类的角名(Role)角色,表示被关联的类参与关联的特定的行为,角色可以后跟一个冒号“:”和类名。这个类名常使一个接口式或类型(Type)的名字表示该角色在关联中的行为是通过相关的接口或类型实现的,角色名前可以标有可视性标记“+”、“#”、“-”等,含义与类属性的可视性标记类似,“+”表示公共属性,“#”表示为保护属性。“-”表示属性为私有属性。
关联的两端的类可以某种角色参与关联,例如在图11.11中,角色也具有多重性,表示可以由多少个对象参与该关联。
(4)关联类及其属性
关联本身也可以由属性,通过关联类可以进一步描述关联的属性,操作及其他信息,关联类通过一条虚线和关联连接,如类图11.12
图11.12中的Contract类是一个关联类,Contract类中由属性daty,这个属性描述的是Company类和Person类之间的关联属性。
由于指定了关联角色的名字,由类图转换为代码的框架中就直接用关联角色名作为声明中的变量的名字,如Employer为类Company的变量名employee为类Person的变量名等,另外Employer的可见性是protected也i生产的代码框架中体现出来。
因为指定关联的employee端的多重性为n,所以在生成的代码框架中employee是类型为Person的数组,关联类Contract有独立的属性。
(5)关联的约束
关联还可以加一些约束,以加强关联的含义,图11.13所示是两个关联之间存在的异或约束的例子。