关闭

Uml 类图中六种关系的个人理解(java版)

标签: umlJAVA类图关联组合
1858人阅读 评论(0) 收藏 举报
分类:
1、泛化(继承)
泛化也就是继承,A是父类,B是子类,就称B泛化(继承)了A。在这里泛化可以理解成,是功能的一种延伸,因为B拥有A的特性,并且可以在自己的类中增加新的方法。


2、实现
这个关系用于定义接口和实现类之间的关系。


以上两个关系的具体应用可以见我个人写的文章《java抽象类和接口的个人理解》。


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(B b){
    this.b=b
  }
}

组合也是一种强关联关系。

例子:人和心脏,人在由细胞发育过来的时候,心脏就会慢慢生成,人包含心脏,心脏的产生在人的内部,人不能离开心脏,心脏也不能离开人。(这里不讨论现代医学上的心脏移植技术)


所以说:类A组合类B,则B是A不可或缺的一部分,B的实例化就在A实例化的时候。B的生存周期取决于A,A消亡,B也消亡。
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4215次
    • 积分:100
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档