参考资料
http://blog.csdn.net/lovelion/article/details/7838679
http://www.open-open.com/lib/view/open1328059700311.html
uml类图关系种类
在uml类图中,经常使用的类关系有如下几种:泛化(generalization)、实现(realization)、关联(association)、聚合(aggregation)、组合(composition)、依赖(dependency)。
各种关系的强弱顺序: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
泛化(generalization)
• 关系说明
泛化关系通常称为继承关系,用于描述父类与子类之间的继承关系,表示一般与特殊的关系。泛化关系指定了子类如何特化父类的所有特征和行为的规则。父类又称作基类或超类,子类又称作派生类。在UML类图中,泛化关系用带空心三角形的实线来表示。
• 类图举例
实现(realization)
• 关系说明
是一种类与接口的关系,表示类是接口所有特征和行为的实现。在这种关系中,类实现了接口,接口声明了要继承它的类必须要实现的操作。在UML类图中,实现关系用带空心三角形的虚线来表示。
• 类图举例
关联(association)
• 关系说明
关联关系是类与类之间最常见的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系。在编程语言中,实现关联关系时,通常将一个类的对象作为另一个类的成员变量来表示。
• 关联种类
关联关系分成双向关联、单向关联、自关联和多重性关联四种。
▶ 双向关联
默认情况下,关联关系是双向的。双向关联用带两个箭头或没有箭头的实线表示。
▶ 单向关联
类与类的关联关系也可以是单向的。单向关联用带箭头的实线表示。
▶ 自关联
在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。自关联用指向自身的带箭头实线表示。
▶ 多重性关联
多重性关联关系其实是为关联关系增加一个属性,表示两个关联对象在数量上的对应关系。多重性关联可以直接在关联直线上用一个数字或一个数字范围表示。
• 类图举例
聚合(aggregation)
• 关系说明
聚合关系是一种特殊的关联关系,表示整体与部分的关系,是强的关联关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。即成员对象和整体对象的生命周期不同,这是用以区分其与组合关系不同的关键,因为组合和聚合在语法上是无法进行区分的。聚合关系用带空心菱形的实线表示。在编程语言中,实现关联关系时,通常将一个类的对象作为另一个类的成员变量来表示。
• 类图举例
组合(composition)
• 关系说明
聚合关系是一种特殊的关联关系,表示整体与部分的关系,是比聚合关系还要强的关联关系。在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。即成员对象和整体对象的生命周期是一致的,这是用以区分其与组合关系不同的关键,因为组合和聚合在语法上是无法进行区分的。聚合关系用带实心菱形的实线表示。在编程语言中,实现关联关系时,通常将一个类的对象作为另一个类的成员变量来表示。
• 类图举例
依赖(dependency)
• 关系说明
依赖关系是一种使用的关系。某个事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。在编程语言中,实现关联关系时,通常将一个类的对象作为另一个类的局部变量、成员方法的参数,或一个类对象对另一个类对象静态方法的调用来表示。
• 类图举例
综合举例
下面这张UML图,比较形象地展示了各种类图关系: