LW_OOPC介绍(转载)
摘要
本文介绍一种轻量级的面向对象的C语言编程框架: LW_OOPC. LW_OOPC是Light-Weight Object-Oriented Programming in(with) C的缩写, 总共一个.h文件, 20个宏, 约130行代码, 非常的轻量级, 但却很好的支持了很多面向对象的特性, 比如继承, 多态. 可以优美的实现面向接口编程. 这个框架是由台湾的高焕堂先生以及他的MISOO团队首创, 之后由我继续改进优化, 最后, 经高焕堂同意以LGPL协议开源(开源网址参见后文).
用C语言实现OO? 我没听错吗? 这听起来真是太疯狂了!.. 大家都知道, C++支持了面向对象和面向泛型编程, 比C要更强大些. 那么, 为什么要在C语言中实践面向对象呢? 为什么不直接使用C++呢?
为什么要用面向对象?
面向过程方式开发的系统, 代码复杂, 耦合性强, 难以维护. 随着我们所要解决的问题越来越复杂, 代码也变得越来越复杂, 越来越难以掌控. 而面向对象改变了程序员的思维方式, 以更加符合客观世界的方式来认识世界, 通过合理的运用抽象, 封装, 继承和多态, 更好的组织程序, 从而很好地应对这种复杂性.
为什么不直接使用C++?
C和C++之争由来已久, 可能要持续到它们中的一种去世_. C语言以其简洁明快, 功能强大的特点, 深得开发人员的喜爱, 尤其是在嵌入式开发领域, C语言更是占据了绝对老大的地位. 在我看来, 语言只是工具, 作为程序员, 我们要做的是: 选择合适的语言, 解决恰当的问题. 我们要尊重事实, 考虑开发环境(软硬件环境), 考虑团队成员的水平, 从商用工程的角度讲, 选择团队成员擅长的语言进行开发, 风险要小很多.
一些从Java/C#转到C的程序员们, 无法从面向对象切换到面向过程, 但又必须与C语言同事们在遗留的C系统上开发软件, 他们有时会非常困惑: C语言是面向过程的编程语言, 如何实践面向对象, 甚至面向接口编程呢? 此时, 就非常需要在C语言中实现面向对象的手段, 而LW_OOPC正是应对这一难题的解决之道.
LW_OOPC是什么?
简而言之: LW_OOPC是一套C语言的宏, 总共1个.h文件(如果需要内存泄漏检测支持以及调试打印支持,那么还需要1个.c文件(w_oopc.c,约145行)), 20个宏, 约130行代码. LW_OOPC是一种C语言编程框架, 用于支持在C语言中进行面向对象编程.
其他内容
请直接参考:轻量级的面向对象C语言编程框架LW_OOPC介绍.
LW_OOPC介绍(转载)相关推荐
- 源代码文档生成 Doxygen介绍(转载)
源代码文档生成 Doxygen介绍(转载) 收藏 Doxygen介绍 一.Doxygen介绍 在项目开发过程中最重要的是如何和团队中其它成员沟通,如何在项目完成后减低维护成本,随着公司的人员流动,怎样 ...
- CCC认证介绍(转载)
CCC认证介绍(转载) CCC认证介绍 http://www.quality-world.cn/guanli/367.html CCC为英文 ChinaCompulsoryCertification ...
- C语言实现OOP——轻量级的面向对象 C 语言编程框架 LW_OOPC 介绍(三)
文章目录 C 语言编程框架 LW_OOPC 介绍(三) 方案的可扩展性如何? LW_OOPC最佳实践 LW_OOPC的优点: LW_OOPC的缺点: 总结: 幕后花絮: 参考资料: C 语言编程框架 ...
- CE认证介绍(转载)
2007 年 07 月 29 日, 星期日 --> CE认证介绍(转载) CE认证介绍 http://www.quality-world.cn/guanli/378.html " ...
- C语言实现OOP——轻量级的面向对象 C 语言编程框架 LW_OOPC 介绍(二)
轻量级的面向对象 C 语言编程框架 LW_OOPC 介绍 下面,再举一个稍微复杂的例子,它的覆盖面是足够全面的,足以一瞥面向对象编程的3个要素:数据抽象.继承和多态.通过这个例子,我们期望展现出LW_ ...
- Html5 WebSocket 技术介绍(转载)
WebSocket是html5规范新引入的功能,用于解决浏览器与后台服务器双向通讯的问题,使用WebSocket技术,后台可以随时向前端推送消息,以保证前后台状态统一,在传统的无状态HTTP协议中,这 ...
- Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍--转载
原文地址:http://www.blogways.net/blog/2013/06/02/jedis-demo.html redis是一个著名的key-value存储系统,而作为其官方推荐的java版 ...
- 注释驱动的 Spring cache 缓存介绍--转载
概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使 ...
- IE 8 Accelerator加速器开发介绍{转载}
记录这篇博客的原因是因为我自己想要有一个快速的加速器,就是我经常在浏览网页的时候,看到有些网址,如果想要转过去的话,我必须手工复制到地址栏,然后回车一下.然后我就想,如果能直接通过一个快捷方式就太好了 ...
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)
转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...
最新文章
- SystemCenter2012SP1实践(15)共享库服务器和ISO
- 【鉴轻尘】你说你炒的了币,开发得了项目,然而这些你都知道吗?
- format函数python的顺序_[转载] Python中format函数用法
- MOQ TIP1:简介加基础
- python的异常处理
- 陕西科技大学18计算机调剂,2018年陕西科技大学考研调剂信息公布
- 计算机科学与技术的专业论述,关于计算机科学专业的论文题目 计算机科学专业论文题目怎样定...
- SpringMVC请求后台地址URL没有.*的几种实现方式
- 在Vue 项目 webpack 打包中关于 背景图片的路径问题
- tensorflow之relu
- VC++6.0与VS2010的区别
- 总结嵌入式C语言知识点
- 模拟器中安装和使用Drozer总结
- 购买计算机要注意哪些性能指标,买电脑主要看哪些配置 买电脑要注意什么配置 电脑的配置基本知识...
- Katana如何渲染序列
- 系统崩溃,TCP协议栈
- 通灵学院|游戏设计研习3:人类的内在人群特征★(1000字)
- 远程linux云主机,Linux实验室 远程连接Linux云主机方法
- 【spring】依赖注入之@Autowired依赖注入
- 常见错误1 定义形参和实参不匹配错误