一、继承关系      继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口。

二、实现关系      实现指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性。在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。

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

四、关联关系  关联体现的是两个类之间语义级别的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记。

五、聚合关系      聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如计算机与CPU、公司与员工的关系等,比如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,聚合关系以空心菱形加实线箭头表示。

六、组合关系     组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,组合关系以实心菱形加实线箭头表示。

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

面向对象类和类之间的几种关系相关推荐

  1. 浅谈UML类图中类之间的5种关系

    什么是UML类图? 类图显示了一组类.接口.协作以及他们之间的关系.在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统.类加上他们之间的关系就构成了类图,类图中还可以包 ...

  2. 类与类之间的几种关系

    http://www.cnblogs.com/liuling/archive/2013/05/03/classrelation.html 类与类之间的几种关系 一.继承关系      继承指的是一个类 ...

  3. UML--类之间的五种关系

    UML中的关系(Relationships)主要包括5种:关联关系.聚合关系.依赖关系.泛化关系.实现关系 1.关联(Association)关系 关联关系是一种结构化的关系,指一种对象和另一种对象有 ...

  4. SQL外键foreign key 表与表之间的三种关系

    表与表之间的三种关系 多对一关系表 注意事项: 一对多表关系,外键字段建在多的一方. 在创建表的时候,一定要先建被关联表. 在录入数据的时候,也必须先录入被关联表. 删除 一定要先删除主键表,才可以删 ...

  5. UML 类之间的几种关系

    2019独角兽企业重金招聘Python工程师标准>>> 许久不用uml,又忘记这部分资料了,现给记录下.本资料为引用资料,传送门:http://uml.org.cn/oobject/ ...

  6. UML中类之间的几种关系

    类之间可能存在以下几种关系:关联(association).依赖(dependency).聚合(Aggregation,也有的称聚集).组合(Composition).泛化(generalizatio ...

  7. 数据库设计(表与表之间的3种关系)

    表与表之间一般存在三种关系,即一对一,一对多,多对多关系.  下面分别就三种关系讲解数据库相关设计的思路和思考过程: (1)一对一关系  例如,下面的一张表,保存了人的相关信息,有男有女,要求查处所有 ...

  8. UML 中对象和对象之间的几种关系及图例,画法(泛化,依赖,聚合,组合,实现,关联)

    1. 泛化关系 表示一个对象(子对象)继承另外一个对象(称为父对象)的能力,并可以增加它自己新功能的能力 2. 依赖关系 表示一个类使用到了另一个类,被依赖类的变化会影响到类本身 3. 聚合关系 表示 ...

  9. 图像处理基础(三)_像素之间的3种关系

最新文章

  1. 在c语言中逗号的作用,关于c语言中的逗号运算符???
  2. 【建站系列教程】1、前言
  3. Build a react project step by step
  4. js学习总结----获取数组最大值
  5. 罚函数法求解约束问题最优解
  6. delphi FillChar的用法(转)
  7. lt form gt 在html,HTML lt;formgt; 标签的 accept
  8. 创建NGINX Plus和NGINX配置文件
  9. redis分布式锁的这些坑,我怀疑你是假的开发
  10. 计算机专业黑板报迎新,迎新学期黑板报图
  11. C#基础概念 代码样例
  12. c++ primer plus 之c++数据类型
  13. 高德地图纠偏 php,驾车轨迹纠偏-轨迹纠偏-示例中心-JS API 示例 | 高德地图API
  14. 外贸员需要知道的那些事儿
  15. 80004005错误代码_win7系统出现错误代码0x80004005该如何解决
  16. 小强再会卢绍杰漂亮PEUGEOT
  17. 基于TensorFlow的开源JS库的网页前端人物动作捕捉的实现
  18. js实现获取今日、本周、本月、本学期的开始结束日期
  19. C/C++更新linux系统时间和硬件时间的方法
  20. 程序员的爱情 第十七章

热门文章

  1. Error evaluating expression ‘’. Return value () was not iterable.
  2. JVM调优总结(1)
  3. Excel +VBA +ADO+Access数据库分页显示
  4. 内核中的互斥锁的使用
  5. softmax回归的简洁实现
  6. windows10图片打开找不到内置图片查看器
  7. iar msp430 编译文件提示非法的license错误
  8. 一个SAP开发人员的2019年终总结
  9. 关于 java 显示GIF
  10. MAC查看SVN版本日志