Uml 类图中六种关系
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Uml 类图中六种关系
1.泛化(继承)
泛化也就是继承,A是父类,B是子类,就称B泛化(继承)了A。在这里泛化可以理解成,是功能的一种延伸,因为B拥有A的特性,并且可以在自己的类中增加新的方法。
2. 实现
这个关系用于定义接口和实现类之间的关系。
3. 关联
关联关系表示两个类之间有持久的联系,会增加被依赖对象的成员变量(如下代码),不过关联对象的赋值是在调用某种方法的时候。
class A{
B b;
public void XXX(B b){
this.b=b;
};
}
上述代码表示:A关联B。例子:关联关系就好像电脑和鼠标,电脑的配置是包括鼠标的,但是到了具体需要鼠标的时候,才会用到鼠标。所以说:类A 关联类B,B则是A中不可或缺(成员变量)但是不急着使用(延迟赋值)的一部分。
4. 依赖
依赖关系不会产生成员变量,往往就是某个方法调用的时候,传入的参数会有被依赖的对象。
class A{
public void XXX(B b){};
}
上述代码表示:A依赖B
例子:依赖关系就好比人和鼠标,人的配置当然不可能包括鼠标,但是人要玩电脑的时候,就需要鼠标。
所以说:类A依赖类B,则B不是A的配件(成员变量),但是A在需要实现某个功能的时候需要B(作为参数传递进来)。
5. 聚合
class A{
B b;
A(B b){
this.b=b
}
}
聚合可以称作为强关联关系,当一个类聚合另一个类的时候,这个类A在自己实例化时就会给关联的这个对象B赋值。不过,这里关联对象B的实例化不是在A中,所以,B的生存与否,不是由A决定。
例子:汽车和轮胎,汽车必须有轮胎才能跑,但是轮胎的生产,可以不在汽车厂而是在别处,轮胎离开这辆汽车,也可以安到其他同型号的汽车上。
所以说:类A聚合类B,B则是A不可或缺的一部分,B的赋值在A实例化的时候,但是B的实例化在A的外部,B的生存周期与A无关。
6.组合
class A{
B b;
A(){
this.b=new B() }
}
组合也是一种强关联关系。
例子:人和心脏,人在由细胞发育过来的时候,心脏就会慢慢生成,人包含心脏,心脏的产生在人的内部,人不能离开心脏,心脏也不能离开人。
所以说:类A组合类B,则B是A不可或缺的一部分,B的实例化就在A实例化的时候。B的生存周期取决于A,A消亡,B也消亡。