最近在看一些开源项目的源码分析,其中涉及到UML建模方面的知识,在网上查找了一些好的基础资料,现写成博文做一些基础积累。(部分属于转载,本着学习的态度,原作者勿怪)

    在UML类图中,常见的有以下几种关系:泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)

1、 泛化(Generalization

关系:代表一种继承关系,体现为一般和特殊的关系,子类继承父类的所有共有属性和方法。

箭头指向:带待三角箭头的实线,箭头指向父类。

             

2、 实现(Realization

关系:指接口和类的关系,表示类实现接口的所有特性与行为。

箭头:带三角箭头的虚线,箭头指向接口

3、 关联(Association

关系:指一种拥有的关系,一个类知道另一个类的属性和方法。可以是双向,也可以是单向。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。其中关联的双方也可以是自己本身,例如单例模式中设置的自身对象

代码体现:成员变量

箭头:带普通箭头的实心线,指向被拥有者

4、 聚合(Aggregation

关系:整体与部分的关系,且部分可以离开整体而单独存在。

       聚合是关联的一种,是强的关联关系;区别在于具体的逻辑关系

代码体现:成员变量

箭头:带空心菱形的实心线,菱形指向整体

             

5、 组合(Composition

关系:也是整体与部分的关系,单部分不能离开整体而单独存在。

       组合也是关联的一种,是比聚合关系还强的关系,要求整体的对象负责部分对象的生命周期。

代码体现:成员变量

箭头:带实心菱形的实线,菱形指向整体。

             

6、 依赖(Dependency

关系:是一种使用的关系,即一个类的实现需要另一个类的协助。

代码体现:局部变量、方法的参数或对静态方法的调用

箭头:带箭头的虚线,指向被使用者

             

 

注:各种关系的强弱顺序:

      泛化=实现>组合>聚合>关联>依赖

 

现给出一张UML的类图举例图

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