(1)依赖关系 Dependency
……use a……
类A使用类B,且这种使用关系是很弱的,具有偶然性、临时性,但类B若发生变化会影响到类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、在用例以及实现该用例的协作间
【例子】
省略表示法,将接口表示为一个小圆圈并和实现它的类用一条线相连