区分 UML 类图中的几种关系
 

2010-12-23 作者:fnw 来源:网络

 
   区分 UML 类图中的几种关系 

UML 类图中的 ”关联关系(association) “、”聚合关系(aggregation) “、”合成关系 (compostion)“ 和”依赖关系 (dependency)“ 不是很容易区分清楚,《UML distilled》 对这几个关系也没有解释的特别清楚。近日翻阅《Java 与模式》,发现其中对这些关系有较为清晰的描述,特摘录如下:

 关联关系 (association)

(1)关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法。
   (2)关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
   (3)在 Java 或 c++ 中,关联关系是通过使用成员变量来实现的。 class 徒弟 
   { }; 
   class 唐僧 
    { 
    protected: 
   list<徒弟> tdlist; 
    }; 
    

 聚合关系 (aggregation)

1、聚合关系是关联关系的一种,是强的关联关系。
   2、聚合是整体和部分之间的关系,例如汽车由引擎、轮胎以及其它零件组成。
   3、聚合关系也是通过成员变量来实现的。但是,关联关系所涉及的两个类处在同一个层次上,而聚合关系中,两个类处于不同的层次上,一个代表整体,一个代表部分。
   4、关联与聚合仅仅从 Java 或 C++ 语法上是无法分辨的,必须考察所涉及的类之间的逻辑关系。
   class 引擎 
   { 
   }; 
   class 轮胎 
   { 
   }; 
   class 汽车 
   { 
   protected: 
   引擎 engine; 
   轮胎 tyre[4]; 
   }; 
   

合成关系 (composition):

1、合成关系是关联关系的一种,是比聚合关系还要强的关系。
   2、它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
   1 class 肢 
   { 
   }; 
   class 人 
   { 
   protected: 
   肢 limb[4]; 
   };

依赖关系 (dependency):

1、依赖关系也是类与类之间的联结
   2、依赖总是单向的。
   3、依赖关系在 Java 或 C++ 语言中体现为局部变量、方法的参数或者对静态方法的调用。

显示代码打印

public class Person
   { 
   public void buy(Car car) 
   { ... } 
   }

总结:

1、不同的关系采用不同的 UML 图例
   2、对于聚合关系、合成关系,由于都是关联关系的一种,因此在不确定的情况下,可以以关联关系来描述它们。

区分 UML 类图中的几种关系相关推荐

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

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

  2. UML类图中符号的含义

    UML类图中符号的含义 类图中的基本符号由虚线.箭头.实线.空心三角形.空心菱形.实心菱形组成,这些符号的组合构成类图的基本符号 实线+箭头 表示关联关系 关联关系分类 自身关联 表示自身拥有一个自身 ...

  3. UML类图中各种箭头和线条的含义和用法(转)

    UML类图中箭头和线条的含义和用法 1.UML中关系 本节向大家学习一下UML箭头.线条代表的意义,UML中关系主要有依赖,聚合,合成,泛化和实现等,下面就让我们来看一下这些关系如何用UML箭头和线条 ...

  4. UML类图中的六大关系:关联(单向、双向、自关联)、聚合、组合、依赖、继承、实现

    一.类的属性的表示方式 在UML类图中,类使用包含类名.属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个A类,它包含c.d两个属性,以及methodA方法. 那么 ...

  5. java uml 类图 加号_UML建模基础 UML类图的组成元素和关系解析

    本文和大家重点讨论一下在UML建模中UML类图的java代码表现,主要包括UML类图元素和关系两大部分内容,相信通过本文的介绍你对UML类图的概念一定会与明确的认识. 在UML建模中UML类图的jav ...

  6. UML类图中的各种箭头代表的含义(转自:http://www.cnblogs.com/damsoft/archive/2016/10/24/5993602.html)

    1.UML简介 Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是 ...

  7. [转]UML类图中连接线与箭头的含义

    目录: 一些概念 关联 1.双向关联 2.单向关联 3.自身关联(反身关联) 2.依赖 1 单向依赖 2 双向依赖 组合/聚合 1 组合 2 聚合 泛化和实现 1 继承(Derived) 2 接口实现 ...

  8. UML类图中连接线与箭头的含义(转)

    UML类图是描述类之间的关系 概念 类(Class):使用三层矩形框表示. 第一层显示类的名称,如果是抽象类,则就用斜体显示. 第二层是字段和属性. 第三层是类的方法. 注意前面的符号,'+'表示pu ...

  9. [跟我学UML] UML类图中的泛化

    本文基于UML规范,介绍了类图中的泛化.此外,还通过举例说明来帮助读者加深理解. ...打开附件阅读全文.

最新文章

  1. github删除文件夹
  2. c 反编译工具_App安全检测实践基础——工具篇
  3. 5位无符号阵列乘法器设计_可变位宽的大规模矩阵乘法方法
  4. 读取数据库信息构建视图字段的备注信息,方便程序代码生成
  5. 【B】替换 Quartz.net 默认使用的 MySql.Data 为 Mysqlconnector 的学习过程
  6. Python用subprocess的Popen来调用系统命令
  7. 云原生之容器安全实践
  8. [CLR via C#]16. 数组
  9. 电脑复制粘贴_ALTC 让电脑和手机能“跨屏”互相复制粘贴的免费工具!
  10. 想去三亚旅游,有什么好的景点推荐吗?
  11. 冒泡排序 (Bubble Sort)
  12. 富士施乐3300打印机驱动安装说明
  13. Qt设计师的简单使用(ui设计界面的简单使用)
  14. 基于树莓派的智能门禁及3D外壳打印设计
  15. 一个简单的java代码,输入当前星期,输出今天是星期几
  16. 互联网快讯:微信视频号公布MCN招募计划;极米投影产品双十一持续热销;亚马逊计划再发射4538颗卫星
  17. 开箱即用的高匿代理抓取工具
  18. php 链接oracle tns,PHP连接Oracle ORA
  19. facetune2 android,facetune2
  20. 在mathtype输入花体

热门文章

  1. 学好python需要多久-python入门要学多久
  2. 用python画爱心的代码-Python一行代码画个爱心案例
  3. python第三方库排行-Python常用第三方库总结
  4. python3.7和3.8的区别-Python 3.8 有什么新变化
  5. NIST 人脸识别竞赛 FRVT(Face Recognition Vendor Test)
  6. 解决git提示Permission denied (publickey)
  7. docker-compose常用命令
  8. re2c编译选项的说明
  9. Python网络爬虫与信息提取(三)(正则表达式的基础语法)
  10. 修改ubuntu的终端提示符