UML类图中常常会用到各类箭头和线条来表示不一样类或者接口之间的关系,所以很是好的理解各个图标的含义是颇有必要的。html
在物理设计阶段能够经过EA工具将类图搭建好,而后直接生成物理类,这样也能够减小物理设计的工做量。java
下面介绍UML中六种关系:工具
1. 泛化(Generalization)spa
概念:泛化是一种通常与特殊、通常与具体之间关系的描述,具体描述创建在通常描述的基础之上,并对其进行了扩展。在java中用来表示继承的关系。.net
表示:用实线空心三角箭头表示。设计
2. 实现(Realization)htm
概念:实现是一种类与接口的关系,表示类是接口全部特征和行为的实现,在程序中通常经过类实现接口来描述。对象
表示:空心三角形箭头的虚线,实现类指向接口blog
3. 依赖(Dependency)继承
概念:是一种使用的关系,即一个类的实现须要另外一个类的协助。java中,方法参数须要传入另外一个类的对象,就表示依赖这个类。
表示:虚线箭头
4. 关联(Association)
概念:表示类与类之间的联接,它使一个类知道另外一个类的属性和方法,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,通常是长期性的。
java中一个类的全局变量引用了另外一个类,就表示关联了这个类
表示:实线箭头
5. 聚合(Aggregation)
概念:聚合是关联关系的一种特例,是强的关联关系。聚合是总体和个体之间的关系,即has-a的关系,总体与个体能够具备各自的生命周期,部分能够属于多个总体对象,也能够为多个总体对象共享。程序中聚合和关联关系是一致的,只能从语义级别来区分;
表示:尾部为空心菱形的实线箭头(也能够没箭头)
6. 组合(Composition)
概念:组合也是关联关系的一种特例。组合是一种总体与部分的关系,即contains-a的关系,比聚合更强。部分与总体的生命周期一致,总体的生命周期结束也就意味着部分的生命周期结束,组合关系不能共享。程序中组合和关联关系是一致的,只能从语义级别来区分。
表示:尾部为实心菱形的实现箭头(也能够没箭头)
关联、聚合、组合之间的关系:
a) 聚合、组合都是关联关系的一种:其关系强弱为 关联<聚合<组合
b) 聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示总体与部分的关系比较弱,而组合比较强;
c) 聚合关系中表明部分事物的对象与表明聚合事物的对象的生存期无关,一旦删除了聚合对象不必定就删除了表明部分事物的对象。组合中一旦删除了组合对象,同时也就删除了表明部分事物的对象。
d) 关联的两个对象之间通常是平等的,例如你是个人朋友,聚合则通常不是平等的,例如一个公司包含了不少员工,其实现上是差很少的。
e) 关联举例: 我与朋友
聚合举例: 雁群与大雁/国与家
组合举例: 大雁与翅膀
参考: