




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一個完整的面向?qū)ο蠓治雠c設(shè)計例子首先說明,接下來這部分內(nèi)容,跟面向?qū)ο鬀]什么關(guān)系,只是描述出我們接下來”需要做什么.大家都知道電梯是怎么回事了,所以獲取需求的過程我就不啰嗦了,直接把最后結(jié) 果描述出來.(對于計算機(jī)專業(yè)學(xué)生或軟件工程畢業(yè)設(shè)計的需求分析結(jié)果應(yīng)該有 些參考意義.起碼可以看出怎么樣的結(jié)果才真正有意義)電梯樓層1-10樓(也就是沒有什么地下室也沒有中間跳過某些樓層,最普通的情況),一共有2部電梯.如果一個在n樓(1 n 3)./這里是一堆長長的代碼用來發(fā)送*的短信.省略,我們這里只說程序的思想. 不涉及技術(shù)細(xì)節(jié)else./又是一堆長長的代碼用來發(fā)送*的短信 B寫一個庫,定義出發(fā)送*短信
2、的函數(shù)和發(fā)送*短信的函數(shù),還有判斷的函數(shù),假設(shè)函數(shù)原型分別是發(fā)送移動短信(st*手機(jī)號碼,st*內(nèi)容);發(fā)送聯(lián)通短信(st*手機(jī)號碼,st*內(nèi)容);bool是否是移動號碼(st*手機(jī)號碼);然后寫程序如下:if(是否是移動號碼(TextBoxl.Text)發(fā)送移動短信(TextBox1.Text,TextBox2.Text);else發(fā)送聯(lián)通短信(TextBox1.Text,TextBox2.Text);C 定義一個抽象接口”短信接收者, 由* 和* 兩個類分別實現(xiàn)接口.各自實現(xiàn)發(fā)送短信方法.然后構(gòu)造一個手機(jī)工廠(一時想不到好的名字,暫時叫這個吧),接收一 個號碼,返回一個短信接收者接口(里面
3、根據(jù)接收的參數(shù),可能是*或*)然后程序如下(一行.):手機(jī)工廠.獲取接受者(TextBox1.Text).發(fā)送(TextBox2.Text);或?qū)懗蛇@樣清晰點:st*號碼st*內(nèi)容TextBox1.Text;TextBox2.Text;手機(jī)工廠.獲取接受者(號碼).發(fā)送(內(nèi)容);OK,對于上面3段偽代碼大家有什么想法?第3種是不是看起來有點爽?也許把,也僅僅是看起來那么一點爽,沒什么大不了.沒錯,面向?qū)ο笫窃诖笮偷牡胤礁荏w現(xiàn)優(yōu)勢,一小堆是展現(xiàn)不出來的.我們假 設(shè)程序中一共有100個這樣的地方(比如一個是發(fā)短信的,一個接短信的,一個打 電話的,一個上網(wǎng)的.)那么對于A程序,很抱歉,非常要命,要
4、在100個地方復(fù)制代碼,復(fù)制100份,然后對 其中99份做修改(或多或少,總要改點.)B程序只是在每個調(diào)用的地方加幾行,可以接受.C程序在調(diào)用點也是加1行,同樣也可以接受.這個時候,結(jié)構(gòu)化和面向?qū)ο蠊餐膬?yōu)點體現(xiàn)出來了,復(fù)用性(教科書中講面向 對象總是說說復(fù)用是面向?qū)ο蟊绕渌椒ǖ膬?yōu)勢,其實結(jié)構(gòu)化本身就是可復(fù)用 的)A方法差不多該拋棄了.這就是結(jié)構(gòu)化發(fā)展起來以后,非結(jié)構(gòu)化很快面臨淘 汰地步的原因,因為在軟件稍微大點,就出麻煩,寫寫單片機(jī)小模塊還行.軟件在一天天變大變復(fù)雜,僅僅是變大變復(fù)雜而已?當(dāng)然不是.也變得多 變.用戶的需求時時在變.軟件也容易變,.回到剛才的問題,現(xiàn)在不是有小靈通么?你又需
5、要多一種類型,變成小靈通移動聯(lián)通3種類型.那么對于 A,災(zāi)難發(fā)生.修改程序的成本不比重新做一個少.對于B 需要去100個調(diào)用的地方多加一個if來判斷,然后多加一個對應(yīng)小靈通 的函數(shù).修改量有點大,不過也不是不行,因為畢竟現(xiàn)在的工具發(fā)達(dá),你可以查找 -替換.不過程序是需要測試的,你替換一個地方,就需要多測試一個地方,成本高.對于C多加一個實現(xiàn)接口的”小靈通類,然后修改手機(jī)工廠”的”獲取接受者(st*號碼).一共2處,測試也只要再測試這個新 類還有一個方法.C 方法面向?qū)ο蟮膬?yōu)勢在這個時候體現(xiàn)出來了. 有人這個時候出來抗議了,如果程序?qū)懙亩嗔耍?jīng)驗豐富了,有人會看出我上面那 些假設(shè)的漏洞,就是B
6、并不是最好的結(jié)構(gòu)化方法,因為 其實有更好的用一 個函數(shù)來實現(xiàn)判斷類型那樣就跟 C一樣,只要改很少的地方了.沒錯,那樣C和B又公平平等了。還是沒什么優(yōu)勢.請注意2點 第一:”面向?qū)ο蟛皇侵该嫦驅(qū)ο蟮木幊陶Z法,而是一種思想.那樣寫其實 B 已經(jīng)拿到了一點面向?qū)ο蟮乃枷肓酥皇欠庋b在非面向?qū)ο蟮恼Z法中.第二不面向?qū)ο蟮拇_可以寫出低耦合的,高效的,可維護(hù)的,很牛逼的程序.但是那是需要很高造詣的人來做的事.因為沒有類的封裝性,名字空間的隔絕還有全局性的變量在程序里走,要靠程序員自己去避免這些”可以做,可以方 便地做”卻”會對未來維護(hù)帶來災(zāi)難”的操作,對程序員要求很高,你要自覺不 用全局變量,就像以前自覺不
7、用goto語句.還要自覺把功能分好擺好,需要的分析設(shè)計技術(shù)是很高的.而寫出同樣質(zhì)量的面向?qū)ο蟪绦?只要略知道設(shè)計模式的人就都可以了.這就是面向?qū)ο蟠笮械脑蛑?有人說,面向?qū)ο缶驼娴姆庋b了?可重用了? 可是我看見很多C#和java程序錯 亂復(fù)雜,根本拿不出一個”塊出來用,你拿了 ”塊A 就調(diào)用到”塊 B ,非要把”塊B ”也拿來.然后又要用到無關(guān)的C,D,E,F.最后出來一大落,而且99.9999%是我不需要的,我就只需 要那0.00001%而已.這是現(xiàn)實,的確,至少我看見的代碼里垃圾代碼占多數(shù)(這里是指可以實現(xiàn)功能卻 很有臭味的代碼),這主要有一個很大的原因是寫代碼的人沒有面向?qū)ο蟮?思想
8、,有的只是面向?qū)ο蠊ぞ甙b的面向過程思想,而且連結(jié)構(gòu)化都說不上.不是面向?qū)ο蟮腻e.差不多,有些人現(xiàn)在認(rèn)同面向?qū)ο罅耍仓肋@不是書上隨便說的那些苦澀的概念 了,不過還是不明白怎么個面向?qū)ο蠓?我再換個話題說說,不說手機(jī)吧, 說衣服,服裝廠生產(chǎn)衣服.衣服有顏色,有大小,有款式.看看一個設(shè)計,在不 同的人手里是什么不同的方法.現(xiàn)在服裝廠要生產(chǎn)一批藍(lán)色的,小號的,女款的.的衣服.A :衣服 衣服1= new 衣服();衣服1.顏色=蘭;衣服1.號碼=小;衣服1.款式=女式;然后new出好多件來.賦值好多下.現(xiàn)在問題是突然說不要蘭的了要紅的,哎喲.改啊改.當(dāng)然你可以在循環(huán) 里做這個,但是如果每件衣服除了顏色和款式一樣,大小是不同的又如何?有個B想到了一個好的設(shè)計了.定義一個衣服類,然后把 大衣服 作為一個 子類,小衣服是另外一個子 類.那么方便了一些.不過又有問題,如果再改需求.要求大小跟男女固定 的,顏色可以變,難道又再定義出蘭衣服類和紅衣服類.那還有完沒完啊.依然不是好設(shè)計.C面向?qū)ο笥幸粋€利器叫”設(shè)計模式,學(xué)面向?qū)ο蠡旧线@個是必修,我們 用用設(shè)計模式中的原型模式,構(gòu)造出一個原型 假設(shè)是一件 大的男裝,然后 通過Copy這個原型就可以得到一批大的男裝,然后給各種顏色就
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇理工學(xué)院《視覺設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽航空職業(yè)技術(shù)學(xué)院《機(jī)器人操作系統(tǒng)及應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 紅河職業(yè)技術(shù)學(xué)院《基礎(chǔ)醫(yī)學(xué)前沿技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年河南省新鄉(xiāng)輝縣聯(lián)考全國中考大聯(lián)考信息卷:生物試題試卷(2)含解析
- 浙江理工大學(xué)《工程力學(xué)Ⅰ》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年中考數(shù)學(xué)總復(fù)習(xí)49 微專題 代數(shù)推理試題 學(xué)案(含答案)
- 建設(shè)工程墊資合同范例二零二五年
- 正規(guī)的借條范例
- 模板一致行動人協(xié)議
- 體液形態(tài)學(xué)質(zhì)量管理
- 數(shù)控折彎機(jī)操作手冊樣本
- 河南省高等職業(yè)教育單招財經(jīng)類職業(yè)技能測試考試題庫(含答案)
- 項目實施方法論課件
- 新疆沙質(zhì)荒漠化防治區(qū)劃及分區(qū)防治模式研究
- 2022.06英語六級真題第1套
- 數(shù)值分析實驗報告(實驗五實驗六)
- 聽海洋生物講故事1
- 電子表格表格會計記賬憑證模板
- 國家中小學(xué)智慧教育平臺培訓(xùn)專題講座
- 藥融云-甾體類藥物行業(yè)產(chǎn)業(yè)鏈白皮書
- 中國傳統(tǒng)節(jié)日介紹-課件
評論
0/150
提交評論