0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

类在面向对象程序设计中的几种关系

strongerHuang ? 来源:嵌入式情报局 ? 作者:情报小哥 ? 2022-09-16 09:07 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、类之间的关系

类在面向对象程序设计中是一个非常重要的概念,是一系列具有相同属性和方法的对象抽象,那么弄明白类之间的主要关系对于面向对象程序设计建模起到了指导意义。

类之间关系主要分为如下几种:

5bb0500a-3557-11ed-ba43-dac502259ad0.png

下面对类的这几种关系进行详细描述:

2、实现关系

类之间的实现关系主要是用于描述接口与类或者组件之间的关系,该接口是操作和方法的集合,提供给类使用。

这样不同的类通过统一的接口以自己的方式来进行实现。

5bee5ad0-3557-11ed-ba43-dac502259ad0.png

C++语言中体现实现关系主要通过virtual虚函数来表达,而接口是通过纯虚函数来表达。

3、泛化关系

泛化其实也叫做继承关系,在学习C++编程语言中应该是对其非常了解了。

5c33479e-3557-11ed-ba43-dac502259ad0.png

比如子类继承父类的相关属性和方法。

4、依赖关系

依赖关系更多的一种使用关系,比如某人要去上班,那么他需要依赖于一种交通工具,可以是公交车、可以是同事的车等等。

在程序中通常一个类是另外一个类的参数或者返回值等等。

5c8283ae-3557-11ed-ba43-dac502259ad0.png

5、关联关系

关联算是复杂一点的关系形式,主要有一般关联、聚合和组合。关联关系的两个类更多的是处于一种平等的位置,而非从属关系。

通常在C++中一个类作为另外一个类的成员变量,这种叫单向关联,如果我中有你,你中有我,则是一种双向关联等等。

5cb91fa4-3557-11ed-ba43-dac502259ad0.png

聚合关系是一种整体与部分的关系,但是整体与部分可以分开独立存在,部分可以添加到整体,也可从整体中移出。

5cda2de8-3557-11ed-ba43-dac502259ad0.png

而组合关系也是一种整体与部分的关系,但其关联性更强,两者不可分开,且具有统一的生命周期,同生死共存亡。

5d009dde-3557-11ed-ba43-dac502259ad0.png

举个例子,电脑的可以使用不同品牌的内存条,那么其可以看成聚合的关系,而一个人与嘴巴的关系,这种关联性更强的属于组合关系,属于生命一体。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程语言
    +关注

    关注

    10

    文章

    1957

    浏览量

    36966
  • C++语言
    +关注

    关注

    0

    文章

    147

    浏览量

    7345

原文标题:面向对象类之间的几种关系

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    [Actor] 通过actor创建控制中心与数据采集工作站来看操作者架构

    *附件:面向对象试验机测控系统.zip 一、actor对象描述 1、actor对象本身就是一个队列状态机,空白的一个
    发表于 05-14 18:44

    程序设计与数据结构

    程序设计与数据结构》重点阐述了三大方向内容: 1. C语言学习的痛点:针对当前工程师C语言学习的痛点,如指针函数与函数指针,如何灵活应用结构体等。从变量的三要素(变量的类型,
    发表于 05-13 16:45

    请问ADS1282SYNC是做什么用的,和读写程序关系吗?

    请问ADS1282SYNC是做什么用的,和读写程序关系吗?我现在只是给接到了上拉3.3V电阻,不知道这是否和我的程序不一直读0有关系
    发表于 02-08 09:16

    射频的ADC和非射频ADC电路设计,以及程序控制上是否完全一致?

    请问: 通常射频的ADC例如 ADC12D1800RF, 与其非射频ADC12D1800,电路设计,以及程序控制上是否完全一致。 还是用于射频时,
    发表于 01-23 06:07

    电感与电流波形的关系 电感电源管理的作用

    电感与电流波形的关系 电感是电路的一种重要元件,它储存能量,并与电流波形之间存在密切的关系。以下是对这种关系的详细分析: 电感对波形幅值的影响 :电感的大小会影响波形的幅值。电感越大
    的头像 发表于 12-03 16:59 ?2121次阅读

    一文了解嵌入式软件开发的对象

    以前应用场景很单一,嵌入式开发可能谈不上面向对象开发。但现在,做嵌入式开发,没有面向对象开发,你就有点落伍了。 本文结合个人经验和周立功《抽象接口技术和组件开发规范及其思想》,循
    的头像 发表于 11-15 10:31 ?940次阅读
    一文了解嵌入式软件开发的<b class='flag-5'>对象</b>

    第5章 MATLAB程序设计.ppt

    第5章 MATLAB程序设计
    发表于 10-24 16:40 ?1次下载

    《DNK210使用指南 -CanMV版 V1.0》第二十一章 machine.UART实验

    machine.UART介绍21.2 硬件设计21.3 程序设计21.4 运行验证 21.1 machine.UART介绍machine.UART是machine模块内提供的
    发表于 10-17 09:31

    《DNK210使用指南 -CanMV版 V1.0》第十九章 machine.PWM实验

    machine.PWM介绍19.2 硬件设计19.3 程序设计19.4 运行验证 19.1 machine.PWM介绍machine.PWM是machine模块内提供的
    发表于 10-16 09:23

    《DNK210使用指南 -CanMV版 V1.0》第十八章 machine.Timer实验

    :18.1 machine.Timer介绍18.2 硬件设计18.3 程序设计18.4 运行验证 18.1 machine.Timer介绍machine.Timer是machi
    发表于 10-16 09:21

    《DNK210使用指南 -CanMV版 V1.0》第十七章 machine.WDT实验

    学习到machine模块WDT的使用。本章分为如下几个小节:17.1 machine.WDT介绍17.2 硬件设计17.3 程序设计17.4 运行验证 17.1 machine
    发表于 10-15 14:32

    ostreamc++的用法

    ostream 是 C++ 标准库中一个非常重要的,它位于 头文件(实际上,更常见的是通过包含 头文件来间接包含 ,因为 包含了 和 )。 ostream 及其派生(如 std
    的头像 发表于 09-20 15:11 ?2036次阅读

    labview中常用的程序结构有哪几种

    ,简称NI)开发,广泛应用于工程、科学和教育领域。LabVIEW通过图形化编程界面,使用户能够快速构建复杂的数据采集、仪器控制、信号处理和用户界面等应用程序LabVIEW程序
    的头像 发表于 09-04 16:32 ?1915次阅读

    stm32程序烧录的几种方法?

    STM32是一款由STMicroelectronics公司推出的32位微控制器,广泛应用于嵌入式系统开发。烧录STM32程序是开发过程的重要环节。本文将介绍几种常见的STM32程序
    的头像 发表于 08-22 09:35 ?1.1w次阅读

    java子类可以继承父的什么

    Java是一种面向对象的编程语言,它支持继承的概念。继承是面向对象编程的三大特性之一,它允许一个(称为子类或派生
    的头像 发表于 08-20 11:02 ?2491次阅读