搜索
bottom↓
回复: 49

大虾评论下C语言的面向对象编程(Lw_oopc)实用性

  [复制链接]

出0入0汤圆

发表于 2012-12-1 15:35:11 | 显示全部楼层 |阅读模式
简单介绍(copy的):
本文介绍一种轻量级的面向对象的 C 语言编程框架: LW_OOPC 。 LW_OOPC 是
Light-Weight Object-Oriented Programming in(with) C 的缩写,总共一个.h 文件,20 个宏, 约
130 行代码,非常的轻量级,但却很好的支持了很多面向对象的特性,比如继承、多态, 可
以优美的实现面向接口编程。这个框架系由台湾的高焕堂先生以及他的 MISOO 团队首创,
之后由我继续改进优化,最后,经高焕堂同意以 LGPL 协议开源(开源网址参见后文) 。
用 C 语言实现 OO?我没听错吗?这听起来真是太疯狂了! … 大家都知道,C++支持
了面向对象和面向泛型编程,比 C 要更强大些。那么,为什么要在 C 语言中实践面向对象
呢?为什么不直接使用 C++呢?

具体百度关键词:Lw_oopc


各位讨论Lw_oopc在实际项目的实用性。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2012-12-1 17:08:27 | 显示全部楼层
第一次听说整个儿板凳儿学习

出0入0汤圆

发表于 2012-12-1 17:40:34 来自手机 | 显示全部楼层
同楼上,看看

出0入0汤圆

发表于 2012-12-1 17:57:15 | 显示全部楼层
学用操作系统,主要目的是简化开发,前提是有好多驱动库。如果仅仅是个核心,没驱动,意思不大,不可能自己移植全部驱动的

出0入0汤圆

发表于 2012-12-1 19:27:16 | 显示全部楼层
看过C++的书,觉得面向对象还真的不错,看看这个怎样。

出0入0汤圆

 楼主| 发表于 2012-12-1 22:44:49 | 显示全部楼层
我觉得那里面的实现对象编程的思路很巧妙
我在想可不可以基于作者的例子,开发自己的通信接口:例如mcu_1与mcu_2通信,应用层只关心驱动层或者系统层上报的数据,而根本不会关心数据是以什么方式,通过哪个接口而获得。那么,我们是否可以将通信接口定义一个抽象类,它负责传递数据。而底层我们就可以定义一些具体的类,例如串口,SPI,I2C等方式实现的具体类。那么我在写应用层时,就可以基于面向对象的架构和思想了。这样就可以利用很多类似C++的操作了。

出0入0汤圆

发表于 2012-12-3 22:09:04 | 显示全部楼层
如果能够真的很好的支持面向对象,光是设计模式的应用就已经很有价值了。至于驱动什么的,对于单片机就不需要了。

出0入0汤圆

发表于 2012-12-3 22:29:42 | 显示全部楼层
大致看了一下,很有意思。但是那个书好像到处都在缺货

出0入264汤圆

发表于 2012-12-3 22:42:31 来自手机 | 显示全部楼层
学习它的思想还是可以的。一般场合还是不要用。

出0入0汤圆

 楼主| 发表于 2012-12-4 14:23:56 | 显示全部楼层
mcu_lover 发表于 2012-12-3 22:42
学习它的思想还是可以的。一般场合还是不要用。

谢谢,提醒....,为什么不要用呢?还请说清楚点,呵呵...

出0入0汤圆

发表于 2012-12-4 14:32:33 | 显示全部楼层
附件下载不了

出0入0汤圆

发表于 2012-12-4 14:36:05 | 显示全部楼层
ni有一个软件也是搞这个的

出100入85汤圆

发表于 2012-12-4 14:49:17 | 显示全部楼层
似乎下载不下来

出0入0汤圆

 楼主| 发表于 2012-12-7 14:41:32 | 显示全部楼层
刚刚试了下,可以下载了

出0入0汤圆

发表于 2012-12-7 19:08:14 | 显示全部楼层
不能收藏,发帖标记。

出0入0汤圆

