1、关联关系(association)
用一条直线表示,它描述不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。
单向关联关系则用一条带箭头的直线来表示的。
事例代码:
public class ClassA {
//关联是对象间长期的一种关系,被调用类表现为调用类的引用,或者调用类的属性,
//常见的关联关系有一对一,一对多,多对多关系。
private ClassB classB;
public void methodA(){
classB.methodB();
}
}
2、依赖关系(dependency)
用一条带箭头的虚线表示,它描述一个对象的修改会导致另一个对象的修改这样的关系。
依赖关系除了“知道”其它对象的存在,还会“使用”其它对象的属性或方法。
双向依赖是一种非常不好的结构,我们总是应当保持单向依赖,杜绝双向依赖关系的产生。
事例代码:
public class ClassA {
// 依赖是对象间短暂的一种关系,被调用类表现为调用类的局部变量,方法的参数,
// 以及调用类调用被调用类的静态方法
public void methodA(ClassB classB){
classB.methodB();
}
}
3、实现关系(realization)
用一条带空心箭头的虚线表示,业务目标可能有多种可能的实现途径,每一种实现途径
可以用用例实现来表示,而用例实现与基本用例之间就构成了实现关系。
4、泛化关系(generalization)
用一条带空心箭头的直线表示的,泛化关系表示一个类对另一个类的继承。
5、聚合关系(aggregation)
用一条带空心菱形箭头的直线表示的,(A聚合到B上,或者说B由A组成)。
聚合关系是关联关系的一种特例,体现的是整体与部分、拥有的关系,即has-a的关系,
整体与部分是可分离的,具有各自的生命周期。
与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分依然存在。
6、组合关系(composition)
用一条带实心菱形箭头的直线表示的,(A组合成B,或者说B由A构成)。
组合关系也是关联关系的一种特例,体现的是contanins-a的关系,关系比聚合更强,
整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束。
组合关系是一种强依赖的特殊聚合关系,如果整体不存在了,则部分也将消亡。
7、扩展关系(extends)
用一条带箭头的虚线加版型<<extends>>来表示的。
与包含关系不同的是,扩展表示的是“可选”,而不是“必需”。
8、包含关系(include)
用一条带箭头的虚线加版型<<include>>来表示的,
与扩展用例不同的是,包含用例表示的是“必需”而不是“可选”,
这意味着如果没有包含用例,基本用例是不完整的。