在UML的类图中,一共有6种关系。其中表示聚合的关系,有3种,分别是关联、聚合、组合。这几种类型都是表示的聚合关系,区别是在语义上或者说聚合的紧密程度上、生命周期上,会有区别。下面我会用代码示例来表示三种关系在代码上会有如何的不同之处。
关联关系
类A聚合了类B,但是何时能确保对象a和对象b有has-a的关系不确定,两者的生命周期也没有任何关联。
class Class{
Student student;
public Class() {
}
}
聚合关系
在构造类A时,传入了类B的引用,使得对象a在构造完成后就和b有了明确的has-a的关系,但是依然无法保证两者的生命周期是同步的,用来表示比关联关系聚合的更紧密的一种关系。
class Class{
Student student;
public Class(Student student) {
this.student = student;
}
}
组合关系
在构造对象a时,在构造方法中生成一个对象b将之聚合。不仅能确保生成对象a后,对象a拥有对象b的引用,而且确保两者有相同的生命周期。通常用来表示b是a不可缺少的一部分的关系,是3种关系中聚合的最近紧密的一种关系。
class Class{
Student student;
public Class() {
this.student = new Student();
}
}
UML类图中的关联、聚合与组合关系解析
文章详细阐述了UML类图中的关联、聚合和组合三种关系,强调了它们在语义和生命周期上的差异。关联关系不保证对象间的生命周期关联,而聚合关系在构造时明确了has-a关系,但生命周期仍可能不同步。组合关系是最紧密的形式,创建对象时同时创建其组成部分,确保相同生命周期。
980

被折叠的 条评论
为什么被折叠?



