多態(tài)與虛擬

出版時間:1998  出版社:松崗  作者:侯捷  
Tag標(biāo)簽:無  

作者簡介

【自序】
慮而後能得(自序)
故事
接觸 C++ 大約是 1989 年的事。那時候的 PC 以現(xiàn)在的眼光看,除了「蠻荒」之外沒有更合適的形容詞了。橫掃千軍的 Windows 3.0 還沒有誕生,如今以 C++ 編譯器技術(shù)聞名於世的 Borland 公司那個時候也還沒有踏進 C++ 領(lǐng)域,遑論動作更慢的 Microsoft。當(dāng)時我用的編譯器是 Zortech C++。
將近 10 年的歷史,并不表示我在 C++ 技術(shù)上就怎麼地超凡入圣了。事實上初期我很排斥這個語言。我沒有用心去體會,也就看不到其中的美好。我用數(shù)年的時間把心力全花在 Windows 技術(shù)的鉆研。那時候 C++ 風(fēng)潮未開,我也不以為意。
決定好好研究 C++,不是為了要開發(fā)自己的 class library,而是為了要使用別人的 class library。92 年軟體界開始出現(xiàn)一些所謂的 application framework,是一種用來幫助程式員發(fā)展 Windows 應(yīng)用軟體的大型 C++ class library(如今也有非 C++ 語言的類似產(chǎn)品)。為了運用這些有著巨大架構(gòu)以及巨大能量的 C++ class library,我必須重拾 C++。然後,為了更能操控掌握那些復(fù)雜的架構(gòu),同時也因為對技術(shù)原理有一股強烈的好奇心,我開始看 Microsoft Foundation Class(MFC) 的原始碼。
這使我有了一種異於常人的學(xué)習(xí)經(jīng)驗。我看的是行銷全世界、無數(shù)程式員使用、市場占有率最高的一套 C++ class library 的原始碼。從其中,我得到許多寶貴的知識與經(jīng)驗。然後我慢慢體會了物件導(dǎo)向(Object Oriented)之美、多型(Polymorphism)之美、虛擬(Virtual)之美。
學(xué)習(xí)的路線,不一定每個人都相同。但是黑暗中摸索的日子,實在不必人人走一遭。對於位居物件導(dǎo)向精髓地位的「多型與虛擬」觀念有了深刻體會之後,我有一股強烈的欲望,要把心得寫下來。
於是我寫了這本書。
層次
一般而言,C++ 是一個難學(xué)易用的語言。
C++ 的難學(xué),初始在於其重重的布幕,布幕之中編譯器對我們的程式碼做了太多的手腳,使我們慣於循序思考的工程腦袋一無所措。及長又面臨新的思維模式,使我們必須扭轉(zhuǎn)慣常的思考習(xí)慣。
C++ 的易用則在於其巨大的彈性,能夠以多型(polymorphism)、虛擬(virtual)、模板(template)等種種方式,讓現(xiàn)有的碼去處理未知的、未來的資料型態(tài)。
當(dāng)然,易用必須先能用。用不好或不能用的話,「寫 C++ 程式」最後就成了只是「使用 C++ 編譯器」,這是大家常拿來彼此調(diào)侃的笑話。
在「難學(xué)」的背景下,「易用」是使我們依然前仆後繼的動力。愈來愈多的大學(xué)資訊科系把 C++ 開在大一課程,這雖然說明 C++ 是多麼地重要,可也苦了資訊新兵們。
其實「難學(xué)」的最大癥結(jié),在於很難得有一本書,能夠一針見血地指出多型與虛擬的重要性;在我們粗具語法基礎(chǔ)之後,直接把我們導(dǎo)引到最核心最重要的思想,并且在建立這個思想體系的過程中,提供足夠的必要基礎(chǔ)。
我希望這本書能夠做到這一點。
同樣是使用 C++ 語言,有人進入了物件導(dǎo)向的殿堂,有人只學(xué)到 C++ 的語法;
有人練書法;
有人寫毛筆字;
有人拿有毛的筆寫字。
我們要向書法的境界挑戰(zhàn),不要只是拿有毛的筆寫字。
定位
講述 C++ 語法(syntax)的書籍很多,
講述 C++ 語意(semantics)的書籍很少,
講述 C++ 物件導(dǎo)向(object oriented)精神的書籍更少,
深入 C++ 物件模型(object model)的書籍則幾乎沒有。
這本書第一章對 C++ classes 的語法和語意做了一個梗概整理。第二章談 C++ 的物件模型,第三章談型別轉(zhuǎn)型(RTTI 的重要服務(wù)),第四章談多型與虛擬的精神,第五章實作一個大型例子,示范如何在一個 class library 中完成 RTTI、Dynamic Creation、Persistence 等基礎(chǔ)建設(shè)。第六章為 Component Object Model(COM)奠基。
很容易看得出來,你不能夠完全依賴這本書學(xué)習(xí) C++ 語法(因為第一章不過才 96 頁)。但是在學(xué)習(xí)了 C++ 語法之後,你可以依賴這本書學(xué)習(xí)物件導(dǎo)向的精髓。
我自己一直存在一個疑惑。別人常認(rèn)為我寫的是高階技術(shù)書籍,我卻認(rèn)為我寫的是高階技術(shù)的入門書籍。也許我挖掘得很深很廣,但,不就是要徹底了解重要的基礎(chǔ)知識,才得登堂入室嗎?
這本書,我仍舊挖得很深,尤其是第二章和第五章。但是我想粗具 C++ 語言基礎(chǔ)的人應(yīng)該都能循序接受。我渴望證明,C++ 的難學(xué),問題不在學(xué)生,而在老師。
當(dāng)然,本書的讀者,你,不能夠只是一位程式設(shè)計領(lǐng)域的全然新手。
厚薄
每次完成一本書,抱著厚厚的一疊完稿北上,父親看到堆起來有 10 公分高的雪銅紙,總是對我說:『這麼厚的書,怎麼看』?而我總要解釋『這是雪銅紙,比較厚。而且單面印刷,厚度加倍。經(jīng)過雷射印表機的高溫,它又有點卷...』。
但是想想,1000 頁左右的書籍,再怎麼東折西扣也是厚得嚇人。
漸漸地父親不再問那個問題了,大概已經(jīng)妥協(xié)於「電腦書都那麼厚」的印象之中。而我更是早就習(xí)慣看大部頭的書,寫大部頭的書。
大家都習(xí)慣了吧!這兩年 K 。
書籍的厚薄,是因於內(nèi)容的選擇,與讀者群的界定。很難得有這麼一個題材,我以 340 頁的篇幅完成了它。
書籍很薄,又經(jīng)過我精心的章節(jié)次序安排與起承轉(zhuǎn)合,您就不要跳著看了吧。耐著性子,一頁一頁,從頭到尾把它好好咀嚼消化一遍。然後,如果你愿意,寫信給我,我希望聽到你的喜悅。
批評也是我所歡迎的。
侯俊杰 1998.07.02 于新竹

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    多態(tài)與虛擬 PDF格式下載


用戶評論 (總計0條)

 
 

 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7