对于许多软件开发人员来说,面向对象编程是一个很好的工具。遗憾的是,使用过程C编程语言的嵌入式软件工程师在许多现代编程语言功能上都失败了。抽象数据类型(通常简称为ADT)是数据类型,其实现细节隐藏在数据结构的用户视图中,但ADT可以使用五个简单步骤在C中开发。
步骤1 -定义抽象数据类型
C中的ADT通常被定义为指向结构的指针。头文件包含没有任何底层细节的ADT声明,由实现者完全声明源模块中的ADT。 ADT的示例包括 StackPtr_t , NodePtr_t 或 QueuePtr_t 等等。下面的示例显示了开发人员如何声明ADT:
声明将会发生在 stack.h 文件中,允许模块的用户使用 StackPtr_t ,它是指向 StackStruct_t 的指针。从用户的角度来看, StackStruct_t 的成员的细节是完全隐藏的。任何与 StackPtr_t 的交互都必须使用预定义的操作完成。
步骤2 -定义可对数据执行的操作
可以在ADT上执行的操作完全取决于ADT的用途。例如,堆栈的ADT可能包括诸如初始化,推送数据,弹出数据,销毁堆栈,检查堆栈是否已满,检查堆栈是否为空等操作,等等。请记住,使用ADT与开发人员通常操作数据的方式完全不同。通常,开发人员会定义数据并编写直接操作数据的代码。使用抽象数据类型,开发人员创建一个接口,在这个接口中间接修改数据。
步骤3 -填写接口规范
接口规范是可以在ADT上执行的所有公共操作的函数原型。接口规范应位于ADT头文件中。回到堆栈示例,开发人员可能会发现接口规范如下所示:
步骤4 -创建实现
ADT的实现可能会从一个应用程序更改为下一个应用程序。事实上,ADT实施可能会在项目开发期间发生变化。这是使用ADT的一个很好的方面:实现细节位于源模块中,并且从高级应用程序开发人员的视图中“隐藏”。因此,ADT的使用为开发者提供了高度的灵活性。可以在下面找到堆栈实现的哪些部分的示例:
步骤5 -将抽象数据类型放入测试
最后,一旦开发人员指定并实现了ADT,就可以通过编写一些应用程序代码来进行测试。应用程序代码应该声明一个ADT,然后通过使用接口规范来操纵数据的内容。初始化ADT并与其数据交互的示例如下所示:
结论
C中的ADT通常分为三个不同的部分:应用程序,规范和实现。 ADT的目的是隐藏数据结构的实现细节,从而改进软件维护,重用和可移植性。使用ADT的开发人员会发现,他们能够快速适应不断变化的需求并节省时间,而无需通过代码搜索晦涩的数据引用。
全部0条评论
快来发表一下你的评论吧 !