UML中的几种关系——依赖、关联、聚合、组合、泛化、实现

(1)依赖关系 Dependency

……use a……

A使用类B,且这种使用关系是很弱的,具有偶然性、临时性,但类B若发生变化会影响到类A

【表示方法】带箭头虚线,箭头指向被依赖对象

【具体表现】:局部变量,方法的参数,以及对静态方法调用

【例子】

如,植物进行光合作用从而不断生长。而保证植物有生命能够进行光合作用的条件,就是要有空气、水等等。植物依赖于空气和水。他们之为依赖关系。

代码层表现】类B作为类A的参数被类A在某个方法中使用。

Air类和Water类作为Plants类中Photosythesis方法的参数。

Water类作为Plants类中Photosythesis方法的返类型

====================================================================================================

2)关联关系 Association

……has a……

对象A与对象B之间存在特定的对应关系,

对象A长期的持有对象B的引用。

体现的是两个类、或者与接口之间语义级别的一种强依赖关系。

【表示方法】:带箭头的实线,箭头指向被引用的对象

【具体表现】被关联的类B以类属性的形式出现在关联类A中(并非所有的属性都是关联,像int/bool这类的属性就不宜表示为关联),也可能是关联类A引用了一个类型为被关联类B全局变量

【例子】

如,"种子"需要知道"气温"是否适合,才能够发芽

代码层表现】

在种子Seed对象中,引用到气温Temperature对象

=========================================================================

聚合关系 Aggregation

……owns a……

聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分——《设计模式》第2

【表示方法】空心菱形+实线箭头(加实线箭头为单向聚合)

【例子】大雁与雁群,每只大雁属于一个雁群,一个雁群可以有多只大雁,它们之间满足聚合关系。

==========================================================================

组合(合成)关系 Composition

……Is a part of ……

组合是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体生命周期一样。

【表示方法】实心菱形+实线箭头

连线两端的数字“1”和“2”成为基数,用来表明这一端的类可以有几个实例。

【例子】鸟和其翅膀,就是聚合(合成)关系,它们是整体和部分的关系,鸟和翅膀的生命周期相同。

===============================================================================================

3)泛化关系 Generalization

Is a kind of

表示对象与对象之间的继承关系。具体形式为类于类之间的继承关系、接口与接口之间的继承关系。

【表示方法】空心三角箭头+实线

【主要用途】

1、实现多态

2、多重继承

【例子】

============================================================================================

4)实现关系 Implementation

用来规定接口和实现接口的类或者构件结构的关系,接口是操作的集合,而这些操作就用于规定类或者构件的一种服务。一个接口可以被多个类或组件实现,一个类或组件也可有多个接口。

【表示方法】空心三角箭头+虚线

【使用情况】

1、在接口和实现该接口的类间

2、在用例以及实现该用例的协作间

【例子】

省略表示法,将接口表示为一个小圆圈并和实现它的类用一条线相连

相关文章

适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类可以相互合作。
策略模式定义了一系列算法族,并封装在类中,它们之间可以互相替换,此模式让算法的变化独立于使用算法...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,它是针对软件开发中经常遇到的一些设计问题...
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以在不改变算法结...
迭代器模式提供了一种方法,用于遍历集合对象中的元素,而又不暴露其内部的细节。
外观模式又叫门面模式,它提供了一个统一的(高层)接口,用来访问子系统中的一群接口,使得子系统更容...