UML中定义的关系主要有6种: 依赖、关联、聚合、组合/合成、泛化、实现;
1、依赖关系:
   含义:是类与类之间的连接,表示一个类依赖于另外一个类的定义;依赖关系仅仅描述了类与类之间的一种使用与被使用的关系;
   体现:在Java和C++中体现为局部变量、方法/函数的参数或者是对静态方法的调用;
   方向:单向;
   图示:虚线 + 箭头;
   举例:人依赖于水和空气;汽车依赖汽油

2、关联关系:
   含义:类与类之间的连结,关联关系使一个类知道另外一个类的属性和方法;通常含有“知道”,“了解”的含义
   体现:在Java和C++中,关联关系是通过成员变量来实现的;
   方向:双向或单向;
   图示:实线 + 箭头;箭头指向被关联的类;
   举例:“渔民”需要知道“天气”情况才能够出海

3、聚合关系:
   含义:是关联关系的一种,是一种强关联关系;聚合关系是整体和个体/部分之间的关系;关联关系的两个类处于同一个层次上,而聚合关系的两个类处于不同的层次上,一个是整体,一个是个体/部分;在聚合关系中,代表个体/部分的对象有可能会被多个代表整体的对象所共享;
   体现:C++中,聚合关系通过将被聚合者的(数组)指针作为内部成员来实现的;
   方向:单向;
   图示:空心菱形 + 实线 + 箭头;箭头指向被聚合的类,也就是说,箭头指向个体/部分;
   举例:鸭群与鸭子具有聚合关系;汽车由引擎、轮胎以及其它零件组成,因为汽车坏掉了,没有坏掉的引擎,轮胎和其他零件还可以继续使用。

class CYazi
{
   ...
}

class CYaQun
{
   public:
       CYaQun(CYaZi * p){m_pYazi = p; }
   private:
       CYaZi * m_pYazi;
}

CYazi * pYazi = new CYazi [10];
CYaQun yaqun(pYazi);

4、合成/组合关系:
   含义:它也是关联关系的一种,但它是比聚合关系更强的关系.合成/组合关系要求聚合关系中代表整体的对象要负责代表个体/部分的对象的整个生命周期;合成/组合关系不能共享;在合成/组合关系中,如果代表整体的对象被销毁或破坏,那么代表个体/部分的对象也一定会被销毁或破坏,而聚在合关系中,代表个体/部分的对象则有可能被多个代表整体的对象所共享,而不一定会随着某个代表整体的对象被销毁或破坏而被销毁或破坏;
   体现:在Java和C++中,合成/组合关系是通过成员变量来实现的;
   方向:单向;
   图示:实心菱形 + 实线 + 箭头;箭头指向代表个体/部分的对象,也就是被合成/组合的类的对象;
   举例:一个人由头、四肢、等各种器官组成,因为人与这些器官具有相同的生命周期,人死了,这些器官也挂了;

 

class CHead
{
   ...
}

class CPerson
{
   public:
       CPerson(){m_head.MethodA(); }
   private:
       CHead m_head;
}

CPerson person;

5、泛化关系:
   含义:它表示一个更泛化的元素和一个更具体的元素之间的关系;也就是通常所说的类的继承关系;
   体现:在Java和C++中,泛化关系通过类的继承来实现的;
   方向:单向;子类继承父类;
   图示:空心箭头 + 实线;箭头指向父类;
   举例:动物下面可以分为哺乳动物,脊椎动物,爬行动物等

6、实现关系:
   含义:它指定了两个实体之间的一份合同;即:一个实体定义一份合同,另外一个实体则保证履行该合同;
   体现:在Java和C++中,实现关系通过类实现接口来实现的,即:一个类实现某个接口;
   方向:单向;子类实现接口;
   图示:空心箭头 + 虚线;箭头指接口向接口;
   举例:唐老鸭(对象)会说话(接口),因为一般鸭子不会说话,所以不会将说话这个方法给一般的鸭子带上;超人(对象)会飞(接口)

注意:泛化关系和实现关系又统称为一般关系;
总之,一般关系表现为继承或实现(is a),关联关系、聚合关系、合成/组合关系表现为成员变量(has a),依赖关系表现为函数中的参数(use a);

转载于:https://www.cnblogs.com/aicro/archive/2010/08/23/1806584.html

