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

    文章

    1959

    浏览量

    38918
  • C++语言
    +关注

    关注

    0

    文章

    147

    浏览量

    7586

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    看懂C语言程序的内聚和耦合

    的越紧密,则它的内聚性就越高。 耦合是程序各模块之间相互联系紧密程度的一种度量。各模块之间联系越紧密,其耦合性就越强。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
    发表于 12-08 06:37

    `lv_obj_tree.h` **LVGL v9** 的位置和作用

    lv_obj_tree.h LVGL v9 的位置和作用如下: 文件路径 lv_obj_tree.h 位于 LVGL 源码的 src/core/ 目录下,完整路径是: lvgl/src
    发表于 11-13 15:49

    图解码说-六大UML关系(依赖,继承,实现,关联,聚合,组合)

    UML 图是面向对象设计的 “施工图”,而依赖、继承、实现、关联、聚合、组合这六大关系,就是图中定义
    的头像 发表于 11-05 09:03 323次阅读
    图解码说-六大UML<b class='flag-5'>类</b>图<b class='flag-5'>关系</b>(依赖,继承,实现,关联,聚合,组合)

    PYQT 应用程序框架及开发工具

    通讯是面向对象程序设计的一个极其重要的内容,类似 MicrosoftMFC的消息映射和事件循环,Q T 的对象间通讯采用的是 signal-slot 机制, signal 就好像是事件
    发表于 10-29 07:15

    网线企业主要使用在哪些场景里

    网线企业主要应用于以下场景: 数据中心内部互联 核心需求:数据中心需处理海量数据传输,八网线支持 40Gbps 传输速率 和 2000MHz 带宽,可满足服务器与交换机间的高
    的头像 发表于 09-10 09:56 444次阅读

    MG51FB9AE MCU,如何使用LDROM的IAP加载程序MCUAPROM中上传程序

    MG51FB9AE MCU,如何使用LDROM的IAP加载程序MCUAPROM中上传程序
    发表于 08-22 06:29

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

    个独立的,是一个独立的对象,它拥有自己的私有数据和行为(方法vi);该对象通过“消息”与其他操作者进行通信,或通过“消息”自己内部调用具体某个行为vi。 2、每个actor
    发表于 05-14 18:44

    程序设计与数据结构

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

    CY7C65215使用IOS的USB CDC UART驱动程序是否可以与IOS一起工作?

    我知道 CY7C65215 没有适用于 IOS 的驱动程序。但是,使用 IOS 的 USB CDC UART 驱动程序是否可以与 IOS 一起工作? 我们正在考虑
    发表于 04-30 07:57

    妇女节|从程序设计的先驱到嵌入式系统的革新者!

    领域的技术高管占比仍不足15%,这仅是科技行业整体高管性别平等水平的一半。尽管如此,女性在这一领域的影响力丝毫未减。从程序设计的先驱到嵌入式系统的革新者,数不胜数
    的头像 发表于 03-08 09:55 728次阅读
    妇女节|从<b class='flag-5'>程序设计</b>的先驱到嵌入式系统的革新者!

    对象存储是什么结构类型?

    对象存储属于非结构化数据存储架构,采用扁平化命名空间结构。其核心通过唯一标识符(ObjectID)定位数据对象,突破传统文件系统的层级目录限制,形成"桶-对象"两级逻辑模型。数据以独立对象
    的头像 发表于 02-10 11:14 693次阅读

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

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

    实际网络水晶头和六水晶头的应用情况

    实际网络,五水晶头和六水晶头都有广泛的应用,但它们的应用场景和性能特点有所不同。 五水晶头 五
    的头像 发表于 02-06 09:57 1349次阅读

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

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

    HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据权限与基础数据

    提供了async版本供该场景使用。 当前,wantParams“sessionId”字段迁移流程中被系统占用,建议开发者wantParams定义其他key值存储该分布式数据
    发表于 12-24 09:40