摘要

本文介绍一种轻量级的面向对象的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介绍(转载)相关推荐

  1. 源代码文档生成 Doxygen介绍(转载)

    源代码文档生成 Doxygen介绍(转载) 收藏 Doxygen介绍 一.Doxygen介绍 在项目开发过程中最重要的是如何和团队中其它成员沟通,如何在项目完成后减低维护成本,随着公司的人员流动,怎样 ...

  2. CCC认证介绍(转载)

    CCC认证介绍(转载) CCC认证介绍 http://www.quality-world.cn/guanli/367.html CCC为英文 ChinaCompulsoryCertification ...

  3. C语言实现OOP——轻量级的面向对象 C 语言编程框架 LW_OOPC 介绍(三)

    文章目录 C 语言编程框架 LW_OOPC 介绍(三) 方案的可扩展性如何? LW_OOPC最佳实践 LW_OOPC的优点: LW_OOPC的缺点: 总结: 幕后花絮: 参考资料: C 语言编程框架 ...

  4. CE认证介绍(转载)

    2007 年 07 月 29 日, 星期日 --&gt CE认证介绍(转载) CE认证介绍 http://www.quality-world.cn/guanli/378.html " ...

  5. C语言实现OOP——轻量级的面向对象 C 语言编程框架 LW_OOPC 介绍(二)

    轻量级的面向对象 C 语言编程框架 LW_OOPC 介绍 下面,再举一个稍微复杂的例子,它的覆盖面是足够全面的,足以一瞥面向对象编程的3个要素:数据抽象.继承和多态.通过这个例子,我们期望展现出LW_ ...

  6. Html5 WebSocket 技术介绍(转载)

    WebSocket是html5规范新引入的功能,用于解决浏览器与后台服务器双向通讯的问题,使用WebSocket技术,后台可以随时向前端推送消息,以保证前后台状态统一,在传统的无状态HTTP协议中,这 ...

  7. Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍--转载

    原文地址:http://www.blogways.net/blog/2013/06/02/jedis-demo.html redis是一个著名的key-value存储系统,而作为其官方推荐的java版 ...

  8. 注释驱动的 Spring cache 缓存介绍--转载

    概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使 ...

  9. IE 8 Accelerator加速器开发介绍{转载}

    记录这篇博客的原因是因为我自己想要有一个快速的加速器,就是我经常在浏览网页的时候,看到有些网址,如果想要转过去的话,我必须手工复制到地址栏,然后回车一下.然后我就想,如果能直接通过一个快捷方式就太好了 ...

  10. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

最新文章

  1. SystemCenter2012SP1实践(15)共享库服务器和ISO
  2. 【鉴轻尘】你说你炒的了币,开发得了项目,然而这些你都知道吗?
  3. format函数python的顺序_[转载] Python中format函数用法
  4. MOQ TIP1:简介加基础
  5. python的异常处理
  6. 陕西科技大学18计算机调剂,2018年陕西科技大学考研调剂信息公布
  7. 计算机科学与技术的专业论述,关于计算机科学专业的论文题目 计算机科学专业论文题目怎样定...
  8. SpringMVC请求后台地址URL没有.*的几种实现方式
  9. 在Vue 项目 webpack 打包中关于 背景图片的路径问题
  10. tensorflow之relu
  11. VC++6.0与VS2010的区别
  12. 总结嵌入式C语言知识点
  13. 模拟器中安装和使用Drozer总结
  14. 购买计算机要注意哪些性能指标,买电脑主要看哪些配置 买电脑要注意什么配置 电脑的配置基本知识...
  15. Katana如何渲染序列
  16. 系统崩溃,TCP协议栈
  17. 通灵学院|游戏设计研习3:人类的内在人群特征★(1000字)
  18. 远程linux云主机,Linux实验室 远程连接Linux云主机方法
  19. 【spring】依赖注入之@Autowired依赖注入
  20. 常见错误1 定义形参和实参不匹配错误

热门文章

  1. Dahlia:一个现代化的 React 框架
  2. pathinfo函数
  3. 解决chrome崩溃的方法
  4. xcode UIView常用方法属性动画
  5. Provisioning Services 7.8 入门系列教程之九 手动更新虚拟磁盘
  6. 笔记7:winfrom的一些知识点(一)
  7. 孔茨的现代管理理论的十一个流派
  8. Windows 7 God Mode
  9. 50款漂亮的免费网页PSD模板下载(第三季)
  10. 面向站长和网站管理员的Web缓存加速指南[翻译]