UML中,类关系分为这几种,泛化(generalization), 实现(realization),依赖(Dependency),关联(associate),聚合(aggregation),(composition),下面一一详细讲解。

1 泛化(generalization)

  在面向对象里,其实就是继承 ,比如动物和老虎,植物和花,人和孩子、老人等。

 表示的是 IS KIND OF 的关系。

2 实现(realization)

 简单说就是实现接口。

实际中更多的采用面向接口的编程。

3 依赖(Dependency)

A 依赖于B ,A 用到B的方法或变量,A HAVE B。

4 关联 (associate)

单向关联

双向关联

自身关联

 

关联(associate)关系在设计中一般体现为聚合(aggregation)和组合(composition)关系,组合和聚合相似,但表示一种更强烈的组合语义关系:

5 组合(composition)

     组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体 与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;

6 聚合(aggregation)

聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可 以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;

几种关系的强弱 组合》聚合》关联》依赖

从代码实现上有些关系基本差不多,如果从设计严谨层面,每种关系意义还是有区别的,在真正的设计中最常用的就是集成和实现,以及类与类之间的关系关联,只是表明关系而已,很少进行非常详细的设计,除非是大型的企业级系统。