首页 > 代码库 > 【菜鸟也疯狂UML系列】——浅析UML四种关系

【菜鸟也疯狂UML系列】——浅析UML四种关系

    在UML中,关系是非常重要的,它抽象出对象之间的联系,让对象构成某个联系起来的结构。下面将简要分析一下UML中的四种关系:关联,依赖,泛化,实现。


   一、举例罗列


    1、关联(Association)

    关联是用来连接有结构关系的对象,可以连接相同类或者不同类,也可以是双向关联和单向关联。

    举例说明:
    
    单向关联:人打开电视机,是一个单向关联。

  


    双向关联:人和公司的关系,人是公司的雇员,公司是人的雇主。(1个公司有0或者n个雇员)

    

   (1)聚合(Aggregate)


    表示的是实体对象之间的关系,表达整体与部分的关系,整体由部分构成,但是此关系不是强依赖关系,也就是说,部分不会根据整体的消失而消失。聚合关系用一条空心菱形箭头直线表示,箭头指向整体。

    书和风格是一组聚合关系,风格有大小,颜色,可以是书的一部分,但是一旦脱离了书这个实体,实体风格也可以单独存在。



   (2)组合(Composition)

    

    表示实体对象关系,表达整体与部分的关系,整体拥有部分,是强依赖的聚合关系,部分会随着整体的消失而消失。组合关系用一条实心菱形箭头直线表示,箭头指向组合的母对象,也就是整体,表示部分属于整体。


    书和页是一个组合关系,当实体页脱离了书,便不存在了,随着书一起消失了。




    2、依赖(Dependency)


    表示一个对象在运行期会使用另一个对象的关系,是在运行期产生的,并伴随着运行场景的不同,依赖关系也不同。依赖关系用一条带箭头的虚线表示,箭头指向被依赖的对象。也可以表使用关系。

    人使用刀削苹果,场景为削苹果,人依赖于刀。



   3、泛化(Generalization)


    表示对象之间的继承关系,表示一个类对另一个类的继承。用空心箭头的直线表示,箭头指向被继承的对象。
  
   雇员类和雇主类,都继承与人类。




    4、实现(Realize)


    表示类对接口的实现用带空心箭头的虚线表示,箭头指向接口。
    
  

  二、比较分析


   1、聚合VS组合


   两者都是表示整体与部分的关系,但是不同的是,组合是强依赖聚合关系,部分脱离整体便不再存在。而聚合关系,部分脱离整体还可以继续存在。


   2、关联VS依赖


    刚开始分不清关联和依赖,后来看了视频里讲的是依赖可以作为使用关系,在不同场景下的使用关系,没有场景就没有关系;而关联不同,关联表示的是两个对象之间的关系,不会消失的。


    3、泛化VS实现


    对于实现与泛化的比较,泛化是类与类之间的继承,接口与接口之间的继承,而实现是类对接口的实现。但从画图方面来看,除了一个是直线,一个是虚线外没有什么不同的。关系的强弱也一样。
    
    最后,比较几种关系的强弱:

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

    

  三、总结


   通过对比学习,加上举例,能更加清楚的理解几种关系的不同。 
    遗留问题:实现是不是泛化的一种表现形式?

【菜鸟也疯狂UML系列】——浅析UML四种关系