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

    文章

    1965

    浏览量

    39848
  • C++语言
    +关注

    关注

    0

    文章

    147

    浏览量

    7768

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问单片机开发的程序设计语言主要有哪几种

    单片机开发的程序设计语言主要有哪几种
    发表于 01-14 08:29

    嵌入式程序设计4种常用模式

    的框架,有一个基定义了图形对象的接口,基于它可以派生出椭圆,矩形,直线各种子类。 当用户绘制一个图形时,框架就要实例化该子类。这时候可以用工厂方法,原型方法等等。 class CDrawObj
    发表于 12-25 07:12

    C语言与C++的区别及联系

    一步的实现,使用的时候一个一个的依次调用就可以了。 面向对象面向对象编程就是把问题分解成各个对象,建立
    发表于 12-24 07:23

    C与C++之间的联系

    控制能力,这一点与C语言相似,使得它们系统编程、嵌入式系统等领域都得到广泛应用。 3、发展历程: C++正是C语言的基础上逐步发展起来的,C++的设计初衷是作为一种“带的C”来增强C语言的功能
    发表于 12-11 06:51

    C语言和C++之间的区别是什么

    区别 1、面向对象编程 (OOP): C语言是一种面向过程的语言,它强调的是通过函数将任务分解为一系列步骤进行执行。 C++C语言的基础上扩展了
    发表于 12-11 06:23

    看懂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 884次阅读
    图解码说-六大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 908次阅读

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

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

    晶体结构晶面和晶向的关系

    晶面和晶向是晶体学两个核心的概念,它们与硅基集成电路工艺的晶体结构有密切的关系
    的头像 发表于 06-05 16:58 4273次阅读
    晶体结构<b class='flag-5'>中</b>晶面和晶向的<b class='flag-5'>关系</b>

    [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