Uml 类图中六种关系

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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也消亡。

相关文档
最新文档