泛化关系(Generalization)主要体现为:接口的继承、接口实现、类的继承,也就是所谓的(is a关系)。图形如下:
关联关系(Association)主要体现为:全局变量(has a 关系),它使一个类知道另一个类的属性和方法。关联关系有:双向关系和单向关联,大部分的关联都是单向的。比如:class A 关联于class B,那么在class A 中就有一个class B 的全局变量,以表示class A 包含了class B对象的引用。
组合关系(Composition)主要体现为:整体与部分的关系,这是一种很强的“拥有”关系,整体与部分的生命周期是一致的。比如:class A 组合于class B,那么A 拥有一个 B的全局对象(A has a B,and A composed by B),在A创建的时候创建B对象,在A生命周末结束的时候B也结束,就好像人和心脏。
聚合关系(Aggregation)主要体现为:这是一种较弱的“拥有”关系,体现的是A对象可以包含B对象,但是B对象不是A对象的组成部分 (classA has a classB,but A not composed by B)。既A和B的生命周期是不一致的,A对象创建的时候不一定创建B对象,A对象销毁的时候,B对象还可以独立存在。
依赖关系(Dependency)主要体现为:函数的参数(use a 关系),表示一个类(A)依赖于另一个类(B)的定义,其中B的变化将影响到A,如果A依赖于B,那么B在A中存在的形式为:方法的参数、局部变量、静态方法的调用等。