`
rubynroll
  • 浏览: 204571 次
  • 性别: Icon_minigender_1
  • 来自: Wgt
社区版块
存档分类
最新评论

OO Programing in C (1)

阅读更多
OO Programing in C is not only POSSIBLE but also PRACTICAL.
--------------------------------------------------------------------------------


经常看到关于OO编程的讨论,C++, Java, C#...还有最近很流行的动态语言Python,Ruby等,但很少看到有C的份。


在我看来,OO编程的核心是OO的思想,用什么语言倒是其次。但是,不可否认,那些专门为OO编程设计的语言可以比较方便和自然地表达OO思想,有些语言甚至强制使用OO特性。


C,作为最贴近底层的高级语言,拥有简洁的语法和直接内存操作能力(指针),大量运用于系统级编程,如操作系统内核,驱动程序等。而在嵌入式系统中,由于资源有限等因素,更倾向于用C编程。

C虽然在语言特性上并没有体现OO特性,但是依然可以通过各种编程技巧来体现OO的思想。由于C的高度自由的特点,在OO编程方面还能体现有别于其他语言的特殊韵味。


OO思想在Unix世界中很早就有:UNIX把设备抽象成文件,这样就可以用一套相同的方法(open, read, write, close, ... )去访问不同的设备和文件——尽管设备之间的差异很大。用OO的观点来看,这些“设备”对象都实现了"文件操作接口",可以想象有一个叫"文件"的基类,定义了"文件操作接口",“设备”对象继承了“文件”对象....。在实现角度看,在内核里面,设备驱动提供了自己的read, write等实现,并用它们去填充文件操作结构体里面的函数指针....这和C++里面的虚函数运行时绑定的道理是一样的。( C++虚函数是其实是运行时静态绑定,而文件操作接口可以运行时动态绑定 :-)

Linux内核中则处处体现了OO的思想。2.6内核的Device Driver Modal是一套层次分明又错综复杂的机制,其中体现了许多OO设计理念。虽然可能设备驱动程序开发者觉察不到,但所有的设备驱动对象内部都隐藏了一个叫KObject的对象。内核把这些KObjects互相联系在一起,并通过KObject的相互关系构造了/sys文件系统。/sys就是内核中各种设备对象的映射图,如果把/sys全部展开,我们可以清楚地看到各种对象的关系。

实践证明,C也可以很好地用于OO编程,而且可以用于构造很复杂的系统,而且C在表达OO思想的时候并不会显得蹩脚,而是可以很简单,很自然。



--TO BE CONTINUED--
分享到:
评论
4 楼 mikeandmore 2008-11-21  
赞,一直在写C的程序,而且一直尽量做到OO
3 楼 Omnibus 2008-11-21  
本來Object-oriented programming只是一種概念,用C寫本無不可。

按概念而寫,就是OOP。
2 楼 wolfbrood 2008-11-19  
有没有一些例子提供,我一直都在关注c的oo
1 楼 KKFC 2008-11-19  
很有趣的我觉得OO C的理想继承人是js, 一门C+LISP的语言

相关推荐

    tcp ip programing in c

    标题《TCP/IP Sockets in C》指明了这是一本关于在C语言环境下进行TCP/IP套接字编程的指南。描述中提及的《TCP-IP Sockets in C: Practical Guide for Programmers》则强调了该书是一本面向程序员的实用指导手册。...

    OO programing with PHP5

    1. **封装**:封装是将数据和操作数据的方法绑定在一起,形成一个独立的单元,叫做对象。在PHP5中,可以使用类(class)定义对象,通过private、protected和public关键字控制成员变量和方法的访问权限,实现数据的...

    c++ programing and c

    programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and c

    The C Programing language

    根据提供的文件信息,实际内容与要求的C编程语言知识点不符,该文件内容为一份小品剧本,因此将基于剧本中的元素进行无关内容的剔除,接下来将围绕标题“C编程语言”及其描述来构建相关知识点。 ### C编程语言 ###...

    Programming the Microchip PIC in C

    《Programming the Microchip PIC in C》这本书由Nigel Gardner撰写,是一本介绍如何使用C语言编程Microchip PIC微控制器的基础指南。本书旨在为读者提供从零开始学习如何使用C语言进行PIC微控制器编程的全面指导。 ...

    The c programing language

    1. **简洁高效**:C语言的语法简洁明了,允许直接操作硬件,因此执行效率高。 2. **结构化编程**:C语言支持结构化编程,通过函数组织代码,使程序结构清晰,易于维护。 3. **丰富的库函数**:C标准库提供了大量功能...

    programing in lua

    Lua[1] 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所...

    programing in GDI+

    GDI+ SDK参考,GDI+编程入门,GDI+编程例子

    The C programing language

    The C programing language 发明C的科学家写的书

    Programing-in-C

    本资料“Programming-in-C”旨在为大学班级提供一个全面的C语言学习资源,帮助初学者建立起扎实的编程基础。 1. **C语言简介** C语言是一种结构化编程语言,它的语法清晰,允许直接操作硬件,这使得它在系统编程和...

    C-programing.rar_C programing答案

    "C-programing.rar_C programing答案"这个压缩包文件显然包含了关于C语言编程作业的答案,这些答案可能是教师为了帮助学生理解和解决编程问题而提供的。虽然答案可能不是唯一的,因为C语言的灵活性允许多种方法实现...

    the c programing language.rar

    the c programing language,kr编写,适合入门者学习,适合大学生学习,适合自学,c圣经,非常通俗易懂,配合答案食用更佳

Global site tag (gtag.js) - Google Analytics