經(jīng)常聽見別人說面向?qū)ο蟮某绦蛟O(shè)計(jì),以前在學(xué)校上課的時(shí)候,也有開面向?qū)ο蟪绦蛟O(shè)計(jì)這門課??墒遣恍业氖?,這些都是以C++,甚至VC++為基礎(chǔ)的。而更加不幸的是,多年以來我一直是一個(gè)C的使用者。在學(xué)校的時(shí)候,我主要做的是硬件上的驅(qū)動(dòng)層,和底層功能層。在工作以后,又做的是手機(jī)上的軟件開發(fā),所有這些都是和C離不開的。雖然我不得不說,C++是一門很好的語(yǔ)言,但是它的編譯速度,代碼效率,編譯后的代碼大小都限制了它在嵌入式上的應(yīng)用。(但現(xiàn)在的嵌入式CPU越來越快,內(nèi)存容量變大。我覺得用C++也應(yīng)該沒有什么問題。這使我覺得似乎是嵌入式編譯器的限制。雖然菲利普和TI好像都有C++的編譯器,但是似乎沒人用這個(gè)。難道是太貴了? 但不管怎么說,嵌入式應(yīng)用中,C語(yǔ)言的普遍使用是肯定的)
那么在面向過程的時(shí)代產(chǎn)生的C語(yǔ)言能否使用面向?qū)ο蟮乃枷肽??我認(rèn)為是肯定可以的,C++不過是在語(yǔ)言級(jí)別上加入了對(duì)對(duì)象的支持,同時(shí)提供了豐富的對(duì)象庫(kù)。而在C語(yǔ)言下,我們只好自力更生了。
一、面向?qū)ο笏枷氲哪康氖强蚣芑?,手段是抽?BR> 相信很多人都明白面向?qū)ο笾v了什么:類,抽象類,繼承,多態(tài)。但是是什么原因促使這些概念的產(chǎn)生呢?
打個(gè)比方說:你去買顯示器,然而顯示器的品牌樣式是多種多樣的,你在買的過程中發(fā)生的事情也是不可預(yù)測(cè)的。對(duì)于這樣的事情,我們?cè)诔绦蛘Z(yǔ)言中如何去描述呢。面向?qū)ο蟮乃枷刖褪菫榱私鉀Q這樣的問題。編寫一個(gè)程序(甚至說是一個(gè)工程),從無到用是困難的,從有到豐富是更加困難的。面向?qū)ο髮⒊绦虻母鱾€(gè)行為化為對(duì)象,而又用抽象的辦法將這些對(duì)象歸類(抽象),從而將錯(cuò)綜復(fù)雜的事情簡(jiǎn)化為幾個(gè)主要的有機(jī)組合(框架化)。
其實(shí)我們的身邊很多東西都是這樣組成的:比如說電腦:電腦是由主板,CPU加上各種卡組成的。這就是一個(gè)框架化。而忽略不同的CPU,不同的主板,不同的聲卡,網(wǎng)卡,顯卡的區(qū)別,這就是抽象。再比如說現(xiàn)在的教育網(wǎng):是由主核心節(jié)點(diǎn):清華,北大,北郵等幾個(gè),然后是各個(gè)子節(jié)點(diǎn),依次組成了整個(gè)教育網(wǎng)網(wǎng)絡(luò)。
所以我覺得面向?qū)ο蟮木幊趟枷刖褪牵阂粋€(gè)大型工程是分層次結(jié)構(gòu)的,每層又由抽象的結(jié)構(gòu)連接為整體(框架化),各個(gè)抽象結(jié)構(gòu)之間是彼此獨(dú)立的,可以獨(dú)立進(jìn)化(繼承,多態(tài))。層次之間,結(jié)構(gòu)之間各有統(tǒng)一的通訊方式(通常是消息,事件機(jī)制)。
二、以前C語(yǔ)言編程中常用的“面向?qū)ο蟆狈椒?BR> 其實(shí)C語(yǔ)言誕生以來,人們就想了很多辦法來體現(xiàn)“面向?qū)ο蟆钡乃枷搿O旅婢蛠碚f說我所知道的方法。先說一些大家熟悉的東東,慢慢再講詭異的。呵呵
1. 宏定義:
有的人不禁要問,宏定義怎么扯到這里來了,我們可以先看一個(gè)簡(jiǎn)單的例子:
#define MacroFunction Afunction
然后在程序里面你調(diào)用了大量的AFunction,但是有一天,你突然發(fā)現(xiàn)你要用BFunction了,(不過AFunction又不能不要,很有可能你以后還要調(diào)用),這個(gè)時(shí)候,你就可以#define MacroFunction Bfunction來達(dá)到這樣的目的。
那么在面向過程的時(shí)代產(chǎn)生的C語(yǔ)言能否使用面向?qū)ο蟮乃枷肽??我認(rèn)為是肯定可以的,C++不過是在語(yǔ)言級(jí)別上加入了對(duì)對(duì)象的支持,同時(shí)提供了豐富的對(duì)象庫(kù)。而在C語(yǔ)言下,我們只好自力更生了。
一、面向?qū)ο笏枷氲哪康氖强蚣芑?,手段是抽?BR> 相信很多人都明白面向?qū)ο笾v了什么:類,抽象類,繼承,多態(tài)。但是是什么原因促使這些概念的產(chǎn)生呢?
打個(gè)比方說:你去買顯示器,然而顯示器的品牌樣式是多種多樣的,你在買的過程中發(fā)生的事情也是不可預(yù)測(cè)的。對(duì)于這樣的事情,我們?cè)诔绦蛘Z(yǔ)言中如何去描述呢。面向?qū)ο蟮乃枷刖褪菫榱私鉀Q這樣的問題。編寫一個(gè)程序(甚至說是一個(gè)工程),從無到用是困難的,從有到豐富是更加困難的。面向?qū)ο髮⒊绦虻母鱾€(gè)行為化為對(duì)象,而又用抽象的辦法將這些對(duì)象歸類(抽象),從而將錯(cuò)綜復(fù)雜的事情簡(jiǎn)化為幾個(gè)主要的有機(jī)組合(框架化)。
其實(shí)我們的身邊很多東西都是這樣組成的:比如說電腦:電腦是由主板,CPU加上各種卡組成的。這就是一個(gè)框架化。而忽略不同的CPU,不同的主板,不同的聲卡,網(wǎng)卡,顯卡的區(qū)別,這就是抽象。再比如說現(xiàn)在的教育網(wǎng):是由主核心節(jié)點(diǎn):清華,北大,北郵等幾個(gè),然后是各個(gè)子節(jié)點(diǎn),依次組成了整個(gè)教育網(wǎng)網(wǎng)絡(luò)。
所以我覺得面向?qū)ο蟮木幊趟枷刖褪牵阂粋€(gè)大型工程是分層次結(jié)構(gòu)的,每層又由抽象的結(jié)構(gòu)連接為整體(框架化),各個(gè)抽象結(jié)構(gòu)之間是彼此獨(dú)立的,可以獨(dú)立進(jìn)化(繼承,多態(tài))。層次之間,結(jié)構(gòu)之間各有統(tǒng)一的通訊方式(通常是消息,事件機(jī)制)。
二、以前C語(yǔ)言編程中常用的“面向?qū)ο蟆狈椒?BR> 其實(shí)C語(yǔ)言誕生以來,人們就想了很多辦法來體現(xiàn)“面向?qū)ο蟆钡乃枷搿O旅婢蛠碚f說我所知道的方法。先說一些大家熟悉的東東,慢慢再講詭異的。呵呵
1. 宏定義:
有的人不禁要問,宏定義怎么扯到這里來了,我們可以先看一個(gè)簡(jiǎn)單的例子:
#define MacroFunction Afunction
然后在程序里面你調(diào)用了大量的AFunction,但是有一天,你突然發(fā)現(xiàn)你要用BFunction了,(不過AFunction又不能不要,很有可能你以后還要調(diào)用),這個(gè)時(shí)候,你就可以#define MacroFunction Bfunction來達(dá)到這樣的目的。

