伯颜帖木儿后代:OO Programing in C (1)
来源:百度文库 编辑:中财网 时间:2024/04/29 06:09:14
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思想的时候并不会显得蹩脚,而是可以很简单,很自然。
原文链接:http://rubynroll.iteye.com/blog/150575
关于KeyStone.Programing.with.Microsoft.C#
there are two beds in the twins' ()()()oo()
《Thinking In C++》中文版
《Programming in C》
c:/in/in是什么意思
什么是OO
“oo”发音
MADE IN P.R.C
a rub in c program
Oo。虚伪。oO 大家怎么看这两字
机子中毒!江湖救急...... Oo-_-oO
《The c++ programing language》请问在哪买的到?
哪里下中文版的thinking in c++??
Stephen Kochan 是科汉吗?关于Programming in C
单词(含“oo”)
单词(含“oo”)
mp4,16oo.手机
OO聊天视频问题!
怎样下载OO
OO空间打不开怎么办?
怎样使用oo号
oo我该怎摸办?
介绍TCP/IP,C++,linux,sock,WinSocket,OpenGL,DirectX,OO,方面的经典书最好是外国人写的中文本,悬赏50分
谁有 ^(oo)^ 龙族私服 ^(oo)^ 给大家发点