activex控件 新对象 ocx 初始化_RTThread面向对象编程思路浅析

前言

在写这篇文章前,我们需要理解面向对象与面向过程的思想。面向过程就是遇到一个问题,将这个问题解决办法一步一步的列出来,就想下棋一样,一步一步走,根据具体情况调整思路。而面向过程就是将逻辑抽象化,就是抽象成一个物体或者对象。

一个对象可以概况如下:

1a56243a-ea18-eb11-8da9-e4434bdf6706.png

01

面向对象的好处

在程序设计中,如果采用面向对象去设计程序,一方面考虑了结构化设计程序的优点,另外一方面又考虑了现实世界与面向对象空间的映射关系。

具体说起来如下:

(1)符合人类思维习惯,能自然地表现现实世界的实体和问题

我们程序往往去操作的就是现实生活的具体的物件,比如门锁控制,门锁的方法有开门和关门,门锁的状态有已经关上,已经开启,或者正在打开或者正在关闭,门锁的组成有机械结构和把手,门锁的含义就是为了保证家庭安全。有了这些思考,我们就可以把门锁控制程序抽象成一个对象了。

(2)代码复用的有效途径

当程序被抽象后,很多方法就可以进行复用操作了,我们可以将具体的东西抽象一层,比如门锁,可以抽象成电机控制,电机的正转反转这个方法不仅适用于门锁,还适用于其他比如把手之类的,所以抽象之后,电机的方法可以被把手和锁体同时复用,大大简化逻辑。

(3)封装使得对象相对独立,对软件维护带来方便

这个理解更加简单,就是降低了程序设计的耦合性,修改或者变更一个功能时,不会引起程序逻辑的混乱。

(4)多态性增强了操作的透明性、理解性和可维护性

多态性和继承的结合增强软件的灵活性和可复用性,由于多态的支持,使得软件的设计更加灵活,稳定。

(5)模块化

要得到可维护性、可复用性与兼容性好的软件,软件的系统结构应该是模块化的。好的模块具有高内聚低耦合的特性,软件质量得到保证

02

rt-thread中面向对象的思想

现实世界中的任何客观存在着的事物都可以称为对象。属性和操作是对象的两大要素。属性是描述对象的静态特征的,操作是描述对象的动态特征的。

我们都知道C语言是面向过程的,如何设计成面向对象。

struct object

{

    int field;

};

struct child_object

{

    struct object parent;

    int a;

    int b;

};

简单的说起来就是结构体的嵌套。

在rtthread中所有的类型的上帝就是rt_object。

1b56243a-ea18-eb11-8da9-e4434bdf6706.png

一个rt_object的属性如下:

1c56243a-ea18-eb11-8da9-e4434bdf6706.png

对象有对应的名称,类型,标识以及下一个的链表。

比如说ipc,消息间的通信机制

1d56243a-ea18-eb11-8da9-e4434bdf6706.png

这些都是基于rt_ipc_object的基类集成的。

1e56243a-ea18-eb11-8da9-e4434bdf6706.png

所以rt-thread的程序设计中,大量的用到了这种面向对象的思想进行设计。

03

rt-thread中对象的管理

我们知道,对象是需要管理的,如果只是一个一个单个的对象,是无法形成一个系统的,rt-thread中对于对象的管理如下图所示:

1f56243a-ea18-eb11-8da9-e4434bdf6706.png

对象容器是操作对象,我们通过特定的方法,将这些容器插入到链表中,由操作系统进行管理。其接口有四大类型:

1.初始化对象

void rt_object_init(struct rt_object* object, enum rt_object_class_type type, const char* name);

初始化对象会设置相应的类别,并放置到相应的对象容器链表中。

2.脱离对象

void rt_object_detach(rt_object_t object);

脱离对象会从相应的对象容器链表中删除。

3.分配对象

rt_object_t rt_object_allocate(enum rt_object_class type type, const char* name);

对于一个动态对象,在使用前需要分配相应的对象数据块。当对象类型指定时,也将从系统的对象表中获得相应的数据块大小,而后分配出来。

4.删除对象

void rt_object_delete(rt_object_t object);

删除一个对象,首先它会做对象的脱离工作,然后释放相应的内存空间。

04

总结

rtthread的设计思想是面向对象的方式,这样使得开发起来耦合性很强,所以在适配不同的bsp包的时候,我们可以不用修改内核部分,只用将bsp的具有接口做好,这种设计非常的理想,不管是我们自己写裸机程序还是使用操作系统设计程序,都应该有这种面向对象的思想,这样设计出来的程序稳定性更加的可靠。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值