background image

轻量级的面向对象 C 语言编程框架 LW_OOPC 介绍

摘要:

本文介绍一种轻量级的面向对象的 C 语言编程框架:LW_OOPC。LW_OOPC 是 Light-

Weight Object-Oriented Programming in(with) C 的缩写,总共一个.h 文件,20 个宏,约 130
行代码,非常的轻量级,但却很好的支持了很多面向对象的特性,比如继承、多态,可以
优美的实现面向接口编程。

为什么要用面向对象?

面向过程方式开发的系统,代码复杂,耦合性强,难以维护,随着我们所要解决的

问题越来越复杂,代码也变得越来越复杂,越来越难以掌控,而面向对象改变了程序员
的思维方式,以更加符合客观世界的方式来认识世界,通过合理的运用抽象、封装、继承

 

和多态,更好的组织程序,从而很好地应对这种复杂性。

为什么不直接使用 C++

C 和 C++之争由来已久,可能要持续到它们中的一种去世^_^。C 语言以其简洁明快,

功能强大的特点,深得开发人员的喜爱,尤其是在嵌入式开发领域,C 语言更是占据了
绝对老大的地位。在我看来,语言只是工具,作为程序员,我们要做的是:选择合适的语
言,解决恰当的问题。我们要尊重事实,考虑开发环境(软硬件环境),考虑团队成员的
水平,从商用工程的角度讲,选择团队成员擅长的语言进行开发,风险要小很多。

一些从 Java/C#转到 C 的程序员们,无法从面向对象切换到面向过程,但又必须与 C

语言同事们在遗留的 C 系统上开发软件,他们有时会非常困惑:C 语言是面向过程的编
程语言,如何实践面向对象,甚至面向接口编程呢?此时,就非常需要在 C 语言中实现
面向对象的手段,而 LW_OOPC 正是应对这一难题的解决之道。

LW_OOPC 是什么?

简而言之:LW_OOPC 是一套 C 语言的宏,总共 1 个.h 文件(如果需要内存泄漏检测

支持以及调试打印支持,那么还需要 1 个.c 文件(lw_oopc.c,约 145 行)),20 个宏,
约 130 行代码。LW_OOPC 是一种 C 语言编程框架,用于支持在 C 语言中进行面向对象编
程。

LW_OOPC 宏介绍

下面,先通过一个简单的示例来展示 LW_OOPC 这套宏的使用方法。我们要创建这样

一些对象:动物(Animal),鱼(Fish),狗(Dog),车子(Car)。显然,鱼和狗都属
于动物,都会动,车子也会动,但是车子不是动物。会动是这些对象的共同特征,但是,
显然它们不属于一个家族。因此,我们首先考虑抽象出一个接口(IMoveable),以描述
会动这一行为特征:

INTERFACE(IMoveable)

{

    

void

 (*move)(IMoveable* t);     

// Move行为

};

INTERFACE 宏用于定义接口,其成员(方法)均是函数指针类型。

然后,我们分析 Animal,它应该是抽象类还是接口呢?动物都会吃,都需要呼吸,

如果仅仅考虑这两个特征,显然可以把 Animal 定为接口。不过,这里,为了展示抽象类
在 LW_OOPC 中如何应用。我们让 Animal 拥有昵称和年龄属性,并且,让动物和我们打