1.UML中六种类图关系介绍及示例说明
在UML中有六种关系,分别为关联,依赖,泛化,实现,聚合和组合。在这六种关系中,泛化和实现指的是类结构之间的关系。而另外四种关系是根据对象运行时生命周期的不同分为四种关系。
1.1 实现 类与接口
在java中通过implement 实现的接口,该种类与类之间的关系为泛化。
表示方式:使用虚线+空心三角箭头
1.2 泛化 类与类之间
见名知意,就是继承。在java中extends的为继承关系。
表示方式:实线+空心三角箭头
1.3 关联
A类中持有B类的全局变量。
1.4 依赖
依赖关系在Java中的具体代码表现形式为B为A的构造器或方法中的局部变量(方法作用域中创建对象,作用范围局限于方法作用域中)、方法或构造器的参数、方法的返回值,或者A调用B的静态方法。(非全局的作用域外的其他作用域则为依赖关系)
1.5 聚合
聚合与组合不同之处在于,其对象之间的关系不是强依赖。A类中持有B类的实例,但不管理器生命周期。例如在A类中有个集合,该集合中装的是B类的对象。
1.6 组合
A类会负责管理B类实例的创建和销毁。B类对象的生命周期由A类的对象进行管理。 生命周期绑定在一起的关系成为组合关系,也是关系中最强的一种。
tip:上面把泛化和实现关系搞错了,将泛化记成了实现。
强度比较
关联 > 依赖 组合 > 聚合
上面四种关系形容的是实例之间的关系。
泛化 > 实现 :这两个形容的是类之间的关系。
总结
- 泛化和实现指的是类的结构关系,而另外四种关系指的是运行是对象之间相互依赖的关系。
- 聚合关系可以理解图书馆和图书的关系,而组合理解为动物和动物的头之间关系,他们是强关联且是相互依赖的,相互成就对方。
参考资料1:《Thinking in UML》