八修煉體會作者

八修煉體會作者

ID:28187629

大?。?3.00 KB

頁數(shù):9頁

時間:2018-12-08

八修煉體會作者_第1頁
八修煉體會作者_第2頁
八修煉體會作者_第3頁
八修煉體會作者_第4頁
八修煉體會作者_第5頁
資源描述:

《八修煉體會作者》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫

1、修練8年C++面向?qū)ο蟪绦蛟O(shè)計之體會2005年04月29日作者:林銳責(zé)任編輯:xietaoming文章導(dǎo)讀:關(guān)于C++程序設(shè)計的書藉非常多,本文不講C++的語法,只講一些小小的編程道理。這些小道理,可以大大的改善你的程序質(zhì)量?! ×昵?,我剛熱戀“面向?qū)ο蟆保∣bject-Oriented)時,一口氣記住了近十個定義。六年后,我從幾十萬行程序中滾爬出來準備寫點心得體會時,卻無法解釋什么是“面向?qū)ο蟆?,就象說不清楚什么是數(shù)學(xué)那樣。軟件工程中的時髦術(shù)語“面向?qū)ο蠓治觥焙汀懊嫦驅(qū)ο笤O(shè)計”,通常是針對“需求分析”和“系統(tǒng)設(shè)計”環(huán)節(jié)的?!懊嫦?qū)ο蟆庇袔状?/p>

2、學(xué)派,就象如來佛、上帝和真主用各自的方式定義了這個世界,并留下一堆經(jīng)書來解釋這個世界?! ∮行W(xué)者建議這樣找“對象”:分析一個句子的語法,找出名詞和動詞,名詞就是對象,動詞則是對象的方法(即函數(shù))。  當(dāng)年國民黨的文人為了對抗毛澤東的《沁園春·雪》,特意請清朝遺老們寫了一些對仗工整的詩,請蔣介石過目。老蔣看了氣得大罵:“娘希匹,全都有一股棺材里腐尸的氣味?!蔽铱戳藥浊ы摰能浖こ藤Y料,終于發(fā)現(xiàn)自己有些“弱智”,無法理解“面向?qū)ο蟆钡睦碚?,同時醒悟到“編程是硬道理?!薄 ∶嫦?qū)ο蟪绦蛟O(shè)計語言很多,如Smalltalk、Ada、Eiffel、Obj

3、ectPascal、VisualBasic、C++等等。C++語言最討人喜歡,因為它兼容C語言,并且具備C語言的性能。近幾年,一種叫Java的純面向?qū)ο笳Z言紅極一時,不少人叫喊著要用Java革C++的命。我認為Java好比是C++的外甥,雖然不是直接遺傳的,但也幾分象樣。外甥在舅舅身上玩耍時灑了一泡尿,倆人不該為此而爭吵?! £P(guān)于C++程序設(shè)計的書藉非常多,本章不講C++的語法,只講一些小小的編程道理。如果我能早幾年明白這些小道理,就可以大大改善數(shù)十萬行程序的質(zhì)量了。1.C++面向?qū)ο蟪绦蛟O(shè)計的重要概念  早期革命影片里有這樣一個角色,他說:“

4、我是黨代表,我代表黨,我就是黨?!焙髞硭o同志們帶來了災(zāi)難?! 肅++的程序員一定懂得面向?qū)ο蟪绦蛟O(shè)計嗎?  不會用C++的程序員一定不懂得面向?qū)ο蟪绦蛟O(shè)計嗎?  兩者都未必。就象壞蛋入黨后未必能成為好人,好人不入黨未必變成壞蛋那樣?! ∥也慌掠|犯眾怒地說句大話:“C++沒有高手,C語言才有高手?!痹谟肅和C++編程8年之后,我深深地遺憾自己不是C語言的高手,更遺憾沒有人點撥我如何進行面向?qū)ο蟪绦蛟O(shè)計。我和很多C++程序員一樣,在享用到C++語法的好處時便以為自己已經(jīng)明白了面向?qū)ο蟪绦蛟O(shè)計。就象擠掉牙膏賣牙膏皮那樣,真是暴殄天物呀。  人們

5、不懂拼音也會講普通話,如果懂得拼音則會把普通話講得更好。不懂面向?qū)ο蟪绦蛟O(shè)計也可以用C++編程,如果懂得面向?qū)ο蟪绦蛟O(shè)計則會把C++程序編得更好。本節(jié)講述三個非?;A(chǔ)的概念:“類與對象”、“繼承與組合”、“虛函數(shù)與多態(tài)”。理解這些概念,有助于提高程序的質(zhì)量,特別是提高“可復(fù)用性”與“可擴充性”。1.1類與對象  對象(Object)是類(Class)的一個實例(Instance)。如果將對象比作房子,那么類就是房子的設(shè)計圖紙。所以面向?qū)ο蟪绦蛟O(shè)計的重點是類的設(shè)計,而不是對象的設(shè)計。類可以將數(shù)據(jù)和函數(shù)封裝在一起,其中函數(shù)表示了類的行為(或稱服務(wù))

6、。類提供關(guān)鍵字public、protected和private用于聲明哪些數(shù)據(jù)和函數(shù)是公有的、受保護的或者是私有的。  這樣可以達到信息隱藏的目的,即讓類僅僅公開必須要讓外界知道的內(nèi)容,而隱藏其它一切內(nèi)容。我們不可以濫用類的封裝功能,不要把它當(dāng)成火鍋,什么東西都往里扔。  類的設(shè)計是以數(shù)據(jù)為中心,還是以行為為中心?  主張“以數(shù)據(jù)為中心”的那一派人關(guān)注類的內(nèi)部數(shù)據(jù)結(jié)構(gòu),他們習(xí)慣上將private類型的數(shù)據(jù)寫在前面,而將public類型的函數(shù)寫在后面,如表8.1(a)所示。  主張“以行為為中心”的那一派人關(guān)注類應(yīng)該提供什么樣的服務(wù)和接口,他們習(xí)

7、慣上將public類型的函數(shù)寫在前面,而將private類型的數(shù)據(jù)寫在后面,如表8.1(b)所示?! 『芏郈++教課書主張在設(shè)計類時“以數(shù)據(jù)為中心”。我堅持并且建議讀者在設(shè)計類時“以行為為中心”,即首先考慮類應(yīng)該提供什么樣的函數(shù)。Microsoft公司的COM規(guī)范的核心是接口設(shè)計,COM的接口就相當(dāng)于類的公有函數(shù)[Rogerson1999]。在程序設(shè)計方面,咱們不要懷疑Microsoft公司的風(fēng)格?! ≡O(shè)計孤立的類是比較容易的,難的是正確設(shè)計基類及其派生類。因為有些程序員搞不清楚“繼承”(Inheritance)、“組合”(Compositio

8、n)、“多態(tài)”(Polymorphism)這些概念。1.2繼承與組合  如果A是基類,B是A的派生類,那么B將繼承A的數(shù)據(jù)和函數(shù)。示例程序如下:cla

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。