用C寫面向對象

最近在看《Object-oriented Programming with ANSI-C》

由於我英語一般,再加上那時候的編程思想和現在的差異,我看的還是挺吃力的,不急,國慶放假慢慢來

可能那個年代面向對象思想並沒有像現在這樣普及,所以作者講得非常的細,甚至是“囉嗦”,

記得之前看過最初版本的C++,編譯器的工作就是把代碼轉換爲C的然後再編譯

而這本書很好的闡述的這個過程的實現

下面是轉載的一片文章

輕量級的C語言面向對象編程框架(約130行代碼)
 
摘要:
本文推薦一種新開源(2010.1.24開源)的輕量級的面向對象C編程框架LW_OOPC(Light Weight Object-oriented Programming with C),總共一個.h文件、25個宏、約100行代碼,非常的輕量級,但很好的支持了很多的面向對象特性,比如繼承、多態(非完全意義上的多態,因爲要提供類型,不是完全統一的形態),可以很優美的實現面向接口編程。
這個框架是由臺灣高煥堂先生以及他的MISOO團隊創作了第一個版本之後,又由金永華改進優化,再以LGPL協議開源出來的。
這個框架的面世與高煥堂的著作《UML+OOPC嵌入式C語言開發精講》有關。
 
爲什麼要用面向對象?
面向過程方式開發的系統,代碼複雜,耦合性強,難以維護,是大家都知道的。
面向對象,改變了程序員的思維方式,以更符合客觀世界認知規律的視角來認識世界,進行抽象,從而在更高的抽象層次上解決問題。
抽象層次高,意味着高屋建瓴,能夠看清全貌,能夠控制全局,能夠以簡潔的方式輕鬆擴展反映現實世界。
這樣構建的系統,能夠在不同的抽象層次上理解和掌握,越高抽象層次越簡單,越容易把握。
所以學習起來,自頂向下,可以逐步深入,很容易理解和掌握系統。
當然,上述這一點只是從理解系統的難度上做的粗淺的分析。
從另外一個方面講,面向對象極大的解除了耦合,提高了模塊的內聚性。
從而使得複用更輕鬆,測試更輕鬆,理解也更輕鬆,因爲不必整個系統全部瞭解,可以每個模塊各個擊破,再結合上面的不同抽象層次的理解,就可以把握整個系統了。
 
爲什麼要用C實現面向對象?
雖然C++已經出現很久了,但C語言的生命力還是非常旺盛。
剛從JAVA/C#轉到C的同事,無法從面向對象切換到面向過程,但又必須與C語言同事們在遺留的C系統上開發軟件,就非常需要C語言實現面向對象的手段。
C和C++之爭由來已久,估計從C++出生就有了,估計要持續到它們中的一種去世^_^
在這個爭論不休的年代,往往各種原因使得語言的選擇身不由己,這個時候C也能實現OO,將給您帶來失去C++後不用失去OO的欣慰。
 
怎麼用C實現面向對象?
本文推薦一種新開源(2010.1.24開源)的輕量級的面向對象C編程框架LW_OOPC(Light Weight Object-oriented Programming with C),總共一個.h文件、20個宏、約130行代碼,非常的輕量級,但很好的支持了很多的面向對象特性,比如繼承、多態(非完全意義上的多態,因爲要提供類型,不是完全統一的形態),可以很優美的實現面向接口編程。同時對內存分配做了很好的處理,支持在堆上動態生成對象,也支持在棧上生成對象,動態生成的對象還能進行內存分配釋放跟蹤,避免內存泄露。
另外,也有很多其它C實現面向對象的參考資料,
比如:
1、1993年出現的《Object-oriented Programming with ANSI-C》,可能是這方面資料的鼻祖吧?
2、這裏也有一個參考網址:
3、Google或者百度一下,還可以找到不少相關資料。

 

發佈了37 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章