小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

[轉(zhuǎn)載]OO Programing in C - C/C - ChinaUnix.ne...

 jijo 2008-08-29


----------------------------------------------------------------------------------------------------------------
經(jīng)常看到關(guān)于OO編程的討論,C++, Java, C#...還有最近很流行的動(dòng)態(tài)語言Python,Ruby等,但很少看到有C的份。


在我看來,OO編程的核心是OO的思想,用什么語言倒是其次。但是,不可否認(rèn),那些專門為OO編程設(shè)計(jì)的語言可以比較方便和自然地表達(dá)OO思想,有些語言甚至強(qiáng)制使用OO特性。


C,作為最貼近底層的高級(jí)語言,擁有簡潔的語法和直接內(nèi)存操作能力(指針),大量運(yùn)用于系統(tǒng)級(jí)編程,如操作系統(tǒng)內(nèi)核,驅(qū)動(dòng)程序等。而在嵌入式系統(tǒng)中,由于資源有限等因素,更傾向于用C編程。

C雖然在語言特性上并沒有體現(xiàn)OO特性,但是依然可以通過各種編程技巧來體現(xiàn)OO的思想。由于C的高度自由的特點(diǎn),在OO編程方面還能體現(xiàn)有別于其他語言的特殊韻味。


OO思想在Unix世界中很早就有:UNIX把設(shè)備抽象成文件,這樣就可以用一套相同的方法(open, read, write, close, ... )去訪問不同的設(shè)備和文件——盡管設(shè)備之間的差異很大。用OO的觀點(diǎn)來看,這些“設(shè)備”對(duì)象都實(shí)現(xiàn)了"文件操作接口",可以想象有一個(gè)叫"文件"的基類,定義了"文件操作接口",“設(shè)備”對(duì)象繼承了“文件”對(duì)象....。在實(shí)現(xiàn)角度看,在內(nèi)核里面,設(shè)備驅(qū)動(dòng)提供了自己的read, write等實(shí)現(xiàn),并用它們?nèi)ヌ畛湮募僮鹘Y(jié)構(gòu)體里面的函數(shù)指針....這和C++里面的虛函數(shù)運(yùn)行時(shí)綁定的道理是一樣的。( C++虛函數(shù)是其實(shí)是運(yùn)行時(shí)靜態(tài)綁定,而文件操作接口可以運(yùn)行時(shí)動(dòng)態(tài)綁定

Linux內(nèi)核中則處處體現(xiàn)了OO的思想。2.6內(nèi)核的Device Driver Modal是一套層次分明又錯(cuò)綜復(fù)雜的機(jī)制,其中體現(xiàn)了許多OO設(shè)計(jì)理念。雖然可能設(shè)備驅(qū)動(dòng)程序開發(fā)者覺察不到,但所有的設(shè)備驅(qū)動(dòng)對(duì)象內(nèi)部都隱藏了一個(gè)叫KObject的對(duì)象。內(nèi)核把這些KObjects互相聯(lián)系在一起,并通過KObject的相互關(guān)系構(gòu)造了/sys文件系統(tǒng)。/sys就是內(nèi)核中各種設(shè)備對(duì)象的映射圖,如果把/sys全部展開,我們可以清楚地看到各種對(duì)象的關(guān)系。

實(shí)踐證明,C也可以很好地用于OO編程,而且可以用于構(gòu)造很復(fù)雜的系統(tǒng),而且C在表達(dá)OO思想的時(shí)候并不會(huì)顯得蹩腳,而是可以很簡單,很自然。

[ 本帖最后由 gawk 于 2008-8-24 10:02 編輯 ]

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多