(转,改)UML中的几种关系相关推荐

  1. UML中的9种图例解析

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

  2. 区分 UML 类图中的几种关系

    区分 UML 类图中的几种关系   2010-12-23 作者:fnw 来源:网络      区分 UML 类图中的几种关系  UML 类图中的 "关联关系(association) &qu ...

  3. UML类图五种关系与代码的对应关系

    UML类图中的五种关系的耦合强弱比较:依赖<关联<聚合<组合<继承 一.依赖关系: (一)说明 虚线+箭头 可描述为:Uses a 依赖是类的五种关系中耦合最小的一种关系. 因 ...

  4. UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别

    zz from: http://dev.firnow.com/course/3_program/java/javajs/20090219/155939.html UML中几种类间关系:继承.实现.依赖 ...

  5. 一张图看明白UML类图中的6种关系

    在UML类图中,有6种关系,分别是: (1)泛化(Generalization),简单说就是父类和子类的关系,extends/: (2) 实现(Realization),简单说就是接口和实现的关系,i ...

  6. UML中关联关系和依赖关系的区别(转)

    UML中关联(association)关系和依赖关系比较难以让人理解.今天查了一下<UML参考手册>.归纳如下 关联(association) 如果几个类元的实例之间有联系,那么这几个类元 ...

  7. UML 类图几种关系的总结

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

  8. UML中的6大关系(关联、依赖、聚合、组合、泛化、实现)

    UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.这些类间关系的理解和使用是掌握和应用UML的关键,而也就是这几种关系,往往会让初学者迷惑.这里给出这六种主要UML关系的说明和类图描述, ...

  9. 【UML建模】UML类图几种关系的总结

    转自:http://kb.cnblogs.com/page/129490/ 在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(As ...

最新文章

  1. 程序员都讨厌写文档?这4个工具让你事半功倍
  2. SpringBoot 信息输出
  3. 浅谈文本的相似度问题
  4. Linux网络编程 | 高性能定时器 :时间轮、时间堆
  5. mysql5.7.x 1251_MySql-8.0.x免安装版下载与配置,Navicat打开数据库链接报错1251的解决办法...
  6. UFIDL稀疏自编码代码实现及解释
  7. 图表展示结果开发(一)
  8. 堆积密度怎么做_seo关键词究竟应该怎么优化
  9. 目标检测之Selective Search原理简述(转)
  10. 伯努利数 + 自然数幂( Zoj2865 + 51Nod1228 + 51Nod1258 + 51Nod1822)
  11. SpringBoot优缺点总结
  12. python输入文字字符串、如何提取字符_用python正则表达式提取字符串
  13. c语言面试100问题及答案,【编程C语言面试题】面试问题:C语言面试大全… - 看准网...
  14. 聊聊阿里社招面试,谈谈“野生”Java程序员学习的道路
  15. 信令传送协议-SCTP协议解析
  16. 电脑蓝屏,问题:你的电脑未正确启动,按“重启”以重启你的电脑,有时这样可以解决问题,你还可以按“高级选项”,尝试使用其他选项修复你的电脑
  17. 全国省市区区划代码以及邮政编码数据最新版--Mysql版(上)
  18. 什么是云中台系统_“生于云中”的优势是真实的,但不是绝对的
  19. 笔记本电脑f11功能键_电脑f11键是什么作用
  20. 简易考试系统(java、头歌实验)

热门文章

  1. python中cgi到底是什么_十分钟搞懂什么是CGI(转)
  2. linux 中卸载提示设备正忙怎么办?
  3. 课时 23:Kubernetes API 编程范式(陈显鹭)
  4. 空间地理加权回归stata_xy妙妙屋丨地理加权回归和空间自相关
  5. redistemplate hash 过期时间_Redis开发 —— 过期消息通知实现(Springboot)
  6. c语言万年历需要注意什么意思,C语言万年历
  7. oracle异常如何处理,ORACLE异常处理总结
  8. c# 通过字体对话框获取字体名称和字体大小_PS插件神器 :fonTags,超好用的PS字体管理插件(附安装方法)
  9. rapter求n的阶乘流程图_RAPTOR程序设计例题参考答案
  10. 虫师python appium自动化测试书_Appium移动自动化测试(一)--安装Appium