类与类之间的几种关系

2023-11-17

http://www.cnblogs.com/liuling/archive/2013/05/03/classrelation.html

一、继承关系      继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在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类图设计中,组合关系以实心菱形加实线箭头表示。 


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



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类与类之间的几种关系 的相关文章

随机推荐

  • 多媒体技术复习题

    多媒体技术复习题 一 选择题 1 所谓媒体是指 b A 二进制代码 B 表示和传播信息的载体 C 计算机输入与输出的信息 D 计算机屏幕显示的信息 2 帧频率为25帧 秒的电视制式有 b A PAL NTSC B PAL SECAM C S
  • SURF算法原理

    1 先对图像进行高斯滤波 2 选用二阶标准高斯函数作为滤波器 通过特定核间的卷积计算二阶偏导数 计算出Hessian矩阵 3 计算判别式的值 根据判别式取值的正负 来判断该点是不是极值点 4 利用非极大值抑制初步确定的特征点 5 精确定位极
  • STM32单片机PT100温度采集控制系统

    实践制作DIY GC0030 PT100温度采集控制系统 一 功能说明 基于STM32单片机设计 PT100温度采集控制系统 功能介绍 STM32F103C系列最小系统班 PT100温度传感器 LCD1602显示器 12mA恒流源电路 继电
  • Failed to resolve import “element-plus/lib/theme-chalk/index.css“ from “src\...

    Failed to resolve import element plus lib theme chalk index css from src 学习vue3 ts中遇到的问题 vue3 ts搭建参考掘金文章 很详细 希望我能早日学会这套东
  • 最小二乘法求解圆方程圆形及半径

    ci最小二乘法定义 摘抄于百度百科 基本思路 摘抄于百度百科 简单的来说 最小二乘法为一类线性算法 将需要求解的系数当作未知数 f x 与x当作已知数 通过多组对应关系求得系数的方法 所以 最小二乘法仅适合系数为一次项方程式 例如 k与b作
  • 贝叶斯软件genle教程_贝叶斯网络可视化软件GeNIe使用说明

    实例简介 详细的介绍了贝叶斯网络可视化软件GeNIe使用说明 适合初学者 Table of contents 3 1 Read me first 2 Hello gentel 13 3 Introduction 31 3 1 Guide t
  • js替换所有的回车换行符

    替换所有的回车换行 function TransferString content var string content try string string replace r n g br string string replace n
  • Intelij IDEA 配置Tomcat时找不到 “Application Server”

    由于公司突然断电 再打开idea的时候 tomcat就消失了 然后在网上搜了一下 没搜到自己乱点了一下 如图 plugins gt gt application servers View 是报红色 所以我在搜索栏搜索了tomcat 如果箭头
  • Java的replaceAll()方法

    replaceAll 方法实际是采用正则表达式的规则去匹配的 在regex中 表示一个 在java中一个 也要用 表示 这样 前一个 代表regex中的 后一个 代表java中的 所以字符串转义一次 正则转义一次 那么一个斜扛要写4个 1
  • R语言实现常用的5种分析方法(主成分+因子+多维标度+判别+聚类

    来源 R友舍 R语言多元分析系列之一 主成分分析 主成分分析 principal components analysis PCA 是一种分析 简化数据集的技术 它把原始数据变换到一个新的坐标系统中 使得任何数据投影的第一大方差在第一个坐标
  • linux下的qt可以调用脚本吗,QT下实现对Linux Shell调用的几种方法

    使用QProcess QThread include int main QProcess execute ls return 0 QProcess poc new QProcess poc gt start ping 222 207 53
  • vue学习 十七 Vue路由和http请求

    路由的实现 首先需要cmd将路由模块装上 然后重启项目 多打几遍就熟悉了npm run dev 在下面的黑窗口中 我之前已经装过了路由模块 显示如下 npm install vue router save dev npm run dev 然
  • 什么?到现在你还不知道什么是 访问修饰限定符吗?

    导航小助手 前言 一 public 访问修饰限定符 二 private 访问修饰限定符 三 default 访问修饰限定符 3 1 包的概念 3 2 导入包中的类 3 3 自定义包 3 4 包访问权限 3 5 常见的包 四 protecte
  • 4.人脸检测mtcnn+mobilenet戴口罩分类

    from keras models import Model Sequential import tensorflow as tf import numpy as np import cv2 import os from functools
  • Centos Linux系统配置SSH免密登录

    首先修改host 将需要互相免密的机器相互加入到host文件中 vi etc hostname 添加主机名 hadoop2 vi etc sysconfig network 添加IP和hostname对应关系 192 168 8 107 h
  • 基于 EMQX 和 Neuron 的工业物联网 MQTT Sparkplug 解决方案

    引言 Sparkplug 是基于 MQTT 的一种专门为工业自动化和物联网应用而设计的通信协议 要搭建 Sparkplug 解决方案 需要两个核心组件 一个是 MQTT Broker 负责消息的分发和管理 另一个是边缘节点 负责将本地设备接
  • Python机器学习之k-means聚类算法

    1 引言 所谓聚类 就是按照某个特定的标准将一个数据集划分成不同的多个类或者簇 使得同一个簇内的数据对象的相似性尽可能大 同时不再一个簇内的数据对象的差异性也尽可能大 聚类算法属于无监督学习算法的一种 k 均值聚类的目的是 把 n个点 可以
  • 【Python自动化Excel】Python与pandas字符串操作

    Python之所以能够成为流行的数据分析语言 有一部分原因在于其简洁易用的字符串处理能力 Python的字符串对象封装了很多开箱即用的内置方法 处理单个字符串时十分方便 对于Excel csv等表格文件中整列的批量字符串操作 pandas库
  • 分享8个Python赚钱的接单平台!兼职月入5000+

    如果说当下什么编程语言最靠谱或者比较适合搞副业 答案肯定100 是 Python python是所有语法中最简单易上手的语言 不需要特别的的英语词汇量 逻辑思维也不需要很差就能上手 而且学会了之后就能编写代码爬取各种数据 制作各种图表 提升
  • 类与类之间的几种关系

    http www cnblogs com liuling archive 2013 05 03 classrelation html 一 继承关系 继承指的是一个类 称为子类 子接口 继承另外的一个类 称为父类 父接口 的功能 并可以增加它