温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何浅析RT-Thread面向对象编程思路

发布时间:2021-12-17 14:46:26 来源:亿速云 阅读:244 作者:柒染 栏目:互联网科技

今天就跟大家聊聊有关如何浅析RT-Thread面向对象编程思路,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

前言

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

一个对象可以概况如下:


如何浅析RT-Thread面向对象编程思路  

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。


如何浅析RT-Thread面向对象编程思路  

一个rt_object的属性如下:

如何浅析RT-Thread面向对象编程思路  

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

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

如何浅析RT-Thread面向对象编程思路  

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

如何浅析RT-Thread面向对象编程思路  

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

03

rt-thread中对象的管理

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

如何浅析RT-Thread面向对象编程思路  

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

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);

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

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

看完上述内容,你们对如何浅析RT-Thread面向对象编程思路有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI