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)中,是通过局部变量
、方法的参数
、静态方法的调用
的形式实现。
备注:从定义上,我个人认为
依赖关系
应该也可以通过成员变量
来实现,因为成员变量
也可以认为只有单向
的,但是这样我们就很混乱了,所以我们还是不要使用这种思维为好!
网友评论