UML类图中类之间的关系,聚合,组合,依赖总结

下面我就根据下面这个图来说解一下UML类图。java

这里写图片描述


类图

首先,看动物那个矩形框,他就表示为一个类(Class)。类图分为三层:程序员

  • 第一层显示类的名称
    • 若是是抽象类,就用斜体表示
  • 第二层显示类的特性,一般是字段和属性。
  • 第三层是类的操做,一般是方法和行为。
    • +表示为public
    • -表示为private
    • #表示为protected

接口图

典型表明是:web

  • 左下角的飞翔接口图
    • 与类图的区别主要是顶端有<<interface>>
    • 第一行表示为接口名称
    • 第二行表示为接口方法
  • 正下方的唐老鸭方框右上方相似于棒棒糖的东西
    • 这种表示方法称为棒棒糖表示法
    • 圆圈旁为接口名称。
    • 接口方法在实现类中出现。

类与类、类与接口之间的关系

一、继承关系

鸟继承动物,大雁、鸭、企鹅继承鸟。设计模式

继承关系空心三角形+实线来表示。数组

箭头指向父类。svg

public abstract class 动物{

}
public classextends 动物{}
public class 大雁 extends 鸟{}
public classextends 鸟{}
public class 企鹅 extends 鸟{}

二、实现接口

大雁会飞翔,因此大雁这个类实现了飞翔这个接口。spa

实现接口空心三角形+虚线来表示。设计

箭头指向接口。code

interface 飞翔{
    void 飞();
}
public class 大雁 implements 飞翔{

}

三、聚合和组合关系

这两种关系有这本质上的区别:xml

  • 聚合

    • 不少大雁聚在一块儿变成雁群,也能够说雁群里有雁,因此是总体和个体之间的关系,即has-a的关系,此时总体与部分之间是可分离的,他们能够具备各自的生命周期。即雁群能够不存在了,可是孤雁仍然存在。

    • 空心的菱形+实线箭头表示

    • public class 雁群{
      private 大雁[] 大雁数组名
      }
  • 组合

    • 一只鸟由两个翅膀组合而成,它体现的是contains-a关系,这种关系比聚合更强,也称为强聚合。他一样体现的是总体与部分间的关系,但此时总体和部分是不可分的,总体的生命周期结束也就意味着部分的生命周期结束。好比这只鸟死了,天然这两个翅膀也不存在了。

    • 实心的菱形+实线箭头表示

    • public class 鸟{
      private 翅膀 wing;
      public 鸟(){
          wing = new 翅膀();
      }
      }
    • -

这两种关系对比着就很好理解。


四、关联

企鹅和睦候有关联,企鹅须要“知道”气候的变化,须要“了解”气候规律,关联是最多见的关系,当一个类“知道”另外一个类时,能够用关联

表示形式:实线箭头

代码表示:

public class 企鹅{
    private Climate 气候;
}

五、依赖

凡是动物,生存都须要水和空气,这种必须的需求,咱们称之为依赖关系。

表示形式:虚线箭头

代码表示:

public abstract class 动物{
    public 生存(Water 水,Oxygen 空气);
}

最后谈谈它们的做用

UML类图在实际开发中很是常见,通常项目经理或产品经理根据实际业务来肯定开发中须要的类以及类的结构。

(以UML类图的形式表现出来),可能有人会说为何搞这么麻烦,

由于肯定好类图不是一个简单的工做,他须要考虑不少事情,固然也会用到不少设计模式。

只有这样,程序员开发出来的程序才有更好的健壮性易扩展性

相关文章
相关标签/搜索