发表于 2012-12-7 20:33:42 | 显示全部楼层
高焕堂有本UML与OOPC嵌入式编程专门讲这个的,CSDN有扫面版的书

出0入0汤圆

发表于 2012-12-8 00:59:23 | 显示全部楼层
做个标记。

出0入0汤圆

发表于 2012-12-8 14:54:03 | 显示全部楼层
lxy1997 发表于 2012-12-7 20:33
高焕堂有本UML与OOPC嵌入式编程专门讲这个的,CSDN有扫面版的书

特地去把它找到了。



















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-12-14 13:04:00 | 显示全部楼层
mcu_lover 发表于 2012-12-3 22:42
学习它的思想还是可以的。一般场合还是不要用。

貌似傻孩子极力推荐这种方法啊

出0入0汤圆

发表于 2013-2-21 14:50:30 | 显示全部楼层
eduhf_123 发表于 2012-12-8 14:54
特地去把它找到了。

为啥我下载之后这些十份文件都是一样的呢

出0入0汤圆

发表于 2013-2-21 20:04:07 | 显示全部楼层
本帖最后由 eduhf_123 于 2013-2-21 20:05 编辑
七弦桐 发表于 2013-2-21 14:50
为啥我下载之后这些十份文件都是一样的呢


WINRAR的“分卷压缩”:
1、在文件齐全的情况下打开任何一个都可以、都是一样的。
2、在文件不全的情况下,将无法打开文件并解压缩。

出425入0汤圆

发表于 2013-4-9 22:56:45 | 显示全部楼层
我到处找这本书。

出0入0汤圆

发表于 2013-4-11 10:06:10 | 显示全部楼层
好厉害。。。

出0入0汤圆

 楼主| 发表于 2013-4-18 17:31:08 | 显示全部楼层
stm32下的lwoopc例子

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-5-23 21:42:12 | 显示全部楼层
请问谁有光盘 上传下 谢谢。。

出0入0汤圆

发表于 2013-5-24 15:19:56 | 显示全部楼层
不错,谁能上传光盘就好了 顶起来

出0入0汤圆

发表于 2013-6-7 10:24:05 | 显示全部楼层
xtx8962 发表于 2013-4-18 17:31
stm32下的lwoopc例子

(Lw_oopc)实用性 ,后来怎么样啊。

出0入0汤圆

 楼主| 发表于 2013-6-8 08:40:22 | 显示全部楼层
我们项目现在真正做,基于OOPC的思想,用的MCU是STM32,操作系统是RTX,但不。我只是看了这本书,并学习了LW_OOPC的一点思想,我只懂面向对象的一点皮毛而已。整体来说,由于我之前编程都是面向过程的,现在突然转向对象编程,刚开始还是有点不顺手。能够学习对象编程的思想,并运用于实际项目还是挺有好处的。个人意见...

出0入0汤圆

发表于 2013-6-8 14:36:49 | 显示全部楼层
用C语言做面向对象,确实有价值。。这样让我们可以更加容易的去管理系统中,各种外设。。

出0入0汤圆

 楼主| 发表于 2013-7-3 17:19:46 | 显示全部楼层
项目中运用到了LW_oopc的思想的确给我们带来了很多好处,例如该项目是由如此结构组成:主框架+A(功能)+B(可选功能)+C(可选功能)+X(未知功能)。如果把A、B、C、X都抽象为对象的话,那么不管是主框架+A,还是主框架+A+B或者其他配置模式,都能很好的保证主框架的一致性和独立性。同时,如果未来出现了A1功能,那么代替A功能也是很简单的事情,只需要实现并测试A1分具体功能,将它替换掉A就可以了,而不用大刀阔斧的进行系统的测试或者修改。再者,未来如果需要添加一些X功能,只需X满足主框架的接口即可挂载。删除某些功能时,也是简单的进行配置就行了,而不需修改主框架和其他对象。这样的话,这个项目的产品就有比较大的多样性和较长的生命周期了。

出0入0汤圆

发表于 2014-4-19 22:46:30 | 显示全部楼层
看看,C语言面向对象编程很有意思的

出0入0汤圆

发表于 2014-4-20 00:01:27 来自手机 | 显示全部楼层
还没理解什么是面向对象

