189 8069 5689

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

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

10多年的磐石网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整磐石建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“磐石网站设计”,“磐石网站推广”以来,每个客户项目都认真落实执行。

前言

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

一个对象可以概况如下:

如何浅析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面向对象编程思路有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


网页名称:如何浅析RT-Thread面向对象编程思路
新闻来源:http://cdxtjz.cn/article/pcoehs.html

其他资讯