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

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

3天内不再提示

面向对象类之间主要的几种关系简析

strongerHuang 来源:嵌入式情报局 2023-02-17 09:03 次阅读

嵌入式开发虽然平时C语言用的比较多,但面向对象的思维应该是每一位嵌入式软件工程师必备的知识。

之前给大家分享过用C语言实现面向对象的内容,也分享过单片机C++点灯的文章。

今天就再给大家拓展一下面向对象类之间的几种关系。

1、类之间的关系

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

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

2d9ec21e-ae5b-11ed-bfe3-dac502259ad0.png

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

2、实现关系

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

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

2dbb253a-ae5b-11ed-bfe3-dac502259ad0.png

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

3、泛化关系

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

2dcb267e-ae5b-11ed-bfe3-dac502259ad0.png

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

4、依赖关系

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

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

2ddc33ce-ae5b-11ed-bfe3-dac502259ad0.png

5、关联关系

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

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

2dee5b26-ae5b-11ed-bfe3-dac502259ad0.png

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

2e02cbf6-ae5b-11ed-bfe3-dac502259ad0.png

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

2e1d479c-ae5b-11ed-bfe3-dac502259ad0.png

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






审核编辑:刘清

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

    关注

    0

    文章

    23

    浏览量

    12265
  • 编程语言
    +关注

    关注

    10

    文章

    1944

    浏览量

    34720
  • C++语言
    +关注

    关注

    0

    文章

    147

    浏览量

    6990

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

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

收藏 人收藏

    评论

    相关推荐

    基于C/C++面向对象的方式封装socket通信流程

    在掌握了基于 TCP 的套接字通信流程之后,为了方便使用,提高编码效率,可以对通信操作进行封装,本着有浅入深的原则,先基于 C 语言进行面向过程的函数封装,然后再基于 C++ 进行面向对象
    的头像 发表于 12-26 10:00 1819次阅读

    利用LabVIEW工程库实现面向对象编程

    ,编写出来程序会越来越显得杂乱无章,使得程序的调试、维护、和升级都变得非常困难。 解决这一问题的途径就是引入更加抽象化的面向对象的编程方法[2]。通过构造的方法,把不同模块之间的数据
    发表于 12-06 12:41

    3分钟看懂Python面向对象

    Python虽然是解释型语言,但从设计之初就已经是一门面向对象的语言,对于Python来说一切皆为对象。正因为如此,在Python中创建一个对象
    发表于 06-08 14:20

    对象关系的阻抗失配的含义了解

    也对这个问题深感头痛。“阻抗失配”产生的原因是因为对象模型与关系模型之间缺乏固有的亲合力。“阻抗失配”所带来的问题包括:的层次关系必须绑定
    发表于 06-04 06:47

    LabVIEW面向对象的ActorFramework(1)

    ` 本帖最后由 bollworm 于 2020-2-10 14:54 编辑 本系列文章主要阐述以下几个问题:(1)什么是面向对象编程?(2)为什么要学习面向编程?(3)LabVIE
    发表于 02-10 14:09

    谈谈面向对象编程

    工业控制系统的PLC程序中也可以采用这种设计思想,虽然我们无法实现面向对象的很多优秀特点如“继承”,甚至于它根本就不具备面向对象编程语言的特点,但
    发表于 09-08 07:47

    面向对象编程语言的特点

    工业控制系统的PLC程序中也可以采用这种设计思想,虽然我们无法实现面向对象的很多优秀特点如“继承”,甚至于它根本就不具备面向对象编程语言的特点,但
    发表于 09-08 07:44

    解读rtt的c的面向对象对象创建及其启动初始化流程

    解读rtt的IO设备框架。先澄清下概念,这些概念是进行新的定义或者表达名词在本文中的意思,防止有二义。然后介绍各类关系,IO设备框架对应的。再接着用伪代码举出了面向对象语言的
    发表于 07-05 11:01

    面向对象软件开发概述

    1.1 面向对象问题求解的提出1.2 面向对象问题求解概述1.3 对象与实体1.4
    发表于 12-14 20:26 15次下载

    对象/关系映射中的完整性及关系约束检查

    【摘要】针对面向对象设计与关系数据库设计之间的不匹配问题,介绍了一种映射方法O/R Mapping。在使用对象模型时,常常通过
    发表于 03-15 14:01 13次下载

    基于代数规格的面向对象蜕变关系构造方法

    针对面向对象软件级测试中方法序列调用时的Oracle问题,提出了一种基于代数规格的面向对象蜕变关系
    发表于 01-03 16:31 0次下载

    UML之间关系

    UML中描述对象之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Gene
    的头像 发表于 09-25 09:57 3882次阅读
    UML<b class='flag-5'>类</b>图<b class='flag-5'>之间</b>的<b class='flag-5'>关系</b>

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

    面向对象程序设计中是一个非常重要的概念,是一系列具有相同属性和方法的对象抽象,那么弄明白之间
    的头像 发表于 09-16 09:07 1440次阅读

    面向过程与面向对象的区别

    说起面向对象,大家可能会想到其他的,但是此对象非彼对象哈哈,不必惊慌,也特别好搞定。 在听到面向
    的头像 发表于 02-15 11:10 4188次阅读
    <b class='flag-5'>面向</b>过程与<b class='flag-5'>面向</b><b class='flag-5'>对象</b>的区别

    利用UML(图)表示之间的6种关系

    在java以及其他的面向对象设计模式中,之间主要有6种
    的头像 发表于 05-05 10:18 2274次阅读
    利用UML(图)表示<b class='flag-5'>类</b><b class='flag-5'>之间</b>的6种<b class='flag-5'>关系</b>