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

一、举例罗列


1、关联(Association)

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

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


  


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

    

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVja3lzdGFyNjg5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


(1)聚合(Aggregate)

表示的是实体对象之间的关系,表达总体与部分的关系,总体由部分构成,可是此关系不是强依赖关系,也就是说,部分不会依据总体的消失而消失。

聚合关系用一条空心菱形箭头直线表示。箭头指向总体。

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


watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVja3lzdGFyNjg5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


(2)组合(Composition)

表示实体对象关系,表达总体与部分的关系,总体拥有部分。是强依赖的聚合关系,部分会随着总体的消失而消失。

组合关系用一条实心菱形箭头直线表示,箭头指向组合的母对象,也就是总体,表示部分属于总体。


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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVja3lzdGFyNjg5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">



2、依赖(Dependency)


    表示一个对象在执行期会使用还有一个对象的关系,是在执行期产生的,并伴随着执行场景的不同,依赖关系也不同。

依赖关系用一条带箭头的虚线表示,箭头指向被依赖的对象。也能够表使用关系。


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



3、泛化(Generalization)


    表示对象之间的继承关系。表示一个类对还有一个类的继承。

用空心箭头的直线表示,箭头指向被继承的对象。

  
   雇员类和雇主类,都继承与人类。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVja3lzdGFyNjg5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


4、实现(Realize)


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

二、比較分析


1、聚合VS组合


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

2、关联VS依赖


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

3、泛化VS实现


    对于实现与泛化的比較,泛化是类与类之间的继承。接口与接口之间的继承,而实现是类对接口的实现。

但从绘图方面来看。除了一个是直线。一个是虚线外没有什么不同的。

关系的强弱也一样。

    
    最后,比較几种关系的强弱:

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


    

三、总结


   通过对照学习,加上举例,能更加清楚的理解几种关系的不同。

    遗留问题:实现是不是泛化的一种表现形式?

【菜鸟也疯狂UML系列】——浅析UML四种关系的更多相关文章

  1. UML中类图的四种关系及其代码实现

    在uml图中 最复杂的也就是泛化,实现.依赖,关联.这四种关系了,假设弄清了这几种关系那么在理解UML图的时候就会变得轻车熟路了! 假设你对着几种关系一点都不熟悉的话能够看一下uml中的四种关系.这篇 ...

  2. UML 之 四种关系

    学习过UML的人都知道,UML之中有九种图和四种关系,今天,我们先来介绍一下这四种关系: 对于我们这些初学者来说,UML之中无非是  关联.依赖.泛化和实现,但是其中,关联和依赖又如何区分?泛化又如何 ...

  3. UML类图中类与类的四种关系图解

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  4. ZT 类与类之间的四种关系

    csdn上一个好贴子:http://bbs.csdn.net/topics/390646332 类与类之间的四种关系1.依赖(Dependency)   类A在类B中作为一个成员函数的参数或者是返回值 ...

  5. uml的四种关系

    UML的四种常用关系: 泛化关系.关联关系.实现关系.依赖关系 其中泛化关系是指父类与子类之间的继承关系: 实现关系是指接口与实现类之间的关系: 依赖关系和关联关系的区别如下: 只要存在对象间的交互, ...

  6. UML中的四种关系总结

    UML中的关系主要包含四种:关联关系.依赖关系.泛化关系.实现关系.当中关联关系还包含聚合关系和组合关系. 1. 关联关系(Association) 关联关系式一种结构化的关系,是指一种对象和还有一种 ...

  7. 盘点UML中的四种关系

    生活中,我们既是独立的个体,又通过联系形成各种关系,比方说:朋友.恋人.父子,同学--于是乎,出现了神乎其神的六人定律. 那么在UML中又存在什么样的关系呢?以下我们来梳理一下. 关联(Associa ...

  8. UML常用图的几种关系的总结

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

  9. UML中类之间的几种关系

    类之间可能存在以下几种关系:关联(association).依赖(dependency).聚合(Aggregation,也有的称聚集).组合(Composition).泛化(generalizatio ...

随机推荐

  1. 归并排序(MergeSort)

    原帖:http://blog.csdn.net/magicharvey/article/details/10192933 算法描述 归并排序(MergeSort)是采用分治法的一个非常典型的应用.通过 ...

  2. thinkjphp 模板中获取url中的action

    <if condition="ACTION_NAME eq 'add'">新增<else/>编辑</if>

  3. eclipse 查看jdk源码

    eclipse中引入jdk源码的设置:  设置: 1.点 "window"-> "Preferences" -> "Java" ...

  4. 一个Bean属性拷贝的工具类

    package com.fpi.spring.qaepb.cps.util; import java.beans.IntrospectionException; import java.beans.P ...

  5. android viewpager fragment 优化 切换界面 延时加载

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 使用 碎片的 设置用户可见暗示visible hint  这个方法来做到. hint 是 ...

  6. python3-开发进阶Django-form组件中model form组件

    Django的model form组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用:比如我们的数据库中有这样 ...

  7. 让Code First下的数据库的迁移更加简单

    Code First给我们的程序开发带了很多便利,之前的版本中一个比较不大方便的地方是数据库迁移,麻烦不说,往往还和上下文相关,在不同的版本之间的数据库进行迁移还很容易失败,并且一旦失败还不大容易找到 ...

  8. winform窗体MaximizeBox

    如果MaximizeBox为false会导致Form2窗体底部不显示. =>解决办法TopMost属性为true. Form2 _frm2 = new Form2(); _frm2.Maximi ...

  9. FORM动态LIST ITEM

    DECLARE rg_list_item recordgroup; ret_code NUMBER; BEGIN --SQL里必做是以值键两个字段顺序,并且都要为字符串类型 rg_list_item ...

  10. SqlServer_游标循环

    --从游标取的值 ) ) --获取待返现数据,并循环处理 DECLARE TestCursor CURSOR FOR SELECT ID,UserName FROM dbo.UserInfo Open ...