rtt面向对象oopc——2.对象容器理解和rtt类的联系

1.rtt的对象容器
rtt的对象容器就是一个数组。
这个数组有多长?有多少大类,数组就有多长。每类占用数组的一个元素,每个元素维护一类对象的链表(可开启跳表加速查询),如下官方图:
rtt的对象容器
rtt中各个类创建的对象都会挂到对象容器对应的链表中去(实际上是调用rtt源码src / object.c中的rt_object_init把各个类创建的对象成员中的基类对象成员挂到对象容器中对应的链表中去)。

2.rtt对象容器的比喻
2.1 rtt对象容器就像一个图书馆

rtt各类创建了很多对象相当于图书馆采购了很多本书,然后把它分门别类地放到对应书架上去。用的时候,你根据名字和类别就能找到对应的对象的地址。

2.2 对象容器也像一个工具箱
刀斧剑戟,样样都有。

2.3 也是对象服务管理中心
场景一:存放对象到对象容器中
中心:您好,欢迎光临,很高兴为您服务!
客户:我要存放xx对象,这是名字、类别和地址。
中心:好的,请稍等。
中心:您好,xx对象已存好了,请您记好名字和类别以方便来取(或对不起,该类中重名了,无法存放,请修改名字再来存放)。

场景二:从对象容器中取出对象
中心:您好,欢迎光临,很高兴为您服务!
客户:给我查找下xx对象,这是名字和类别。
中心:好的,请稍等。
中心:您好,这是xx对象的地址,请及时取走(或对不起,您查找的对象不存在,请核对后再来)。

——这么看来,对象容器又像一个快递柜。

3.对象容器和类的联系
对象容器就像图书馆,类创建的对象就像书,类是出书的作者。

4.为何要这么设计?
(1)方便管理。在运行过程中创建了多少对象,系统了如指掌。对象容器起到了监控整个系统的作用。
(2)方便使用。各个对象分散在不同的.c文件中,有的是静态变量,如果没有对象容器,一个模块想要使用另一个模块的对象,就需要extern,长此以往,代码中到处都是extern了——很不美观,影响观瞻。但有了对象容器,那么不管系统运行在哪个.c/.cpp/.py等,想要使用别的模块对象,那么就可以根据名字和类别从对象容器中取到——多么方便,多么优美——和rtt追求的“小而美”一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值