生活中,我们既是独立的个体,又通过联系形成各种关系,比方说:朋友。恋人。父子,同学……于是乎,出现了神乎其神的六人定律

那么在UML中又存在什么样的关系呢?以下我们来梳理一下。

关联(Association)

         描写叙述了两个或多个类之间的结构性关系。

         图示:直线或直线+箭头  

     双向关联:

         指两方都知道对方的存在。都能够调用对方的公共属性和方法。

         箭头及指向:双向的关联能够有两个箭头或者没有箭头

         例1:公司和人

        

         将来在Person类中会有属性名为employer,类型为Company ;在Company类中会有一个属性为Employee。类型为Person

         例2:教师和学生

         

      单向关联:

          指一方能够调用对方的属性和方法。

箭头及指向:单向关联是带普通箭头的实心线,指向被拥有者。

例3:学生和某课程

         

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

           一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生

        自身关联(反身关联):

           自己引用自己,带着一个自己的引用。就是在自己的内部有着一个自身的引用。

        聚合关系:

           是总体与部分的关系,且部分能够离开总体而单独存在。

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

           例4:车和轮胎是总体和部分的关系。轮胎离开车仍然能够存在

          

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

         组合关系:

             是总体与部分的关系。但部分不能离开总体而单独存在。

             箭头及指向:带实心菱形的实线,菱形指向总体

             例5:公司和部门是总体和部分的关系。没有公司就不存在部门

            

依赖(Dependency)

             依赖关系是一种使用关系。特定事物的改变有可能会影响到使用该事物的事物,反之不成立。通常情况下。依赖关系体如今某个类的方法使用还有一个类作为參数

             图示:虚线+箭头

             例6:动物与氧气和水的关系

             

泛化(Generalization)

              泛化关系是一种继承关系,是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。用这样的方法。子元素共享了父元素的结构和行为。

              图示:实线+空心三角

              例7:动物与猎豹和狼的关系

              

实现(Realization):

              实现是类元之间的语义关系。在该关系中一个类元描写叙述了还有一个类元保证实现的契约。

一个类实现了一个接口。

图示:虚线+空心三角(箭头指向接口)

              例8:遥控器类实现了电视剧的换台接口

             

各种关系的强弱顺序:

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

用一个通俗易懂的UML图来回想一下这几种关系

              

 

          如今对UML的学习仅仅是刚刚開始。对知识的理解还不够充分,假设有错误的地方,还望大牛可以指点一二,万分感谢!

盘点UML中的四种关系的更多相关文章

  1. UML中的四种关系总结

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

  2. 【转】UML中的几种关系详细解析

    UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中, ...

  3. uml中的几种关系

    这是一堂关于UML基础知识的补习课:现在我们做项目时间都太紧了,基本上都没有做过真正的class级别的详细设计,更别提使用UML来实现规范建模了:本篇主要就以前自己一直感觉很迷糊的几种class之间的 ...

  4. UML中的几种关系(UML Relationships)

    依赖(Dependency) 依赖可以理解为一个类A使用到了另一个类B,而这种使用关系是具有偶然性的.临时性的.非常弱的,但是B类的变化会影响到A:比如某人要过河,需要借用一条船,此时人与船之间的关系 ...

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

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

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

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

  7. UML---UML中的几种关系(依赖,关联,泛化,实现)

    关于设计模式的总结没有落实到代码上,而且设计模式自己确实动手实现的非常少.所以在这一周里,除了看网站开发的视频,着手开始对设计模式进行实现以下.设计模式非常经典,每次看都有不同的收获,写一下自己的收获 ...

  8. UML 之 四种关系

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

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

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

随机推荐

  1. 课外作业(建立double类型的小数,按照四舍五入保留2位小数)

    举例:

  2. 【原创翻译】链接DLL至可执行文件---翻译自MSDN

    可执行文件.exe链接(或加载)DLL有以下两种形式: 隐式链接 显式链接 隐式链接是指静态加载或在程序加载时动态链接. 通过隐式链接,在使用DLL时,可执行文件链接到一个由生成DLL的人提供的导入函 ...

  3. unnamed not found for the web module

    intellij idea tomcat 启动报错not found for the web module 使用intellij idea 创建tomcat项目的时候会出现该错误: 启动tomcat的 ...

  4. 洛谷——P4109 [HEOI2015]定价

    P4109 [HEOI2015]定价 模拟(有点儿贪心) 题目要求在区间$l,r$中$x$后导0尽量多,且除去后导0之外,最后一个数尽量是$5$才最优 从$l$到$r$依次考虑, 假设当前考虑到$50 ...

  5. Java 对象的创建以及类加载

    1. 对象的创建的过程: 类加载检查—>分配内存—>初始化零值—>设置对象头—>执行 init . 1.类加载检查: 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数 ...

  6. mysql系列安装

    Mysql的5种安装方法:1.yum/rpm安装(适合要求不高,并发不大,公司内部,企业内部一些应用场景)2.编译安装(在线高并发业务)3.二进制安装(编译安装后,使用自带工具打包,然后拷贝到相同平台 ...

  7. java面试微信交流群-欢迎你的加入

    Java后端技术专注Java相关技术:SSM.Spring全家桶.微服务.MySQL.MyCat.集群.分布式.中间件.Linux.网络.多线程,偶尔讲点运维Jenkins.Nexus.Docker. ...

  8. 大数据学习——flume日志分类采集汇总

    1. 案例场景 A.B两台日志服务机器实时生产日志主要类型为access.log.nginx.log.web.log 现在要求: 把A.B 机器中的access.log.nginx.log.web.l ...

  9. MQ报错java.lang.IllegalStateException: Failed to load ApplicationContext

    这个问题是jdk版本造成的,把jdk1.8换成jdk1.7问题就解决了

  10. Python+fiddler(基于Cookie绕过验证码自动登录)

    案例:使用Cookie绕过百度验证码自动登录账户 步骤: 1.浏览器进入百度首页,点击登录按钮,输入相关信息(注意:暂时不要点击登录按钮) 2.进入fiddler,首先获取证书,Tools--> ...