UML定义的关系主要有六种:依赖、类属、关联、实现、聚合和组合。这些类间关系的理解和使用是掌握和应用UML的关键,而也就是这几种关系,往往会让初学者迷惑。这里给出这六种主要UML关系的说明和类图描述,一看之下,清晰明了;以下就分别介绍这几种关系:

继承

指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;

实现

指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性;

依赖

可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用;

关联

他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;

聚合

聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;

组合

组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;

对于继承、实现这两种关系没多少疑问,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准备定位是很难的,前面也提到,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖。

原文地址:http://www.uml.org.cn/oobject/201006114.asp

转载于:https://www.cnblogs.com/davidwang456/p/4027993.html

UML解惑:图说UML中的六大关系--转相关推荐

  1. 软件设计之UML—UML中的六大关系

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

  2. UML 中的六大关系详解

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

  3. [UML]UML系列——用例图中的各种关系(include、extend)

    [UML]UML系列--用例图中的各种关系(include.extend) 原文:[UML]UML系列--用例图中的各种关系(include.extend) 用例图中的各种关系 一.参与者与用例间的关 ...

  4. _001_UML_UML中的六大关系

    转发,感谢作者的无私分享. 一.UML中的六大关系 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合 ...

  5. 《UML中的六大关系》和《Eclipse中如何使用UML方便查看项目框架》

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

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

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

  7. UML(统一建模语言)类图的六大关系

    在UML类图中,类之间的关系可以分成:关联(association).聚合(aggregation).组合(composition).依赖(dependency).泛化(generalization) ...

  8. 通过简单例子 | 快速理清 UML类图中六大关系

    类与类之间的六大关系 泛化 ( Generalization ) -> 表继承关系 实现 ( Realization ) 关联 ( Association ) 聚合 ( Aggregation ...

  9. UML中的六种关系的比较与学习

    通过不断的学习并绘制UML图,整个画图的过程中深刻体会到其核心部分还是理解事物之间的关系,总结六大关系来深入学习,主要关系有六种:继承.实现.依赖.关联.聚合.组合. 区别于联系:         1 ...

最新文章

  1. Python记录-基础语法入门
  2. 《疯狂动物城》电脑壁纸
  3. 利用 PGO 提升 .NET 程序性能
  4. mysql 多行拼接注入_MySQL注入汇总
  5. 麒麟操作系统|Linux下低延时RTMP|RTSP直播播放实现
  6. 大数据分析常见的9个错误
  7. C++ VS Java 系列 —— 访问控制
  8. 使用cross-env解决跨平台设置NODE_ENV的问题
  9. linux 配置ssh免密码登录脚本
  10. (笔记)《游戏脚本高级编程》——第2章 脚本编程系统的应用(上)
  11. 支付宝和淘宝网的一些伦理道德问题
  12. 统计学的计算机实现的心得体会,浅谈我对统计学的认识
  13. 用tushare数据自定义期货大宗商品指数(1)
  14. SQL 中的注释语句
  15. 相关性 与 相干性 那些事
  16. arm汇编的学习笔记,对比x86和arm(1)-从最简单的函数谈起
  17. C#文件操作相关语句 - 大全
  18. 电商直播系统开发Android10.0 导航栏和状态栏动态控制合集
  19. 就是这么简单,QQ被盗了可以这样找回来!
  20. 图解机器学习(部分)

热门文章

  1. centos修改磁盘uuid_CentOS 6如何修改磁盘配额限制
  2. 计算机知识必备,小结||计算机基础知识点十(必备)
  3. 互斥信号量的等待与通知
  4. python从入门到实践_Python编程从入门到实践日记Day32
  5. mysql php 入门_第一节 数据库概述_MySQL_php入门教程
  6. android 之Fragment(轻量级的Activity)详解
  7. sql select
  8. 七层神经网络 PK logstic 回归
  9. tar php启动,安装php过程(FastCGI模式)
  10. oracle创建表语句_利用FME去拼接SQL语句并创建表