UML类图中的几种关系差别剖析

2016-01-14  本文已影响209人  三角君

UML类图总共有4种关系和1种实现,它们分别是:

关系
1、关联(Association)定向关联(Directed Association)本文不涉及
2、聚合(Aggregation)
3、合成(Composition)
4、依赖(Dependency)

实现
1、实现(Generalization)接口实现(Interface Relization)本文也不涉及

UML类图中的几种关系很容易让人弄晕,而且如果你去看英文原著的话你很难摸清楚它们之间到底有什么区别,本文就用最简单的方式剖析清楚!

关联

A、关联关系是类与类之间的联结,它使一个类知道另一个类的属性和行为(方法)。
B、关联关系可以是单向也可以是双向,双向的关联关系两端没有箭头或两个箭头,单向的关联关系有一个箭头,而且箭头在被关联类方。
C、在面向对象编程(OOP)中,是通过使用成员变量的形式实现。

聚合

A、聚合关系是关联关系的一种,是强的关联关系。
B、聚合表达的是整体和部分的关系,例如汽车聚合引擎和轮胎
C、聚合关系跟关联关系一样也是通过成员变量的形式实现,所以从编程语言的语言上是无从分辨的,只能从业务逻辑上去区分。但是这2种关系还是有清晰的区别的,区别在于关联关系的2个类处在同一个层次上,而聚合应该是不同的层次上(一个是整体,一个是部分)。

合成

A、合成关系也是关联关系的一种,是比聚合还要强的关系。例如人和四肢
B、跟聚合的区别在于,代表整体的类负责代表部分的类的生命周期。

备注:如果搞不清楚到底是不是聚合还是合成还是关联,那么都可以使用关联来表达。

依赖

A、依赖关系也是代表类与类的联结
B、依赖必须是单向的。(注意与关联关系中的可单向、可双向的区别)
C、在面向对象编程(OOP)中,是通过局部变量方法的参数静态方法的调用的形式实现。

备注:从定义上,我个人认为依赖关系应该也可以通过成员变量来实现,因为成员变量也可以认为只有单向的,但是这样我们就很混乱了,所以我们还是不要使用这种思维为好!

上一篇下一篇

猜你喜欢

热点阅读