1、三关系3.3 关系 关联(Association) 泛化(Generation) 依赖(Dependency) 精化(Refinement)3.4 关联关联是类之间的连接,是涉及此关联的那些类的对象之间的语义连接(链接)。3.4.1 标准关联 关联图3.16 关联图3.17 队员与球队之间的关联图3.18 两个类之间的不同关联图3.19 多个类可以和同一个类关联 关联的多重性图3.20 关联的多重性范围:0.1(0或1),0.*, 或 *(0到多),1.*(1到多),5.11(5到11)。 (1, 4, 6, 8, 10, 12)图3.21关联的多重性 可导航关联图3.22 一个可导航关联例子
2、: 一个保险公司拥有多份保险合同,这些合同与一个或多个客户关联。 一个客户拥有多份保险合同(0对多),这些合同与一个保险公司关联。 一份保险合同位于一个保险公司和一个或多个客户之间。保险合同同时与一个客户(或多个客户)和一个保险公司相关联。 保险合同在一份(0或1)保险契约(一份书面形式的保险合同)里表达。 保险契约与保险合同关联。图3.23 描述保险业务的类图3.4.2 对象图图3.24 类图和对象图,以及类图被例示的一个例子objectname:classname3.4.3 递归关联从一个类到其自身的关联称为递归关联(Recursive Association)。图3.25 递归关联Jav
3、a实现图3.26 保险公司与保险合同的关联/Insurance_company.java filepublic class Insurance_company /* Methods */Insurance_contractVector is a specialization of the/Vector class ensuring hard typing. Vector is a standard/Java class for dynamic arrays.private Insurance_contractVector contracts; /Insurance_contract.java
4、filepublic class Insurance_contract /* Method */ private Insurance_company refer_to;图3.27 关联的转换3.4.4 关联中的角色图3.28 关联drives中的角色图3.29 关联married to中的角色图3.30关联plays on中的角色图3.31 一个类在不同的关联中可以扮演不同的角色3.4.5 限定关联限定关联(Qualified Association)用于一对多或多对多关联的情况。限定符(Qualifier)指定了如何标识一对多关联或多对多关联中的多端的一个特定对象。图3.32 限定关联例子:
5、图3.33 使用限定关联3.4.6 异或关联异或关联 xor图3.34 在同一时间,一份保险合同不能具有一个同时与Company和Person相连的关联 图3.35 一个异或关联图3.36 两个关联之间的xor约束3.4.7 有序关联图3.37 一个有序关联图3.38 一个有序关联3.4.8 关联类可以将类附属到关联上,这种情况下的类称为关联类(Association Class)。图3.39 一个关联类图3.40 一个关联类3.4.9 三元关联图3.41 一个三元关联3.4.10 链链:关联的实例图3.42 链是关联的实例3.4.11 聚合聚合(Aggregation)“整体部分”关系关键词
6、:“由组成”、 “包含”、 “是的部分”。两种特殊的聚合:共享聚合(Shared Aggregation)和组合聚合(Composition Aggregation) 基本聚合图3.43 聚合的一个例子 共享聚合共享聚合:聚合内的部分可以是任意整体的部分。图3.44 共享聚合的一个例子图3.45 共享聚合的一个例子 组合聚合组合聚合拥有它的各个组成部分。整体方的多重性必须是0或1(0.1),而部分方的多重性可以是任意值。有三种不同的方式用于显示组合聚合。图3.46 组合聚合的一个例子图3.47 组合聚合的一个例子图3.48 组合聚合的第二种显示方式图3.49 组合聚合的第三种显示方式(a)(b)(c)图3.50 一个聚合只可以有一个角色名称时的例子
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1