C语言面向对象编程
11页1、C语言面向对象编程 原创作者: rubynroll 阅读:5643次 评论:0条 更新时间:2008-12-15 经常看到关于OO编程的讨论,C+, Java, C#.还有最近很流行的动态语言Python,Ruby等,但很少看到有C的份。在我看来,OO编程的核心是OO的思想,用什么语言倒是其次。但是,不可否认,那些专门为OO编程设计的语言可以比较方便和自然地表达OO思想,有些语言甚至强制使用OO特性。 C,作为最贴近底层的高级语言,拥有简洁的语法和直接内存操作能力(指针),大量运用于系统级编程,如操作系统内核,驱动程序等。而在嵌入式系统中,由于资源有限等因素,更倾向于用C编程。 C虽然在语言特性上并没有体现OO特性,但是依然可以通过各种编程技巧来体现OO的思想。由于C的高度自由的特点,在OO编程方面还能体现有别于其他语言的特殊韵味。 目 录 - 1. C的面向对象概念 2. 用struct来仿真class 3. 实现OO的继承机制 C的面向对象概念 OO Programing in C is not only POSSIBLE but also PRACTICAL. - OO思想在Un
2、ix世界中很早就有:UNIX把设备抽象成文件,这样就可以用一套相同的方法(open, read, write, close, . )去访问不同的设备和文件尽管设备之间的差异很大。用OO的观点来看,这些“设备”对象都实现了文件操作接口,可以想象有一个叫文件的基类,定义了文件操作接口,“设备”对象继承了“文件”对象.。在实现角度看,在内核里面,设备驱动提供了自己的read, write等实现,并用它们去填充文件操作结构体里面的函数指针.这和C+里面的虚函数运行时绑定的道理是一样的。( C+虚函数是其实是运行时静态绑定,而文件操作接口可以运行时动态绑定 :-) Linux内核中则处处体现了OO的思想。2.6内核的Device Driver Modal是一套层次分明又错综复杂的机制,其中体现了许多OO设计理念。虽然可能设备驱动程序开发者觉察不到,但所有的设备驱动对象内部都隐藏了一个叫 KObject的对象。内核把这些KObjects互相联系在一起,并通过KObject的相互关系构造了/sys文件系统。/sys就是内核中各种设备对象的映射图,如果把/sys全部展开,我们可以清楚地看到各种对象的关
3、系。 实践证明,C也可以很好地用于OO编程,而且可以用于构造很复杂的系统,而且C在表达OO思想的时候并不会显得蹩脚,而是可以很简单,很自然。 用struct来仿真class OO Programing in C is not only POSSIBLE, but also PRACTICAL. - “class“是很多OO编程语言里的关键字,它来源于OO鼻祖Smalltalk。class(类),是对一群有相同特性的对象的抽象概括,对象称为类的实例。在class里面可以存放有状态(变量),行为(函数/方法).有关OO概念、方法的文章太多了,不再啰嗦。在C里面,唯一可以实现自定义类型的是struct,struct是C的OO编程最重要的工具。 一个最常见的技巧,就是用struct来仿真class: 在struct里面放入变量,函数指针,嵌入其他struct等。 以下例子摘自我最近刚开发完成的一个USB Firmware项目: C代码 1. structusb_device; 2. structusb_ctl; 3. 4. structusb_iobuf 5. intlen;/*datalen
《C语言面向对象编程》由会员人***分享,可在线阅读,更多相关《C语言面向对象编程》请在金锄头文库上搜索。
一季度宣传思想关键点
高二的学习方法
精选的生物教师工作计划范本(七篇).doc
反掘综合机械化掘进作业规程
(医疗药品)药物代谢动力学
国务院印发中国水生生物资源养护行动纲要的通知(doc13)
描写校园生活的词语和句子
国土局党的群众路线制建设工作计划
小学六年级数学圆柱圆锥练习题
2023年终总结大会主持人主持稿(2篇).doc
关于高一班主任年终工作总结班主任工作总结高一
宝岛眼镜门市礼仪
电大 C语言程序设计形成性考核册答案
关于个人职业规划范文9篇
俞宪忠:包容性增长的制度诉求
2021年难忘的一件事初中作文三篇
厅门安装工艺标准
一个因数是两位数的乘法(一)(人教版二年级教案设计) _1
2022年广告服务协议书集锦5篇
高血压病管理工作总结
2022-12-10 12页
2023-03-15 17页
2023-03-29 16页
2023-02-13 5页
2023-12-16 4页
2024-01-29 7页
2023-12-28 8页
2022-12-29 4页
2022-11-08 5页
2022-11-11 3页