![修練年C 面向?qū)ο蟪绦蛟O(shè)計(jì)之體會(huì)_第1頁](http://file4.renrendoc.com/view/ad54e3951766026879b4611e5b05856c/ad54e3951766026879b4611e5b05856c1.gif)
![修練年C 面向?qū)ο蟪绦蛟O(shè)計(jì)之體會(huì)_第2頁](http://file4.renrendoc.com/view/ad54e3951766026879b4611e5b05856c/ad54e3951766026879b4611e5b05856c2.gif)
![修練年C 面向?qū)ο蟪绦蛟O(shè)計(jì)之體會(huì)_第3頁](http://file4.renrendoc.com/view/ad54e3951766026879b4611e5b05856c/ad54e3951766026879b4611e5b05856c3.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
HTTP://PCEDU.PCONLINE.COM.CN/EMPOLDER/GJ/C/0504/609482_2.HTML六年前,我剛熱戀“面向?qū)ο蟆保∣BJECT-ORIENTED)時(shí),一口氣記住了近十個(gè)定義。六年后,我從幾十萬行程序中滾爬出來準(zhǔn)備寫點(diǎn)心得體會(huì)時(shí),卻無法解釋什么是“面向?qū)ο蟆?,就象說不清楚什么是數(shù)學(xué)那樣。軟件工程中的時(shí)髦術(shù)語“面向?qū)ο蠓治觥焙汀懊嫦驅(qū)ο笤O(shè)計(jì)”,通常是針對(duì)“需求分析”和“系統(tǒng)設(shè)計(jì)”環(huán)節(jié)的?!懊嫦?qū)ο蟆庇袔状髮W(xué)派,就象如來佛、上帝和真主用各自的方式定義了這個(gè)世界,并留下一堆經(jīng)書來解釋這個(gè)世界。有些學(xué)者建議這樣找“對(duì)象”:分析一個(gè)句子的語法,找出名詞和動(dòng)詞,名詞就是對(duì)象,動(dòng)詞則是對(duì)象的方法(即函數(shù))。當(dāng)年國民黨的文人為了對(duì)抗毛澤東的《沁園春·雪》,特意請(qǐng)清朝遺老們寫了一些對(duì)仗工整的詩,請(qǐng)蔣介石過目。老蔣看了氣得大罵:“娘希匹,全都有一股棺材里腐尸的氣味?!蔽铱戳藥浊ы摰能浖こ藤Y料,終于發(fā)現(xiàn)自己有些“弱智”,無法理解“面向?qū)ο蟆钡睦碚?,同時(shí)醒悟到“編程是硬道理?!泵嫦?qū)ο蟪绦蛟O(shè)計(jì)語言很多,如SMALLTALK、ADA、EIFFEL、OBJECTPASCAL、VISUALBASIC、C++等等。C++語言最討人喜歡,因?yàn)樗嫒軨語言,并且具備C語言的性能。近幾年,一種叫JAVA的純面向?qū)ο笳Z言紅極一時(shí),不少人叫喊著要用JAVA革C++的命。我認(rèn)為JAVA好比是C++的外甥,雖然不是直接遺傳的,但也幾分象樣。外甥在舅舅身上玩耍時(shí)灑了一泡尿,倆人不該為此而爭吵。關(guān)于C++程序設(shè)計(jì)的書藉非常多,本章不講C++的語法,只講一些小小的編程道理。如果我能早幾年明白這些小道理,就可以大大改善數(shù)十萬行程序的質(zhì)量了。1.C++面向?qū)ο蟪绦蛟O(shè)計(jì)的重要概念早期革命影片里有這樣一個(gè)角色,他說:“我是黨代表,我代表黨,我就是黨?!焙髞硭o同志們帶來了災(zāi)難。會(huì)用C++的程序員一定懂得面向?qū)ο蟪绦蛟O(shè)計(jì)嗎?不會(huì)用C++的程序員一定不懂得面向?qū)ο蟪绦蛟O(shè)計(jì)嗎?兩者都未必。就象壞蛋入黨后未必能成為好人,好人不入黨未必變成壞蛋那樣。我不怕觸犯眾怒地說句大話:“C++沒有高手,C語言才有高手?!痹谟肅和C++編程8年之后,我深深地遺憾自己不是C語言的高手,更遺憾沒有人點(diǎn)撥我如何進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)。我和很多C++程序員一樣,在享用到C++語法的好處時(shí)便以為自己已經(jīng)明白了面向?qū)ο蟪绦蛟O(shè)計(jì)。就象擠掉牙膏賣牙膏皮那樣,真是暴殄天物呀。人們不懂拼音也會(huì)講普通話,如果懂得拼音則會(huì)把普通話講得更好。不懂面向?qū)ο蟪绦蛟O(shè)計(jì)也可以用C++編程,如果懂得面向?qū)ο蟪绦蛟O(shè)計(jì)則會(huì)把C++程序編得更好。本節(jié)講述三個(gè)非?;A(chǔ)的概念:“類與對(duì)象”、“繼承與組合”、“虛函數(shù)與多態(tài)”。理解這些概念,有助于提高程序的質(zhì)量,特別是提高“可復(fù)用性”與“可擴(kuò)充性”。1.1類與對(duì)象對(duì)象(OBJECT)是類(CLASS)的一個(gè)實(shí)例(INSTANCE)。如果將對(duì)象比作房子,那么類就是房子的設(shè)計(jì)圖紙。所以面向?qū)ο蟪绦蛟O(shè)計(jì)的重點(diǎn)是類的設(shè)計(jì),而不是對(duì)象的設(shè)計(jì)。類可以將數(shù)據(jù)和函數(shù)封裝在一起,其中函數(shù)表示了類的行為(或稱服務(wù))。類提供關(guān)鍵字PUBLIC、PROTECTED和PRIVATE用于聲明哪些數(shù)據(jù)和函數(shù)是公有的、受保護(hù)的或者是私有的。這樣可以達(dá)到信息隱藏的目的,即讓類僅僅公開必須要讓外界知道的內(nèi)容,而隱藏其它一切內(nèi)容。我們不可以濫用類的封裝功能,不要把它當(dāng)成火鍋,什么東西都往里扔。類的設(shè)計(jì)是以數(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í)慣上將public類型的函數(shù)寫在前面,而將private類型的數(shù)據(jù)寫在后面,如表8.1(b)所示。很多C++教課書主張?jiān)谠O(shè)計(jì)類時(shí)“以數(shù)據(jù)為中心”。我堅(jiān)持并且建議讀者在設(shè)計(jì)類時(shí)“以行為為中心”,即首先考慮類應(yīng)該提供什么樣的函數(shù)。Microsoft公司的COM規(guī)范的核心是接口設(shè)計(jì),COM的接口就相當(dāng)于類的公有函數(shù)[Rogerson1999]。在程序設(shè)計(jì)方面,咱們不要懷疑Microsoft公司的風(fēng)格。設(shè)計(jì)孤立的類是比較容易的,難的是正確設(shè)計(jì)基類及其派生類。因?yàn)橛行┏绦騿T搞不清楚“繼承”(Inheritance)、“組合”(Composition)、“多態(tài)”(Polymorphism)這些概念。1.2繼承與組合如果A是基類,B是A的派生類,那么B將繼承A的數(shù)據(jù)和函數(shù)。示例程序如下:classA{public:voidFunc1(void)。voidFunc2(void)。}。classB:publicA{public:voidFunc3(void)。voidFunc4(void)。}。//Examplemain(){Bb。//B的一個(gè)對(duì)象b.Func1()。//B從A繼承了函數(shù)Func1b.Func2()。//B從A繼承了函數(shù)Func2b.Func3()。b.Func4()。}這個(gè)簡單的示例程序說明了一個(gè)事實(shí):C++的“繼承”特性可以提高程序的可復(fù)用性。正因?yàn)椤袄^承”太有用、太容易用,才要防止亂用“繼承”。我們要給“繼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 投標(biāo)委托書(15篇)
- 建筑工程施工項(xiàng)目承包合同書
- 細(xì)胞-乳腺癌課件
- 馬來酸麥角新堿聯(lián)合卡前列素氨丁三醇治療高危產(chǎn)后出血傾向二次剖宮產(chǎn)產(chǎn)婦的效果
- 中國企業(yè)智能化成熟度報(bào)告(2024) -企業(yè)智能化轉(zhuǎn)型進(jìn)入2.0時(shí)代
- 廣東省中山市高考語文模擬試題(含答案)
- 2025年養(yǎng)老行業(yè)前景與未來發(fā)展趨勢(shì)預(yù)測(cè)
- 2024年食品行業(yè)食品安全管理體系認(rèn)證合同
- 餐廳供貨協(xié)議合同協(xié)議范本模板
- 汽車修理廠承包合同模板
- 輸變電工程監(jiān)督檢查標(biāo)準(zhǔn)化清單-質(zhì)監(jiān)站檢查
- 【超星學(xué)習(xí)通】馬克思主義基本原理(南開大學(xué))爾雅章節(jié)測(cè)試網(wǎng)課答案
- 2024年中國工業(yè)涂料行業(yè)發(fā)展現(xiàn)狀、市場(chǎng)前景、投資方向分析報(bào)告(智研咨詢發(fā)布)
- 化工企業(yè)重大事故隱患判定標(biāo)準(zhǔn)培訓(xùn)考試卷(后附答案)
- 工傷賠償授權(quán)委托書范例
- 工程變更履歷表
- 煤礦崗位標(biāo)準(zhǔn)化作業(yè)流程
- 唯物史觀課件
- 信息資源管理(馬費(fèi)成-第三版)復(fù)習(xí)重點(diǎn)
- 郵輪外部市場(chǎng)營銷類型
- GB/T 42460-2023信息安全技術(shù)個(gè)人信息去標(biāo)識(shí)化效果評(píng)估指南
評(píng)論
0/150
提交評(píng)論