版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十二章面向?qū)ο髮?shí)現(xiàn)(shíxiàn)程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)風(fēng)格(fēnggé)面向?qū)ο鬁y(cè)試第一頁(yè),共23頁(yè)。面向?qū)ο笤O(shè)計(jì)的結(jié)果既可以用面向?qū)ο笳Z(yǔ)言、也可以用非面向?qū)ο笳Z(yǔ)言實(shí)現(xiàn)。選擇編程語(yǔ)言的關(guān)鍵因素,是語(yǔ)言的一致的表達(dá)能力、可重用性及可維護(hù)性。從面向?qū)ο笥^點(diǎn)看來(lái),能夠(nénggòu)更完整、更準(zhǔn)確地表達(dá)問(wèn)題域語(yǔ)義的面向?qū)ο笳Z(yǔ)言的語(yǔ)法是非常重要的,因?yàn)檫@會(huì)帶來(lái)下述幾個(gè)重要優(yōu)點(diǎn):程序設(shè)計(jì)(chénɡxùshèjì)語(yǔ)言優(yōu)點(diǎn)
1.面向?qū)ο笳Z(yǔ)言(yǔyán)與非面向?qū)ο笳Z(yǔ)言(yǔyán)第二頁(yè),共23頁(yè)。1)一致的表示方法2)可重用性3)可維護(hù)性因此(yīncǐ),在選擇編程語(yǔ)言時(shí),應(yīng)該考慮的首要因素,是在供選擇的語(yǔ)言中哪個(gè)語(yǔ)言能最好地表達(dá)問(wèn)題域語(yǔ)義。一般說(shuō)來(lái),應(yīng)該盡量選用面向?qū)ο笳Z(yǔ)言來(lái)實(shí)現(xiàn)面向?qū)ο蠓治觥⒃O(shè)計(jì)的結(jié)果。第三頁(yè),共23頁(yè)。面向?qū)ο笳Z(yǔ)言的形成借鑒了歷史上許多程序語(yǔ)言的特點(diǎn),從中吸取了豐富的營(yíng)養(yǎng)。當(dāng)今的面向?qū)ο笳Z(yǔ)言,從20世紀(jì)50年代誕生的LISP語(yǔ)言中引進(jìn)了動(dòng)態(tài)聯(lián)編的概念和交互式開(kāi)發(fā)環(huán)境的思想,從20世紀(jì)60年代推出的SIMULA語(yǔ)言中引進(jìn)了類的概念和繼承機(jī)制,此外,還受到20世紀(jì)70年代末期開(kāi)發(fā)的Modula_2語(yǔ)言和Ada語(yǔ)言中數(shù)據(jù)抽象機(jī)制的影響(yǐngxiǎng)。在選擇面向?qū)ο笳Z(yǔ)言時(shí)應(yīng)該著重考察的一些技術(shù)特點(diǎn):2.面向?qū)ο笳Z(yǔ)言的技術(shù)(jìshù)特點(diǎn)第四頁(yè),共23頁(yè)。1)支持類與對(duì)象概念的機(jī)制所有面向?qū)ο笳Z(yǔ)言都允許用戶動(dòng)態(tài)創(chuàng)建對(duì)象,并且可以用指針引用動(dòng)態(tài)創(chuàng)建的對(duì)象。兩種管理內(nèi)存的方法,一種是由語(yǔ)言的運(yùn)行機(jī)制自動(dòng)管理內(nèi)存,即提供自動(dòng)回收“垃圾(lājī)”的機(jī)制;另一種是由程序員編寫釋放內(nèi)存的代碼。第五頁(yè),共23頁(yè)。2)實(shí)現(xiàn)整體-部分(即聚集)結(jié)構(gòu)的機(jī)制(jīzhì)兩種實(shí)現(xiàn)方法,分別使用指針和獨(dú)立的關(guān)聯(lián)對(duì)象實(shí)現(xiàn)整體-部分結(jié)構(gòu)。大多數(shù)現(xiàn)有的面向?qū)ο笳Z(yǔ)言并不顯式支持獨(dú)立的關(guān)聯(lián)對(duì)象,在這種情況下,使用指針是最容易的實(shí)現(xiàn)方法,通過(guò)增加內(nèi)部指針可以方便地實(shí)現(xiàn)關(guān)聯(lián)。第六頁(yè),共23頁(yè)。3)實(shí)現(xiàn)一般-特殊(即泛化)結(jié)構(gòu)的機(jī)制既包括實(shí)現(xiàn)繼承的機(jī)制也包括解決名字(míngzi)沖突的機(jī)制。所謂解決名字(míngzi)沖突,指的是處理在多個(gè)基類中可能出現(xiàn)的重名問(wèn)題,這個(gè)問(wèn)題僅在支持多重繼承的語(yǔ)言中才會(huì)遇到。某些語(yǔ)言拒絕接受有名字(míngzi)沖突的程序,另一些語(yǔ)言提供了解決沖突的協(xié)議。不論使用何種語(yǔ)言,程序員都應(yīng)該盡力避免出現(xiàn)名字(míngzi)沖突。第七頁(yè),共23頁(yè)。4)實(shí)現(xiàn)屬性和服務(wù)的機(jī)制對(duì)于實(shí)現(xiàn)屬性的機(jī)制應(yīng)該著重考慮以下幾個(gè)方面:支持實(shí)例連接(liánjiē)的機(jī)制;屬性的可見(jiàn)性控制;對(duì)屬性值的約束。對(duì)于服務(wù)來(lái)說(shuō),主要應(yīng)該考慮下列因素:支持消息連接(liánjiē)(即表達(dá)對(duì)象交互關(guān)系)的機(jī)制;控制服務(wù)可見(jiàn)性的機(jī)制;動(dòng)態(tài)聯(lián)編。所謂動(dòng)態(tài)聯(lián)編,是指應(yīng)用系統(tǒng)在運(yùn)行過(guò)程中,當(dāng)需要執(zhí)行一個(gè)特定服務(wù)的時(shí)候,選擇(或聯(lián)編)實(shí)現(xiàn)該服務(wù)的適當(dāng)算法的能力。動(dòng)態(tài)聯(lián)編機(jī)制使得程序員在向?qū)ο蟀l(fā)送消息時(shí)擁有較大自由,在發(fā)送消息前,無(wú)須知道接受消息的對(duì)象當(dāng)時(shí)屬于哪個(gè)類。第八頁(yè),共23頁(yè)。5)類型檢查程序設(shè)計(jì)語(yǔ)言可以按照編譯時(shí)進(jìn)行類型檢查的嚴(yán)格程度(chéngdù)來(lái)分類。如果語(yǔ)言僅要求每個(gè)變量或?qū)傩噪`屬于一個(gè)對(duì)象,則是弱類型的;如果語(yǔ)法規(guī)定每個(gè)變量或?qū)傩员仨殰?zhǔn)確地屬于某個(gè)特定的類,則這樣的語(yǔ)言是強(qiáng)類型的。強(qiáng)類型語(yǔ)言主要有兩個(gè)優(yōu)點(diǎn):一是有利于在編譯時(shí)發(fā)現(xiàn)程序錯(cuò)誤,二是增加了優(yōu)化的可能性。通常使用強(qiáng)類型編譯型語(yǔ)言開(kāi)發(fā)軟件產(chǎn)品,使用弱類型解釋型語(yǔ)言快速開(kāi)發(fā)原型。第九頁(yè),共23頁(yè)。6)類庫(kù)大多數(shù)面向?qū)ο笳Z(yǔ)言都提供一個(gè)實(shí)用的類庫(kù)。某些語(yǔ)言本身并沒(méi)有規(guī)定提供什么樣的類庫(kù),而是由實(shí)現(xiàn)這種語(yǔ)言的編譯系統(tǒng)自行提供類庫(kù)。存在類庫(kù),許多軟構(gòu)件就不必由程序員重頭編寫了,這為實(shí)現(xiàn)軟件重用帶來(lái)很大方便。類庫(kù)中往往包含實(shí)現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)(shùjùjiéɡòu)的類,通常把這些類稱為包容類。在類庫(kù)中還可以找到實(shí)現(xiàn)各種關(guān)聯(lián)的類。更完整的類庫(kù)通常還提供獨(dú)立于具體設(shè)備的接口類(例如,輸入輸出流),此外,用于實(shí)現(xiàn)窗口系統(tǒng)的用戶界面類也非常有用,它們構(gòu)成一個(gè)相對(duì)獨(dú)立的圖形庫(kù)。第十頁(yè),共23頁(yè)。7)效率使用擁有完整類庫(kù)的面向?qū)ο笳Z(yǔ)言,有時(shí)(yǒushí)能比使用非面向?qū)ο笳Z(yǔ)言得到運(yùn)行更快的代碼。這是因?yàn)轭悗?kù)中提供了更高效的算法和更好的數(shù)據(jù)結(jié)構(gòu)。第十一頁(yè),共23頁(yè)。8)持久保存對(duì)象任何應(yīng)用程序都對(duì)數(shù)據(jù)進(jìn)行處理,如果希望數(shù)據(jù)能夠(nénggòu)不依賴于程序執(zhí)行的生命期而長(zhǎng)時(shí)間保存下來(lái),則需要提供某種保存數(shù)據(jù)的方法。希望長(zhǎng)期保存數(shù)據(jù)主要出于以下兩個(gè)原因:(1)為實(shí)現(xiàn)在不同程序之間傳遞數(shù)據(jù),需要保存數(shù)據(jù);(2)為恢復(fù)被中斷了的程序的運(yùn)行,首先需要保存數(shù)據(jù)。第十二頁(yè),共23頁(yè)。9)參數(shù)化類所謂參數(shù)化類,就是使用一個(gè)或多個(gè)類型去參數(shù)化一個(gè)類的機(jī)制,有了這種機(jī)制,程序員就可以先定義一個(gè)參數(shù)化的類模板(即在類定義中包含以參數(shù)形式出現(xiàn)的一個(gè)或多個(gè)類型),然后(ránhòu)把數(shù)據(jù)類型作為參數(shù)傳遞進(jìn)來(lái),從而把這個(gè)類模板應(yīng)用在不同的應(yīng)用程序中,或用在同一應(yīng)用程序的不同部分。Eiffel語(yǔ)言中就有參數(shù)化類,C++語(yǔ)言也提供了類模板。第十三頁(yè),共23頁(yè)。10)開(kāi)發(fā)環(huán)境軟件工具和軟件工程環(huán)境對(duì)軟件生產(chǎn)率有很大影響(yǐngxiǎng)。由于面向?qū)ο蟪绦蛑欣^承關(guān)系和動(dòng)態(tài)聯(lián)編等引入的特殊復(fù)雜性,面向?qū)ο笳Z(yǔ)言所提供的軟件工具或開(kāi)發(fā)環(huán)境就顯得尤其重要了。至少應(yīng)該包括下列一些最基本的軟件工具:編輯程序,編譯程序或解釋程序,瀏覽工具,調(diào)試器(debugger)等。第十四頁(yè),共23頁(yè)。開(kāi)發(fā)人員在選擇面向?qū)ο笳Z(yǔ)言時(shí),還應(yīng)該著重考慮以下一些(yīxiē)實(shí)際因素。1)將來(lái)能否占主導(dǎo)地位為使自己的產(chǎn)品在若干年后仍然具有很強(qiáng)的生命力,人們可能希望采用將來(lái)占主導(dǎo)地位的語(yǔ)言編程。但最終決定選用哪種面向?qū)ο笳Z(yǔ)言的實(shí)際因素,往往是諸如成本之類的經(jīng)濟(jì)因素而不是技術(shù)因素。2)可重用性采用面向?qū)ο蠓椒ㄩ_(kāi)發(fā)軟件的基本目的和主要優(yōu)點(diǎn),是通過(guò)重用提高軟件生產(chǎn)率。因此,應(yīng)優(yōu)先選用能夠最完整、最準(zhǔn)確地表達(dá)問(wèn)題域語(yǔ)義的面向?qū)ο笳Z(yǔ)言。3.選擇(xuǎnzé)面向?qū)ο笳Z(yǔ)言第十五頁(yè),共23頁(yè)。3)類庫(kù)和開(kāi)發(fā)環(huán)境決定可重用性的因素,不僅僅是面向?qū)ο蟪绦蛘Z(yǔ)言本身,開(kāi)發(fā)環(huán)境和類庫(kù)也是非常重要的因素。事實(shí)上,語(yǔ)言、開(kāi)發(fā)環(huán)境和類庫(kù)這3個(gè)因素綜合起來(lái),共同決定了可重用性。4)其他因素在選擇(xuǎnzé)編程語(yǔ)言時(shí),應(yīng)該考慮的其他因素還有:對(duì)用戶學(xué)習(xí)面向?qū)ο蠓治?、設(shè)計(jì)和編碼技術(shù)所能提供的培訓(xùn)服務(wù);在使用這個(gè)面向?qū)ο笳Z(yǔ)言期間能提供的技術(shù)支持;能提供給開(kāi)發(fā)人員使用的開(kāi)發(fā)工具、開(kāi)發(fā)平臺(tái)、發(fā)行平臺(tái);對(duì)機(jī)器性能和內(nèi)存的需求;集成已有軟件的容易程度等。第十六頁(yè),共23頁(yè)。良好的程序設(shè)計(jì)風(fēng)格對(duì)保證程序質(zhì)量的重要性。良好的程序設(shè)計(jì)風(fēng)格對(duì)面向?qū)ο髮?shí)現(xiàn)來(lái)說(shuō)尤其(yóuqí)重要,不僅能明顯減少維護(hù)或擴(kuò)充的開(kāi)銷,而且有助于在新項(xiàng)目中重用已有的程序代碼。1.提高可重用性一般說(shuō)來(lái),代碼重用有兩種:一種是本項(xiàng)目?jī)?nèi)的代碼重用,另一種是新項(xiàng)目重用舊項(xiàng)目的代碼。有助于實(shí)現(xiàn)這兩類重用的程序設(shè)計(jì)主要有:1)提高方法的內(nèi)聚2)減小方法的規(guī)模3)保持方法的一致性程序設(shè)計(jì)(chénɡxùshèjì)風(fēng)格第十七頁(yè),共23頁(yè)。4)把策略與實(shí)現(xiàn)分開(kāi)5)全面覆蓋6)盡量不使用全局(quánjú)信息7)利用繼承機(jī)制在面向?qū)ο蟪绦蛑校褂美^承機(jī)制是實(shí)現(xiàn)共享和提高重用程度的主要途徑。(1)調(diào)用子過(guò)程。最簡(jiǎn)單的做法是把公共的代碼分離出來(lái),構(gòu)成一個(gè)被其他方法調(diào)用的公用方法通過(guò)調(diào)用公用方法實(shí)現(xiàn)代碼重用的示例如下圖所示:第十八頁(yè),共23頁(yè)。(2)分解(fēnjiě)因子。通過(guò)因子分解(fēnjiě)實(shí)現(xiàn)代碼重用的示例如下圖所示:(3)使用委托。繼承關(guān)系的存在意味著子類“即是”父類,因此,父類的所有(suǒyǒu)方法和屬性應(yīng)該都適用于子類。(4)把代碼封裝在類中。第十九頁(yè),共23頁(yè)。提高可重用性的準(zhǔn)則,也能提高程序(chéngxù)的可擴(kuò)充性。此外,下列的面向?qū)ο蟪绦?chéngxù)設(shè)計(jì)準(zhǔn)則也有助于提高可擴(kuò)充性:1)封裝實(shí)現(xiàn)策略2)不要用一個(gè)方法遍歷多條關(guān)聯(lián)鏈3)避免使用多分支語(yǔ)句4)精心確定公有方法2.提高(tígāo)可擴(kuò)充性第二十頁(yè),共23頁(yè)。程序員在編寫實(shí)現(xiàn)方法的代碼時(shí),既應(yīng)該考慮效率,也應(yīng)該考慮健壯性。通常需要在健壯性與效率之間做出適當(dāng)?shù)恼壑?。為提高健壯性?yīng)該遵守以下幾條準(zhǔn)則:1)預(yù)防用戶的操作錯(cuò)誤2)檢查參數(shù)的合法性3)不要預(yù)先確定限制條件(tiáojiàn)4)先測(cè)試后優(yōu)化3.提高(tígāo)健壯性第二十一頁(yè),共23頁(yè)。1.測(cè)試策略1)面向?qū)ο蟮膯卧獪y(cè)試2)面向?qū)ο蟮募蓽y(cè)試面向?qū)ο筌浖募蓽y(cè)試主要有下述兩種不同的策略:(1)基于線程的測(cè)試(threadbasedtesting)(2)基于使用的測(cè)試(usebasedtesting)3)面向?qū)ο蟮拇_認(rèn)測(cè)試傳統(tǒng)(chuántǒng)的黑盒測(cè)試方法也可用于設(shè)計(jì)確認(rèn)測(cè)試用例,但是,對(duì)于面向?qū)ο蟮能浖?lái)說(shuō),主要還是根據(jù)動(dòng)態(tài)模型和描述系統(tǒng)行為的腳本來(lái)設(shè)計(jì)確認(rèn)測(cè)試用例。面向?qū)ο鬁y(cè)試(cèshì)第二十二頁(yè),共23頁(yè)。1)測(cè)試類的方法測(cè)試單個(gè)類的方法主要有
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 軸承裝配工安全知識(shí)競(jìng)賽能力考核試卷含答案
- 飛機(jī)外勤彈射救生工崗前健康知識(shí)考核試卷含答案
- 井下特種裝備操作工成果轉(zhuǎn)化模擬考核試卷含答案
- 2025年記憶綿家居制品合作協(xié)議書
- 學(xué)生綜合實(shí)踐活動(dòng)請(qǐng)假條
- 2025年變頻器柜體系統(tǒng)合作協(xié)議書
- 2025年節(jié)能、高效干燥設(shè)備項(xiàng)目合作計(jì)劃書
- 中國(guó)古購(gòu)物中心行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 信息和信息技術(shù)
- 人力資源部工作總結(jié)和計(jì)劃
- 門窗維修協(xié)議合同范本
- 子宮肌瘤課件超聲
- 2025年異丙醇行業(yè)當(dāng)前發(fā)展現(xiàn)狀及增長(zhǎng)策略研究報(bào)告
- 出租車頂燈設(shè)備管理辦法
- DB11∕T 637-2024 房屋結(jié)構(gòu)綜合安全性鑒定標(biāo)準(zhǔn)
- 2025年新疆中考數(shù)學(xué)真題試卷及答案
- 2025屆新疆烏魯木齊市高三下學(xué)期三模英語(yǔ)試題(解析版)
- DB3210T1036-2019 補(bǔ)充耕地快速培肥技術(shù)規(guī)程
- 統(tǒng)編版語(yǔ)文三年級(jí)下冊(cè)整本書閱讀《中國(guó)古代寓言》推進(jìn)課公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 《顧客感知價(jià)值對(duì)綠色酒店消費(fèi)意愿的影響實(shí)證研究-以三亞S酒店為例(附問(wèn)卷)15000字(論文)》
- 勞動(dòng)仲裁申請(qǐng)書電子版模板
評(píng)論
0/150
提交評(píng)論