出0入0汤圆

发表于 2014-4-20 08:41:02 | 显示全部楼层
谢谢。学多点知识无论如何都是有用的。总有用到的一天。

出0入0汤圆

发表于 2014-4-20 10:08:06 | 显示全部楼层
总的来说,看硬件情况,还是要资源支持,不是所说的只增加几百个字节那么简单,大项目使用的话,思想比较好也可行

出0入0汤圆

发表于 2014-4-20 11:57:58 | 显示全部楼层
刚看完这本书,说实话还是不知道怎么用。习惯了面向对象了,最大的困难就在与如何获取对象,而不再与写程序,书中给的程序都能看懂,没问题。但是轮到自己实际使用的时候,很自然的你就去分析过程是怎么样的,想要抽象出类对象来却是很困难的。可能你在想这些对象的时候,都会认为是浪费时间。

出0入0汤圆

发表于 2014-4-28 17:21:39 | 显示全部楼层
OO和语言无关,用什么思想编程才能决定,很多学过C的人,初学C++/Java的时候还是写的面向过程的程序。

出0入0汤圆

发表于 2014-5-3 14:33:48 | 显示全部楼层
学习了,感谢分享

出0入0汤圆

发表于 2014-5-3 15:04:10 | 显示全部楼层
学习贴,学习下思想。

出0入0汤圆

发表于 2014-5-3 22:02:30 来自手机 | 显示全部楼层
c oop标记

出0入0汤圆

发表于 2014-9-10 20:46:58 | 显示全部楼层
不错,谢谢奉献。

出0入10汤圆

发表于 2014-9-11 15:01:46 | 显示全部楼层
还不知道什么东西,感觉很厉害,学习。。。

出0入0汤圆

发表于 2014-9-13 09:31:56 | 显示全部楼层
好像 也为了这几句 高调出书,晕倒。。。

出0入0汤圆

发表于 2015-11-15 18:46:56 | 显示全部楼层
确实用OOP写单片机程序可以很优雅,话说MDK和GCC是支持C++的

出0入0汤圆

发表于 2016-6-13 08:50:59 | 显示全部楼层
正在了解OOPC

出0入0汤圆

发表于 2016-10-7 11:12:06 | 显示全部楼层
学习了,谢谢,谢谢共享啊!

出0入0汤圆

发表于 2016-10-25 14:48:27 | 显示全部楼层
个人早年看过这本书,怎么说,感觉就是看起来很好用,但是实际上还是不温不火。老实说,面向对象真正的是思想,而不是形式。讲个例子,MQTT的协议栈的单片机版本,只对外提供序列化和反序列化数据的接口,并不提供实体。而MQTT的C#版本,JAVA版本,是提供了对象集合,实例化之后就可以用了。C语言本身就不是面向对象的语言,但是你发现,MQTT的这个协议栈给你做的其实就是个对象集合,序列化和反序列化的方法让你在构造MQTT客户端实体的时候更加方便也更灵活。

出0入0汤圆

发表于 2016-10-25 14:52:28 | 显示全部楼层
OOPC+UML,包括QP(量子编程)(状态机),包括虚拟总线,这些东西不是新玩意,很多年前就出来了。其不温不火是有原因的。

出0入0汤圆

发表于 2016-12-10 22:39:22 | 显示全部楼层
多谢分享

出0入0汤圆

发表于 2019-1-3 09:23:48 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2019-4-18 21:25:16 | 显示全部楼层
https://github.com/Akagi201/lw_oopc

LW_OOPC升级版本发布说明
本人在金永华对于高焕堂的lw_oopc的源码的基础上进行了一些简单的修改和调试. 使得lw_oopc能够用在实际的嵌入式项目中, 作为一个很好的框架传播开来.

主要改进有:

修正了一些小错误, 使得编译通过.
调整了一些宏的位置, 使得配置接口只在lw_oopc.h中.
经过测试可以直接在*nix下编译运行, 删掉多余的VS工程文件.
我的联系方式:

博客: http://akagi201.org
E-mail: akagi201@gmail.com
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 03:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表