rtt面向对象oopc——1.rtt定义的这些类有什么用?

概念澄清
抽象类:c++的定义是至少有一个纯虚函数的类(还有其他公共的、私有的方法)。
接口类:c++的定义是类中只有纯虚函数,最好不要有成员变量,有也要是保证是静态常量等等规定。
可以看到抽象类是对类的抽象,接口类是对抽象类的再抽象。
那么在OOPC中如何区分接口类和抽象类?不知道,没有这些概念吧。c语言又没有提供这些概念和语法。不过可以模仿c++进行如下定义:
oopc接口类:类中既有方法又有属性的类。
oopc纯接口类:只有方法的类
oopc面向接口编程:因为c语言中没有这些接口类的语法定义,所以管它呢,统称为接口得了。所以面向接口编程就无所谓纯不纯了,只要有方法就算接口得了。

正文
《rtt面向对象oopc——0.类、对象及派生》统计了rtt很多很多类及其派生继承关系,见https://blog.csdn.net/yhb1206/article/details/102618404
那么这些类有啥用?

1.面向接口编程
面向接口编程指的是下层(子类)受到上层(父类)接口的约束。因为各子类都内嵌一样的一套父类struct结构体(参见《oopc——继承》)——这就约束了各子类要各自实现父类里面的各接口(函数指针),这样才能体现多态。

2.统一协议,屏蔽不同子类的差异
这个屏蔽就是通过具有相同的父类来屏蔽的。

3.复用性强
按类来建立管理接口,这样管理方便,复用性强。
以串口为例,各管理接口从上到下分散在如下c文件中:
—> device.c
—> serial.c
—> drv_uart.c

drv_uart.c是最底层、驱动层,是串口设备类的驱动管理接口所在地,也是开发者唯一要干的活——注意,这样的c文件有很多很多很多——以各BSP为单位进行的编写的,rtt源码下/bsp下的各个平台,每个平台一个drv_uart.c(可能不叫这名字,根据各bsp开发者的兴趣而定)。
serial.c属于rtt框架对接层,是串口设备类管理接口所在。rtt已开发完,不需要开发人员动任何代码(除非发现BUG)。该层又再上一层的差异屏蔽,它可以对接各种芯片实现的的drv_uart.c(可能名字不叫这根据各个芯片BSP的开发者喜好来定)。注意,还层只有这一个.c文件,666。
device.c是设备管理层,是设备基类管理接口所在。该层更牛逼,屏蔽了底层各设备类(串口设备类、CAN设备类等)的差异,统一接口。同框架对接层一样,rtt已开发完,不需要开发人员动任何代码(除非发现BUG)。注意,该层也是只此一个.c,6不6。

复用性超级强
(1)驱动层属于同一芯片的不同板载完全可以共用该层代码。
(2)框架对接层,是不管什么芯片都在共用的。
(3)设备管理层更厉害了,不管什么芯片,也不管什么具体设备类,大家都共用。

4.管理接口精简化
按类来建立管理接口,每类只有一套管理接口。

5.健壮性
因管理接口统一共用,一直很稳,保障程序的健壮性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值