新开源的轻量级的C语言面向对象编程框架(约100行代码)

简介:

摘要:

本文推荐一种新开源(2010.1.24开源)的轻量级的面向对象C编程框架LW_OOPC(Light Weight Object-oriented Programming with C),总共一个.h文件、25个宏、约100行代码,非常的轻量级,但很好的支持了很多的面向对象特性,比如继承、多态(非完全意义上的多态,因为要提供类型,不是完全统一的形态),可以很优美的实现面向接口编程。

这个框架是由台湾高焕堂先生以及他的MISOO团队创作了第一个版本之后,又由金永华改进优化,再以LGPL协议开源出来的。

这个框架的面世与高焕堂的著作《UML+OOPC嵌入式C语言开发精讲》有关。


 

为什么要用面向对象?

面向过程方式开发的系统,代码复杂,耦合性强,难以维护,是大家都知道的。

面向对象,改变了程序员的思维方式,以更符合客观世界认知规律的视角来认识世界,进行抽象,从而在更高的抽象层次上解决问题。

抽象层次高,意味着高屋建瓴,能够看清全貌,能够控制全局,能够以简洁的方式轻松扩展反映现实世界。

这样构建的系统,能够在不同的抽象层次上理解和掌握,越高抽象层次越简单,越容易把握。

所以学习起来,自顶向下,可以逐步深入,很容易理解和掌握系统。

当然,上述这一点只是从理解系统的难度上做的粗浅的分析。

从另外一个方面讲,面向对象极大的解除了耦合,提高了模块的内聚性。

从而使得复用更轻松,测试更轻松,理解也更轻松,因为不必整个系统全部了解,可以每个模块各个击破,再结合上面的不同抽象层次的理解,就可以把握整个系统了。

 

为什么要用C实现面向对象?

虽然C++已经出现很久了,但C语言的生命力还是非常旺盛。

刚从JAVA/C#转到C的同事,无法从面向对象切换到面向过程,但又必须与C语言同事们在遗留的C系统上开发软件,就非常需要C语言实现面向对象的手段。

C和C++之争由来已久,估计从C++出生就有了,估计要持续到它们中的一种去世^_^

在这个争论不休的年代,往往各种原因使得语言的选择身不由己,这个时候C也能实现OO,将给您带来失去C++后不用失去OO的欣慰。

 

怎么用C实现面向对象?

本文推荐一种新开源(2010.1.24开源)的轻量级的面向对象C编程框架LW_OOPC(Light Weight Object-oriented Programming with C),总共一个.h文件、25个宏、约100行代码,非常的轻量级,但很好的支持了很多的面向对象特性,比如继承、多态(非完全意义上的多态,因为要提供类型,不是完全统一的形态),可以很优美的实现面向接口编程。

另外,也有很多其它C实现面向对象的参考资料,

比如:

1、1993年出现的《Object-oriented Programming with ANSI-C》,可能是这方面资料的鼻祖吧?


2、这里也有一个参考网址:

http://www.eventhelix.com/RealtimeMantra/basics/object_oriented_programming_in_c.htm

3、Google或者百度一下,还可以找到不少相关资料。












本文转sinojelly51CTO博客,原文链接:http://blog.51cto.com/sinojelly/270940,如需转载请自行联系原作者

相关文章
|
3月前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
91 2
|
5月前
|
安全 程序员 编译器
C语言框架的优缺点如下
C语言框架的优缺点如下
93 1
|
9月前
|
C语言
C语言实战演练之游戏框架
C语言实战演练之游戏框架
|
9月前
|
C语言 索引
基于C语言的函数指针应用-消息命令处理框架
基于C语言的函数指针应用-消息命令处理框架
50 0
|
存储 C语言
c语言程序的框架以及内容
c语言程序的框架以及内容
257 0
|
C语言
分享一个非常有用且简单C语言测试框架
分享一个非常有用且简单C语言测试框架
132 0
|
机器学习/深度学习 算法 语音技术
llama.cpp作者创业,用纯C语言框架降低大模型运行成本
llama.cpp作者创业,用纯C语言框架降低大模型运行成本
926 0
|
算法 C语言 Python
01【C语言 & 趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。
01【C语言 & 趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。
01【C语言 & 趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。
|
存储 编译器 程序员
0基础C保姆自学 第二节——初步认识C语言的全部知识框架
在栈区的变量用完之后,系统会自动收回,不需要程序员手动释放,但在堆区则恰恰相反:我们需要用free函数来将我们创建的动态空间释放。否则将会造成内存泄漏。
248 0
0基础C保姆自学 第二节——初步认识C语言的全部知识框架
|
存储 算法 Java
C语言从入门到精通(第一期之结构框架)
C语言从入门到精通(第一期之结构框架)
C语言从入门到精通(第一期之结构框架)