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

那么在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. Python基础1 介绍、基本语法 、 流程控制-DAY1

    本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...

  2. java内存模型(线程独占部分)

    线程独占部分 1.你了解Java的内存模型吗? 内存简介 有内核空间.用户空间(java是运行在用户空间上) 32位系统--->最大的访问内存大小是4G 62位系统--->最大的访问内存大 ...

  3. 任务二:零基础HTML及CSS编码(一)

    面向人群: 零基础或初学者 难度: 简单 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课 ...

  4. Shell读取一个表达式并计算其结果

    #!/bin/bash # 读取一个算数表达式并计算出结果 # 如果输入 # 5+50*3/20 + (19*2)/7 # 则结果为 # 17.929 read x printf "%.3f ...

  5. 【java面试宝典】一年工作经验者适用

    时光转瞬即逝,一年时间已经过去,自己准备跳槽了,请了几天假,面试了几家公司之后,拿到了一份offer,有了一点儿小小的心得,记录下来分享给搞Java的朋友,面试主要是几个部分内容. 很多公司会要求笔试 ...

  6. CentOS6.8下安装Docker

    原文章链接https://www.cnblogs.com/baolong/p/5743420.html. 由于在自己安装的虚拟机上打开linux终端命令行输入uname -a 以及cat /etc/r ...

  7. InsecureRequestWarning: Unverified HTTPS request is being made.解决方法

    在前面添加: import requests from requests.packages.urllib3.exceptions import InsecureRequestWarning reque ...

  8. 【HDU 6000】Wash(贪心)

    Problem Description Mr.Panda is about to engage in his favourite activity doing laundry! He's brough ...

  9. 【HIHOCODER1527 】 快速乘法

    描述 在写代码时,我们经常要用到类似 x × a 这样的语句( a 是常数).众所周知,计算机进行乘法运算是非常慢的,所以我们需要用一些加法.减法和左移的组合来实现乘一个常数这个操作.具体来讲, 我们 ...

  10. Poj 2337 Catenyms(有向图DFS求欧拉通路)

    题意: 给定n个单词, 问是否存在一条欧拉通路(如acm,matal,lack), 如果存在, 输出字典序最小的一条. 分析: 这题可以看作http://www.cnblogs.com/Jadon97 ...