版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第九章 面向?qū)ο髮崿F(xiàn),面向?qū)ο髮崿F(xiàn)主要包括兩項工作: 1.把面向?qū)ο笤O(shè)計結(jié)果,翻譯成用某種程序語言書寫的面向?qū)ο蟪绦颍?2.測試并調(diào)試面向?qū)ο蟮某绦颉?面向?qū)ο缶幊?面向?qū)ο鬁y試,第一節(jié) 面向?qū)ο缶幊?一、非面向?qū)ο蟮恼Z言與面向?qū)ο蟮恼Z言 面向?qū)ο笤O(shè)計的結(jié)果,既可以用面向?qū)ο笳Z言,也可以用非面向?qū)ο笳Z言實現(xiàn)。使用非面向?qū)ο笳Z言編寫面向?qū)ο蟪绦?,必須由程序員自己把面向?qū)ο蟾拍钣成涞侥繕?biāo)程序中。,例如,C語言本身并不直接支持類或?qū)ο蟮母拍?,程序員只能利用結(jié)構(gòu)(struct)定義變量,由于不能直接在結(jié)構(gòu)中定義函數(shù),因此必須利用指針間接定義相應(yīng)的函數(shù)。另外,所有非面向?qū)ο笳Z言都不支持繼承的實現(xiàn),使用這
2、類語言編程時,要么完全回避繼承的概念,要么在聲明特殊化類時,把對一般化類的引用嵌套在它里面。,面向?qū)ο笳Z言充分支持面向?qū)ο蟾拍畹膶崿F(xiàn)。從問題域到面向?qū)ο蠓治瞿P?,從面向?qū)ο竽P偷矫嫦驅(qū)ο笤O(shè)計模型,最后從面向?qū)ο笤O(shè)計模型到面向?qū)ο缶幊潭季哂幸恢碌谋硎痉椒?。一致的表示方法既有利于在軟件開發(fā)過程中始終使用統(tǒng)一的概念,也有利于維護(hù)人員理解軟件的各種配置成分。,二、面向?qū)ο笳Z言選擇 80年代以來,面向?qū)ο笳Z言像雨后春筍一樣大量涌現(xiàn),形成了兩大類面向?qū)ο笳Z言,一類是純面向?qū)ο笳Z言,如Smalltalk和Eiffel等語言,著重支持面向?qū)ο蠓椒ㄑ芯亢涂焖僭偷膶崿F(xiàn);另一類是混合型面向?qū)ο笳Z言,也就是在過程語
3、言的基礎(chǔ)上增加面向?qū)ο髾C(jī)制,如C+等語言,它的目標(biāo)是提高運行速度和使傳統(tǒng)程序員容易接受面向?qū)ο笏枷搿?下面介紹幾種典型的面向?qū)ο笳Z言和選擇面向?qū)ο笳Z言時應(yīng)著重考察的一些技術(shù)特點。下表是各種面向?qū)ο笳Z言中使用的術(shù)語對比。,(一)幾種典型的面向?qū)ο笳Z言 1.Smalltalk Smalltalk起源可追溯到20世紀(jì)60年代后期,由美國的Xerox公司Palo Alto研究中心(PARC)開發(fā)。Smalltalk語言在Xerox PARC經(jīng)過了多次重大修改,最終形成了Smalltalk-80版本。Smalltalk-80全面支持面向?qū)ο蟮母拍?,從上表可以看出二者基本一致,表明了這種語言對OOP的深刻
4、影響。,除了概念上的影響作用外,Smalltalk-80對OOP的其它主要貢獻(xiàn)是構(gòu)成其開發(fā)環(huán)境的兩個要素:窗口化的程序設(shè)計工具和類庫。Smalltalk-80實際上與開發(fā)環(huán)境不可分離。這個環(huán)境同樣是用類和對象實現(xiàn)的,提供了一組對象管理功能,具有多窗口、圖形化的用戶界面和一組程序設(shè)計工具。,在這些工具的支持下,程序中的類、消息和方法的實現(xiàn)都可以在不同的窗口中聯(lián)機(jī)地設(shè)計、實現(xiàn)、瀏覽和調(diào)試。Smalltalk-80是最早引入類庫的語言。Smalltalk-80的類庫實際上就是語言的核,連語言的(偽)編譯程序、排錯程序、編輯程序,也是基于類庫中的類實現(xiàn)的。用這種語言進(jìn)行程序設(shè)計,首先要了解并會使用它的
5、類庫。,Smalltalk-80的缺點是不支持強類型化,是一種弱類型化語言,程序中不作變量的類型說明,系統(tǒng)也不進(jìn)行類型檢查,支持完全的動態(tài)聯(lián)編機(jī)制(在發(fā)送消息前,無須知道接受消息的對象當(dāng)時屬于哪個類,只有在運行時才進(jìn)行識別)。Smalltalk-80的另一個缺點時執(zhí)行效率較低。,2.C+ C+語言是C語言的一個超集,由AT/性別 int tall;/身高 int weight;/體重 /類的實現(xiàn) person:person(char s,int t,int w)/對象構(gòu)造函數(shù) sex=s;tall=t;weight=w; void person:answer_tall( )/回答身高 cout
6、”tall:”tallendl; void person:answer_weight( )/回答體重 cout”weight:”weightendl; ;,/聲明對象“張三”、“李四”、“王五” person ZHANG(m,170,75); person LI(f,165,55); person WANG(m,175,90);,2.消息 C+中類的public中描述了屬于該類的實例所能接收的消息及消息格式。例如詢問ZHANG的身高,在程序中可用如下的語句實現(xiàn): ZHANG.answer_tall( ); ZHANG接到消息就執(zhí)行它的函數(shù)“answer_tall”來響應(yīng)。如果其它對象向ZHAN
7、G發(fā)送一條消息“whats your name”,ZHANG不會采取任何行動,因為他不具有該操作,因而不理解這消息。,通常完整的消息由下述三個部分組成:接收消息的對象、消息選擇符(也稱為消息名)、零個或多個變元。例如,Mycircle是一個半徑4cm、圓心位于(100,200)的Circle類的對象,Show是Circle類中定義的一個操作。當(dāng)要求Mycircle以綠顏色在屏幕上顯示時,在C+語言中應(yīng)該向它發(fā)下列消息: Mycircle.Show(GREEN);,其中,Mycircle是接收消息的對象名字,Show是消息名,圓括號內(nèi)的GREEN是消息的變元。當(dāng)Mycircle接收到這個消息后,
8、將執(zhí)行在Circle類中所定義的Show操作。,3.封裝 C+將屬性(C+中稱為“數(shù)據(jù)成員”)、操作(C+中稱為“成員函數(shù)”)封裝在class中,其它用戶不必知道對象屬性和方法的實際細(xì)節(jié),只需利用class中的public部分提供的消息格式來訪問該對象。,4.繼承性 C+允許在既有類的基礎(chǔ)上定義新的類,而不需把既有類的內(nèi)容重新書寫一遍。既有類稱為基類或父類,在它基礎(chǔ)上建立的類稱為派生類或子類。例第八章中的派生類“teacher”、“student”類在既有類“person”的基礎(chǔ)上的說明如下:,/派生類的說明 class teacher: public person public: void
9、teach_what( ); private: char course10; ; class student: public person public: void which_grade( ); private: int grade; ;,第二節(jié) 面向?qū)ο鬁y試,一、 測試策略 面向?qū)ο筌浖y試的目標(biāo)與結(jié)構(gòu)化軟件測試的目標(biāo)相同,都是為了找出軟件開發(fā)中的錯誤,提高軟件的質(zhì)量。結(jié)構(gòu)化軟件的測試策略是從組成系統(tǒng)的最小單元模塊開始進(jìn)行測試,然后逐步集成進(jìn)行小系統(tǒng)測試、系統(tǒng)測試,最后在用戶的參與下進(jìn)行驗收測試。,面向?qū)ο筌浖臏y試策略也是從組成系統(tǒng)的最小單元開始,對象是面向?qū)ο筌浖械淖钚卧?,所以首?/p>
10、進(jìn)行對象測試,然后對組成子系統(tǒng)的各個對象之間的協(xié)同關(guān)系進(jìn)行測試,最后是整個系統(tǒng)的測試。 面向?qū)ο筌浖臏y試策略與上述策略基本相同,但也有許多新特點。,1.面向?qū)ο蟮膯卧獪y試 類(對象)是組成面向?qū)ο筌浖到y(tǒng)的最小單元,所以首先進(jìn)行類測試。類是屬性與服務(wù)的封裝體,它與傳統(tǒng)的一個入口一個出口的模塊測試完全不同。類的測試包含兩個步驟:單個服務(wù)的實現(xiàn)體方法的測試、各個方法之間協(xié)作的測試。,(1)單個方法的測試 對象靠消息的接收執(zhí)行相應(yīng)的方法,傳統(tǒng)針對模塊的設(shè)計測試用例的技術(shù)例如邏輯覆蓋、等價劃分、邊界值分析和錯誤推測等仍然可以使用。方法測試中有兩個方面要加以注意: 首先,方法執(zhí)行的結(jié)果并不一定返回調(diào)用
11、者,有的可能是改變被測對象的某個屬性。,由于對象的封裝性,被測對象的屬性狀態(tài)對外界是不能直接可見的,需要采取其它的辦法:例如在類中增加方法,該方法的功能是顯示該對象當(dāng)前的屬性狀態(tài),然后在被測方法執(zhí)行前后分別發(fā)送消息獲得被測對象的屬性狀態(tài)進(jìn)行比較。,其次,除了類中自己定義的方法,還可能存在從基類繼承來的方法,這些方法雖然在基類中已經(jīng)測試過,在派生類往往需要再次測試。例如類CL2是類CL1的派生類,類CL3是類CL2的派生類。其中 類CL1:包含方法f1、f2,但方法f1中使用了f2; 類CL2:重載方法f1,繼承方法f2,但方法f1中仍使用了f2; 類CL3:繼承方法f1,重載方法f2。,類CL
12、3中方法f1盡管是從基類CL2中不變繼承來的,但f1使用了f2,該方法在CL2實例背景下被調(diào)用時,和該方法在CL3實例背景下被調(diào)用時,實際所執(zhí)行的f2代碼是不一樣的。所以在測試派生類CL3時,繼承來的方法f1還應(yīng)該重新測試。,(2)方法間協(xié)作的測試 面向?qū)ο笾?,在保證單個方法功能正確的基礎(chǔ)上,還應(yīng)該測試方法之間的協(xié)作關(guān)系。方法被封裝在對象類中,對象彼此間通過發(fā)送消息啟動相應(yīng)的方法,但是,對象并沒有明顯地規(guī)定用什么次序啟動它的操作才是合法的。這時,對象就像一個有多個入口的模塊,因此,必須測試方法的不同次序組合的情況。,2.面向?qū)ο蟮募蓽y試 因為在面向?qū)ο蟮能浖胁淮嬖趯哟蔚目刂平Y(jié)構(gòu),傳統(tǒng)的自頂
13、向下和自底向上的集成策略就沒有意義了。面向?qū)ο筌浖募蓽y試有兩種不同的策略。 是基于線程的測試(thread-based testing),這種策略把響應(yīng)系統(tǒng)的一個輸入或一個事件所需要的一組類集成起來。分別集成并測試每個線程,同時應(yīng)用回歸測試以保證沒有產(chǎn)生副作用。,基于使用的測試(use-based testing),這種測試首先測試幾乎不使用服務(wù)器類的那些類(稱為獨立類),把獨立類都測試完之后,接下來測試使用獨立類的下一個層次的類(成為依賴類)。對依賴類的測試一個層次一個層次地持續(xù)進(jìn)行下去,直至把整個軟件系統(tǒng)構(gòu)造完為止。,集群測試(cluster testing)是面向?qū)ο筌浖y試的一個步
14、驟。在這個測試步驟中,用精心設(shè)計的測試用例檢查一群相互協(xié)作的類(通過研究對象模型可以確定協(xié)作類),這些測試用例力圖發(fā)現(xiàn)協(xié)作錯誤。,3. 面向?qū)ο蟮拇_認(rèn)測試 在確認(rèn)測試層次,不再考慮類之間相互連接的細(xì)節(jié)。和傳統(tǒng)的確認(rèn)測試一樣,面向?qū)ο筌浖拇_認(rèn)測試也集中檢查用戶可見的動作和用戶可識別的輸出。為了導(dǎo)出確認(rèn)測試用例,測試人員應(yīng)該認(rèn)真研究動態(tài)模型和描述系統(tǒng)行為的腳本,以確定最可能發(fā)現(xiàn)用戶交互需求錯誤的情景。,二、測試用例的設(shè)計 1.測試類的測試用例設(shè)計 與傳統(tǒng)的單元測試的測試用例設(shè)計的關(guān)注點(傳統(tǒng)單元測試關(guān)注算法細(xì)節(jié))不同,由于類中單個方法一般由兩三個語句構(gòu)成,測試比較簡單,所以類測試用例的設(shè)計關(guān)注于
15、設(shè)計適當(dāng)?shù)牟僮餍蛄幸詸z查類中方法的協(xié)作。主要的方法有:隨機(jī)測試、劃分測試和基于故障的測試等三種。,(1)隨機(jī)測試 以銀行應(yīng)用系統(tǒng)為例,簡要說明這種測試方法。 該系統(tǒng)的account(帳戶)類有如下操作:open(打開)、setup(建立)、deposit(存款)、withdraw(取款)、balance(余額)、summarize(清單)、creditLimit(透支限額)、close(關(guān)閉)。,上列每個操作都可以應(yīng)用于account類的實例,但是,該系統(tǒng)的性質(zhì)也對操作的應(yīng)用施加了一些限制,例如,必須在應(yīng)用其它操作之前先打開帳戶,在完成了全部操作之后才能關(guān)閉帳戶。即使有這些限制,可做的操作也有
16、許多種排列方法。,一個account類實例的最小行為歷史包括下列操作: opensetupdepositwithdrawclose 這就是對account類的最小測試序列。但是,在下面的序列中可能發(fā)生許多其它行為: opensetupdeposit deposit | withdraw | balance | summarize | creditLimit withdrawclose,從上列序列可以隨機(jī)地產(chǎn)生一系列不同的操作序列,例如: 測試用例# r1: opensetupdepositdepositbalance summarizewithdrawclose 測試用例# r2: opens
17、etupdepositwithdrawdepositbalancecreditLimitwithdrawclose 執(zhí)行上述這些及另外一些隨機(jī)產(chǎn)生的測試用例,可以測試類實例的不同生存歷史。,(2)劃分測試 與測試傳統(tǒng)時采用等價劃分方法類似,劃分測試方法可以減少測試類時所需要的測試用例的數(shù)量。介紹劃分的方法有如下幾種: 1) 基于狀態(tài)的劃分 這種方法根據(jù)類操作改變狀態(tài)的能力來劃分操作。例如account類中狀態(tài)操作有:deposit和withdraw,非狀態(tài)操作有balance、summarize和creditLimit。,可以設(shè)計出如下的測試用例: 測試用例# p1: opensetupdep
18、ositdepositwithdraw withdrawclose 測試用例# p2: opensetupdepositsummarize creditLimitwithdrawclose 在測試用例# p1改變類的狀態(tài),測試用例# p2不改變。,2)基于屬性的劃分 這種方法根據(jù)類操作使用的屬性來劃分類操作。例如account類中的根據(jù)屬性balance的使用可劃分為三個類別: 使用balance的操作 修改balance的操作 不使用也不修改balance的操作。 然后為每個類別設(shè)計測試序列。,3) 基于功能的劃分 這種方法根據(jù)類操作所完成的功能來劃分類操作。例如,可以把account類中的操作分為: 初始化操作(open、setup) 計算操作(deposit、withdraw) 查詢操作(balance、summarize、creditLimit) 終止操作(close)。 然后為每個類別設(shè)計測試序列。,(3)基于故障的測試 基于故障的測試與傳統(tǒng)的錯誤推測法類似,首先推測軟件中可能有的錯
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026重慶市萬州區(qū)茨竹鄉(xiāng)人民政府招聘非全日制公益性崗位1人備考考試試題附答案解析
- 2026年西安工業(yè)大學(xué)附屬小學(xué)教師招聘參考考試題庫附答案解析
- 2026年河北雄安容和樂民小學(xué)見習(xí)崗招聘參考考試題庫附答案解析
- 藥品生產(chǎn)質(zhì)量風(fēng)險管理制度及流程
- 生產(chǎn)管理調(diào)度管理制度
- 生產(chǎn)管理檔案制度
- 南京條約后中國生產(chǎn)制度
- 藥品生產(chǎn)成本核算制度
- 工程安全生產(chǎn)會議制度
- 衛(wèi)生安全生產(chǎn)舉報制度
- 2025-2030泉州市鞋類制造行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 百師聯(lián)盟2025-2026學(xué)年高三上學(xué)期1月期末考試俄語試題含答案
- 2026陜西省森林資源管理局局屬企業(yè)招聘(55人)備考題庫及答案1套
- 2025-2026學(xué)年人教版高二物理上學(xué)期期末模擬卷(含答案)
- 涉密部門保密季度檢查表及規(guī)范流程
- 病種成本核算與臨床路徑精細(xì)化管理
- 項目管理專員年底工作總結(jié)及2026年項目管理計劃
- 臨床重點??茩z驗科評分標(biāo)準(zhǔn)與評估報告
- 飲片物料管理培訓(xùn)
- 2025年東北三省四市教研聯(lián)合體高考模擬試題(二)語文
- 福建省初中畢業(yè)升學(xué)體育考試發(fā)展歷程回顧與展望
評論
0/150
提交評論