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、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
几种关系的强弱 组合》聚合》关联》依赖
从代码实现上有些关系基本差不多,如果从设计严谨层面,每种关系意义还是有区别的,在真正的设计中最常用的就是集成和实现,以及类与类之间的关系关联,只是表明关系而已,很少进行非常详细的设计,除非是大型的企业级系统。
转载于:https://blog.51cto.com/miao7616/605595