軟件工程導(dǎo)論第10章 面向?qū)ο蠓治鯻第1頁
軟件工程導(dǎo)論第10章 面向?qū)ο蠓治鯻第2頁
軟件工程導(dǎo)論第10章 面向?qū)ο蠓治鯻第3頁
軟件工程導(dǎo)論第10章 面向?qū)ο蠓治鯻第4頁
軟件工程導(dǎo)論第10章 面向?qū)ο蠓治鯻第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第十章面向?qū)ο蠓治?0.1面向?qū)ο蠓治龅母具^程10.2需求陳述10.3建立對(duì)象模型10.4建立動(dòng)態(tài)模型10.5建立功能模型10.6定義效勞10.7小結(jié)10.1面向?qū)ο蠓治龅母具^程面向?qū)ο蠓治觥?〕其關(guān)鍵是識(shí)別出問題域內(nèi)的類與對(duì)象,并分析它們相互間的關(guān)系,最終建立起3種模型?!?〕對(duì)象模型最根本、最重要、最核心。

10.1面向?qū)ο蠓治龅母具^程3個(gè)子模型對(duì)所解決問題的描述角度進(jìn)行劃分:對(duì)象模型〔靜態(tài)結(jié)構(gòu)〕3個(gè)子模型動(dòng)態(tài)模型〔交互次序〕功能模型〔數(shù)據(jù)變換〕

10.1面向?qū)ο蠓治龅母具^程5個(gè)層次

復(fù)雜問題的對(duì)象模型的5個(gè)層次五個(gè)層次像是對(duì)象模型的5張水平切片,一層比一層顯示出對(duì)象模型的更多細(xì)節(jié)。類或?qū)ο箝g的關(guān)系指讀者理解大型、復(fù)雜模型的一種機(jī)制,將一個(gè)大型的、復(fù)雜的對(duì)象模型分解成幾個(gè)不同的概念范疇〔記憶的7+2原那么〕面向?qū)ο蠓治龅倪^程尋找類與對(duì)象識(shí)別結(jié)構(gòu)定義屬性建立動(dòng)態(tài)模型定義效勞

10.1面向?qū)ο蠓治龅母具^程面向?qū)ο蠓治霾豢赡車?yán)格地按預(yù)定順序進(jìn)行,大型、復(fù)雜系統(tǒng)的模型需要反復(fù)構(gòu)造多遍才能建成。先構(gòu)造模型的子集,再到完全地理解整個(gè)問題,最終建立整個(gè)模型。10.2需求陳述需求陳述是說明“做什么〞,而不是“怎樣做〞問題范圍功能需求性能需求應(yīng)用環(huán)境假設(shè)條件ATM機(jī)系統(tǒng)問題描述某銀行擬開發(fā)一個(gè)自動(dòng)取款機(jī)系統(tǒng),它是由自動(dòng)取款機(jī)ATM、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成的網(wǎng)絡(luò)系統(tǒng)??傂型顿Y購(gòu)置多臺(tái)ATM和中央計(jì)算機(jī),ATM分別設(shè)在全市各主要街道上。分行提供分行計(jì)算機(jī)和柜員終端。柜員終端設(shè)在分行營(yíng)業(yè)廳及分行下屬的各個(gè)儲(chǔ)蓄所內(nèi)。該軟件的開發(fā)本錢由各分行分?jǐn)?。?chǔ)戶可以用現(xiàn)金或支票向自己擁有的某個(gè)賬戶內(nèi)存款、取款或開新賬戶。通常一個(gè)儲(chǔ)戶擁有多個(gè)賬戶。10.2需求陳述舉例ATM機(jī)系統(tǒng)問題描述

銀行柜員使用柜員終端處理儲(chǔ)戶提交的儲(chǔ)蓄事務(wù),柜員負(fù)責(zé)把儲(chǔ)戶提交的存款或取款事務(wù)輸進(jìn)柜員終端。柜員終端與相應(yīng)的分行計(jì)算機(jī)通信,分行計(jì)算機(jī)具體處理針對(duì)某個(gè)賬戶的事務(wù)并且維護(hù)賬戶。擁有銀行賬戶的儲(chǔ)戶有權(quán)申請(qǐng)領(lǐng)取現(xiàn)金兌換卡,使用現(xiàn)金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現(xiàn)金兌換卡在ATM上提取現(xiàn)金或查詢自己賬戶的信息。將來還可能要求使用ATM辦理轉(zhuǎn)賬、存款等事務(wù)。ATM機(jī)系統(tǒng)問題描述

一張現(xiàn)金兌換卡就是一張?zhí)刂频拇趴ǎ厦嬗蟹中写a。一張磁卡可以訪問儲(chǔ)戶的假設(shè)干個(gè)賬戶,但僅屬于一個(gè)儲(chǔ)戶所有。但是同一張卡可以有多個(gè)副本,因此必須考慮同時(shí)在假設(shè)干臺(tái)ATM上使用同樣的現(xiàn)金兌換卡的可能性。當(dāng)用戶將磁卡插入ATM后,ATM就與用戶交互,以獲取有關(guān)這次事務(wù)的信息,并與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息。ATM要求用戶輸入密碼,ATM將密碼和卡上的信息傳給中央計(jì)算機(jī),請(qǐng)求中央計(jì)算機(jī)核對(duì)這些信息并處理這次事務(wù)。中央計(jì)算機(jī)根據(jù)卡的分行代碼委托分行驗(yàn)證用戶密碼,假設(shè)密碼正確,那么ATM要求用戶選擇事務(wù)類型〔取款,查詢等〕。當(dāng)用戶選擇取款時(shí),ATM請(qǐng)求用戶輸入取款額。最后ATM從現(xiàn)金口吐出現(xiàn)金,并且打印賬單給用戶。自動(dòng)取款機(jī)〔ATM〕系統(tǒng)ATM系統(tǒng)10.2需求陳述10.3建立對(duì)象模型找出候選類與對(duì)象1.找出候選的類與對(duì)象尋找以下五類客觀事物可感知的物理實(shí)體人或組織的角色應(yīng)該記憶的事件兩個(gè)或多個(gè)對(duì)象的相互作用,通常具有交易或接觸的性質(zhì)需要說明的概念10.3建立對(duì)象模型找出候選類與對(duì)象1.找出候選的類與對(duì)象〔續(xù)〕名詞解析法從陳述中找出所有名詞,作為類和對(duì)象的初步候選者銀行,自動(dòng)取款機(jī)〔ATM〕,系統(tǒng),中央計(jì)算機(jī),分行計(jì)算機(jī),柜員終端,網(wǎng)絡(luò),總行,分行,軟件,本錢,市,街道,營(yíng)業(yè)廳,儲(chǔ)蓄所,柜員,儲(chǔ)戶,現(xiàn)金,支票,賬戶,事物,現(xiàn)金兌換卡,余額,磁卡,分行代碼,卡號(hào),用戶,副本,信息,密碼,類型,取款額,賬單,訪問。

某銀行擬開發(fā)一個(gè)自動(dòng)取款機(jī)系統(tǒng),它是由自動(dòng)取款機(jī)ATM、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成的網(wǎng)絡(luò)系統(tǒng)??傂型顿Y購(gòu)置多臺(tái)ATM和中央計(jì)算機(jī),ATM分別設(shè)在全市各主要街道上。分行提供分行計(jì)算機(jī)和柜員終端。柜員終端設(shè)在分行營(yíng)業(yè)廳及分行下屬的各個(gè)儲(chǔ)蓄所內(nèi)。該軟件的開發(fā)本錢由各分行分?jǐn)?。?chǔ)戶可以用現(xiàn)金或支票向自己擁有的某個(gè)賬戶內(nèi)存款、取款或開新賬戶。通常一個(gè)儲(chǔ)戶擁有多個(gè)賬戶。從陳述中找出所有名詞,作為類和對(duì)象的初步候選者

從陳述中找出所有名詞,作為類和對(duì)象的初步候選者

銀行柜員使用柜員終端處理儲(chǔ)戶提交的儲(chǔ)蓄事務(wù),柜員負(fù)責(zé)把儲(chǔ)戶提交的存款或取款事務(wù)輸進(jìn)柜員終端。柜員終端與相應(yīng)的分行計(jì)算機(jī)通信,分行計(jì)算機(jī)具體處理針對(duì)某個(gè)賬戶的事務(wù)并且維護(hù)賬戶。擁有銀行賬戶的儲(chǔ)戶有權(quán)申請(qǐng)領(lǐng)取現(xiàn)金兌換卡,使用現(xiàn)金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現(xiàn)金兌換卡在ATM上提取現(xiàn)金或查詢自己賬戶的信息〔例如,某個(gè)指定賬戶上的余額〕。將來還可能要求使用ATM辦理轉(zhuǎn)賬、存款等事務(wù)。一張現(xiàn)金兌換卡就是一張?zhí)刂频拇趴ǎ厦嬗蟹中写a,對(duì)應(yīng)總行下的一個(gè)分行??ㄌ?hào)確定這張卡可以訪問哪些賬戶。一張磁卡可以訪問儲(chǔ)戶的假設(shè)干個(gè)賬戶,但僅屬于一個(gè)儲(chǔ)戶所有。但是同一張卡可以有多個(gè)副本,因此必須考慮同時(shí)在假設(shè)干臺(tái)ATM上使用同樣的現(xiàn)金兌換卡的可能性。也就是說,系統(tǒng)應(yīng)該能夠處理并發(fā)的訪問。當(dāng)用戶將磁卡插入ATM后,ATM就與用戶交互,以獲取有關(guān)這次事務(wù)的信息,并與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息。ATM要求用戶輸入密碼,ATM將密碼和卡上的信息傳給中央計(jì)算機(jī),請(qǐng)求中央計(jì)算機(jī)核對(duì)這些信息并處理這次事務(wù)。中央計(jì)算機(jī)根據(jù)卡的分行代碼委托分行驗(yàn)證用戶密碼,假設(shè)密碼正確,那么ATM要求用戶選擇事務(wù)類型〔取款,查詢等〕。當(dāng)用戶選擇取款時(shí),ATM請(qǐng)求用戶輸入取款額。最后ATM從現(xiàn)金口吐出現(xiàn)金,并且打印賬單給用戶。從陳述中找出所有名詞,作為類和對(duì)象的初步候選者

10.3建立對(duì)象模型找出候選類與對(duì)象2.篩選出正確的類與對(duì)象篩選時(shí)主要依據(jù)以下標(biāo)準(zhǔn),刪除不正確或不必要的類與對(duì)象!!!!〔1〕冗余〔2〕無關(guān)〔3〕籠統(tǒng)〔4〕屬性〔5〕操作銀行,自動(dòng)取款機(jī)〔ATM〕,系統(tǒng),中央計(jì)算機(jī)分行計(jì)算機(jī),柜員終端,網(wǎng)絡(luò),總行,分行,軟件,本錢,市,街道,營(yíng)業(yè)廳,儲(chǔ)蓄所,柜員,儲(chǔ)戶,現(xiàn)金,支票,賬戶,事務(wù),現(xiàn)金兌換卡,余額,磁卡,分行代碼,卡號(hào),用戶,副本,信息,密碼,類型,取款額,賬單,訪問?!补?4個(gè)名詞〕從中篩選出正確的類與對(duì)象)〔儲(chǔ)戶、用戶;現(xiàn)金兌換卡、磁卡和副本〕〔本錢、市、街道、營(yíng)業(yè)廳和儲(chǔ)蓄所〕〔銀行、訪問、信息、網(wǎng)絡(luò)、系統(tǒng)、軟件〕〔現(xiàn)金、支票、取款額、賬單、余額、分行代碼、卡號(hào)、密碼、類型〕注意:在分析階段不應(yīng)該過早地考慮怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)。找出候選類與對(duì)象2.篩選出正確的類與對(duì)象〔共11個(gè)〕ATM中央計(jì)算機(jī)分行計(jì)算機(jī)柜員終端總行分行柜員儲(chǔ)戶賬戶事務(wù)(分為柜員事務(wù)和遠(yuǎn)程事務(wù))

現(xiàn)金兌換卡確定關(guān)聯(lián)1.初步確定關(guān)聯(lián)

需求陳述中使用的描述性動(dòng)詞或動(dòng)詞詞組,通常表示關(guān)聯(lián)關(guān)系。(1)直接提取動(dòng)詞短語得出關(guān)聯(lián)(2)需求陳述中隱含的關(guān)聯(lián)(3)根據(jù)問題域知識(shí)得出的關(guān)聯(lián)

直接提取動(dòng)詞短語得出的關(guān)聯(lián)ATM、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成網(wǎng)絡(luò)??傂袚碛卸嗯_(tái)ATM。ATM設(shè)在主要街道上。分行提供分行計(jì)算機(jī)和柜員終端。柜員終端設(shè)在分行營(yíng)業(yè)廳及儲(chǔ)蓄所內(nèi)。分行分?jǐn)傑浖_發(fā)本錢。儲(chǔ)戶擁有賬戶。分行計(jì)算機(jī)處理針對(duì)賬戶的事務(wù)。分行計(jì)算機(jī)維護(hù)賬戶。柜員終端與分行計(jì)算機(jī)通信。柜員輸入針對(duì)賬戶的事務(wù)。ATM與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息。中央計(jì)算機(jī)確定事務(wù)與分行的對(duì)應(yīng)關(guān)系。ATM讀現(xiàn)金兌換卡。ATM與用戶交互。ATM吐出現(xiàn)金。ATM打印賬單。系統(tǒng)處理并發(fā)的訪問。隱含的關(guān)聯(lián)總行由各個(gè)分行組成。分行保管賬戶??傂袚碛兄醒胗?jì)算機(jī)。系統(tǒng)維護(hù)事務(wù)日志。系統(tǒng)提供必要的平安性。儲(chǔ)戶擁有現(xiàn)金兌換卡。中央計(jì)算機(jī)與分行通信根據(jù)問題域知識(shí)得出的關(guān)聯(lián)現(xiàn)金兌換卡訪問賬戶。分行雇用柜員。確定關(guān)聯(lián)2.篩選〔1〕根據(jù)下述標(biāo)準(zhǔn)刪除候選關(guān)聯(lián):已刪去的類之間的關(guān)聯(lián)。與問題無關(guān)的或在實(shí)現(xiàn)階段考慮的關(guān)聯(lián)。瞬時(shí)事件。派生關(guān)聯(lián)?!?〕三元關(guān)聯(lián):將三元關(guān)聯(lián)改造成二元關(guān)聯(lián)。直接提取動(dòng)詞短語得出的關(guān)聯(lián)ATM、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成網(wǎng)絡(luò)??傂袚碛卸嗯_(tái)ATM。ATM設(shè)在主要街道上。分行提供分行計(jì)算機(jī)和柜員終端。柜員終端設(shè)在分行營(yíng)業(yè)廳及儲(chǔ)蓄所內(nèi)。分行分?jǐn)傑浖_發(fā)本錢。儲(chǔ)戶擁有賬戶。分行計(jì)算機(jī)處理針對(duì)賬戶的事務(wù)。分行計(jì)算機(jī)維護(hù)賬戶。柜員終端與分行計(jì)算機(jī)通信。柜員輸入針對(duì)賬戶的事務(wù)。ATM與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息。中央計(jì)算機(jī)確定事務(wù)與分行的對(duì)應(yīng)關(guān)系。ATM讀現(xiàn)金兌換卡。ATM與用戶交互。ATM吐出現(xiàn)金。ATM打印賬單。系統(tǒng)處理并發(fā)的訪問。隱含的關(guān)聯(lián)總行由各個(gè)分行組成。分行保管賬戶??傂袚碛兄醒胗?jì)算機(jī)。系統(tǒng)維護(hù)事務(wù)日志。系統(tǒng)提供必要的平安性。儲(chǔ)戶擁有現(xiàn)金兌換卡。中央計(jì)算機(jī)與分行通信根據(jù)問題域知識(shí)得出的關(guān)聯(lián)現(xiàn)金兌換卡訪問賬戶。分行雇用柜員。去掉已刪去類的關(guān)聯(lián)去掉與問題無關(guān)的或應(yīng)該在實(shí)現(xiàn)階段考慮的關(guān)聯(lián)去掉瞬時(shí)事件將三元關(guān)聯(lián)改造成二元關(guān)聯(lián)去掉派生關(guān)聯(lián)分行計(jì)算機(jī)處理針對(duì)賬戶的事務(wù)。分解為:分行計(jì)算機(jī)處理事務(wù)。事務(wù)修改賬戶。柜員輸入針對(duì)賬戶的事務(wù)。分解為:柜員輸入事務(wù)。事務(wù)修改賬戶。ATM與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息。分解為:ATM與中央計(jì)算機(jī)通信。在ATM機(jī)上輸入事務(wù)。確定關(guān)聯(lián)3.進(jìn)一步完善正名、分解、補(bǔ)充、標(biāo)明重?cái)?shù)

ATM系統(tǒng)原始的類圖〔6〕分行提供分行計(jì)算機(jī)和柜員終端?!?〕儲(chǔ)戶擁有賬戶?!?〕分行計(jì)算機(jī)維護(hù)賬戶。同2及13-2〔9〕柜員終端與分行計(jì)算機(jī)通信。〔10〕中央計(jì)算機(jī)確定事務(wù)與分行的對(duì)應(yīng)關(guān)系。同〔5〕〔13〕柜員輸入針對(duì)賬戶的事務(wù)。分解為:〔13-1〕柜員輸入事務(wù)?!?3-2〕事務(wù)修改賬戶。〔14〕分行計(jì)算機(jī)處理針對(duì)賬戶的事務(wù)。分解為:〔14-1〕分行計(jì)算機(jī)處理事務(wù)?!?4-2〕事務(wù)修改賬戶?!?5〕ATM與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息。分解為:〔15-1〕ATM與中央計(jì)算機(jī)通信?!?5-2〕在ATM機(jī)上輸入事務(wù)。隱含的關(guān)聯(lián)〔1〕總行由各個(gè)分行組成?!?〕分行保管賬戶。〔3〕總行擁有中央計(jì)算機(jī)?!?〕儲(chǔ)戶擁有現(xiàn)金兌換卡。〔5〕中央計(jì)算機(jī)與分行通信根據(jù)問題域知識(shí)得出的關(guān)聯(lián)〔11〕現(xiàn)金兌換卡訪問賬戶。〔12〕分行雇用柜員。直接提取動(dòng)詞短語得出的關(guān)聯(lián)隱含的關(guān)聯(lián)〔1〕總行由各個(gè)分行組成?!?〕分行保管賬戶?!?〕總行擁有中央計(jì)算機(jī)。〔4〕儲(chǔ)戶擁有現(xiàn)金兌換卡。〔5〕中央計(jì)算機(jī)與分行通信〔6〕分行提供分行計(jì)算機(jī)和柜員終端。〔7〕儲(chǔ)戶擁有賬戶?!?〕分行計(jì)算機(jī)維護(hù)賬戶。同2及13-2〔9〕柜員終端與分行計(jì)算機(jī)通信?!?0〕中央計(jì)算機(jī)確定事務(wù)與分行的對(duì)應(yīng)關(guān)系。同〔5〕〔13〕柜員輸入針對(duì)賬戶的事務(wù)。分解為:〔13-1〕柜員輸入事務(wù)?!?3-2〕事務(wù)修改賬戶?!?4〕分行計(jì)算機(jī)處理針對(duì)賬戶的事務(wù)。分解為:〔14-1〕分行計(jì)算機(jī)處理事務(wù)?!?4-2〕事務(wù)修改賬戶。〔15〕ATM與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息。分解為:〔15-1〕ATM與中央計(jì)算機(jī)通信?!?5-2〕在ATM機(jī)上輸入事務(wù)。根據(jù)問題域知識(shí)得出的關(guān)聯(lián)〔11〕現(xiàn)金兌換卡訪問賬戶?!?2〕分行雇用柜員。10.3.3劃分主題在概念上把系統(tǒng)包含的內(nèi)容分解成假設(shè)干個(gè)范疇?wèi)?yīng)該按問題領(lǐng)域而不是用功能分解的方法來確定主題不同主題內(nèi)的對(duì)象相互間依賴和交互最少的原那么總行〔總行和中央計(jì)算機(jī)〕ATM系統(tǒng)分行〔分行、分行計(jì)算機(jī)、柜員終端、柜員事務(wù)、柜員和賬戶等〕ATM〔ATM、遠(yuǎn)程事務(wù)、現(xiàn)金兌換卡和儲(chǔ)戶〕10.3.4確定屬性屬性是對(duì)象的性質(zhì)或特征注意在分析階段不要用屬性來表示對(duì)象間的關(guān)系,使用關(guān)聯(lián)能夠表示兩個(gè)對(duì)象間的任何關(guān)系,而且把關(guān)系表示得更清晰、更醒目。10.3.4確定屬性選擇在需求陳述中一般用名詞詞組表示屬性需藉助于領(lǐng)域知識(shí)和常識(shí)才能分析得出屬性屬性對(duì)問題域的根本結(jié)構(gòu)影響很小屬性確實(shí)定與問題域和目標(biāo)系統(tǒng)的任務(wù)有關(guān)。不要考慮那些超出所要解決的問題范圍的屬性。先找最重要的屬性,再逐漸把其余屬性增添進(jìn)去。分析階段不考慮那些純粹用于實(shí)現(xiàn)的屬性。經(jīng)過篩選之后,得到ATM系統(tǒng)中各個(gè)類的屬性,如下圖。10.3.4確定屬性建立類間的繼承是為了共享其公共性質(zhì)/屬性。繼承也對(duì)類按層次加以組織。繼承關(guān)系反映出一定深度的領(lǐng)域知識(shí),需領(lǐng)域?qū)<颐芮信浜喜拍芡瓿?。繼承前人的成果是提高效率的重要方法,也是復(fù)用的根底。10.3.5識(shí)別繼承關(guān)系兩種建立繼承(即泛化)關(guān)系的方式:(1)自底向上:抽象出現(xiàn)有類的共同性質(zhì)泛化出父類,這個(gè)過程實(shí)質(zhì)上模擬了人類歸納思維過程。例如,在ATM系統(tǒng)中,“遠(yuǎn)程事務(wù)〞和“柜員事務(wù)〞是類似的,可以泛化出父類“事務(wù)〞;類似地,從“ATM〞和“柜員終端〞泛化出父類“輸入站〞。(2)自頂向下:把現(xiàn)有類細(xì)化成更具體的子類或從類派生出一個(gè)新類,這模擬了人類的演繹思維過程:從一般到特殊。帶有形容詞修飾的名詞詞組往往暗示了一些具體類。分析階段應(yīng)該防止過度細(xì)化。增加了繼承關(guān)系之后的ATM對(duì)象模型一次建模過程很難得到完全正確的對(duì)象模型。有些細(xì)化工作(例如,定義效勞)是在建立了動(dòng)態(tài)模型和功能模型之后才進(jìn)行的。由于面向?qū)ο蟮母拍詈头?hào)在整個(gè)開發(fā)過程中都是一致的,因此遠(yuǎn)比使用結(jié)構(gòu)分析、設(shè)計(jì)技術(shù)更容易實(shí)現(xiàn)反復(fù)修改、逐步完善的過程。建模的步驟并不一定按照前面講述的次序進(jìn)行。它給初學(xué)者提供了一個(gè)指南。下面以ATM系統(tǒng)為例,討論可能做的修改:10.3.6反復(fù)修改1.分解“現(xiàn)金兌換卡〞類“現(xiàn)金兌換卡〞有兩個(gè)相對(duì)獨(dú)立的功能,它既是鑒別儲(chǔ)戶及使用ATM的權(quán)限的卡,又是ATM獲得分行代碼和卡號(hào)等數(shù)據(jù)的數(shù)據(jù)載體。因此,把“現(xiàn)金兌換卡〞類分解為“卡權(quán)限〞和“現(xiàn)金兌換卡〞兩個(gè)類,將使每個(gè)類的功能更單一:前一個(gè)類標(biāo)志儲(chǔ)戶訪問賬戶的權(quán)限,后一個(gè)類是含有分行代碼和卡號(hào)的數(shù)據(jù)載體。多張現(xiàn)金兌換卡可能對(duì)應(yīng)著相同的訪問權(quán)限。2.“事務(wù)〞由“更新〞組成一個(gè)事務(wù)可包含對(duì)賬戶的假設(shè)干次更新。更新指的是對(duì)賬戶所做的一個(gè)動(dòng)作(取款、存款或查詢)?!案篓曈凶约旱膶傩?類型、金額等),應(yīng)該獨(dú)立存在,因此應(yīng)該把它作為類。3.把“分行〞與“分行計(jì)算機(jī)〞合并區(qū)分“分行〞與“分行計(jì)算機(jī)〞,對(duì)于分析這個(gè)系統(tǒng)來說,并沒有多大意義,為簡(jiǎn)單起見,把它們合并。類似地,應(yīng)該合并“總行〞和“中央計(jì)算機(jī)〞。以下圖給出了修改后的ATM對(duì)象模型,與修改前比較起來,它更簡(jiǎn)單、更清晰。1、分解“現(xiàn)金兌換卡〞類為“卡權(quán)限〞和“現(xiàn)金兌換卡〞兩個(gè)類;2、“事務(wù)〞由“更新〞組成;3、把“分行〞與“分行計(jì)算機(jī)〞合并修改后的ATM對(duì)象模型對(duì)于僅存儲(chǔ)靜態(tài)數(shù)據(jù)的系統(tǒng)(例如數(shù)據(jù)庫)來說,動(dòng)態(tài)模型并沒有什么意義。但是假設(shè)開發(fā)交互式系統(tǒng)時(shí),動(dòng)態(tài)模型卻起著很重要的作用。例如:收集輸入信息是目標(biāo)系統(tǒng)的主要工作。10.4建立動(dòng)態(tài)模型的方法10.4建立動(dòng)態(tài)模型遺漏常見的交互行為。建立動(dòng)態(tài)模型的三步:編寫典型交互行為的腳本,包括正常情況和異常情況腳本。從腳本中提取出事件,確定觸發(fā)每個(gè)事件的動(dòng)作對(duì)象以及接受事件的目標(biāo)對(duì)象。排列事件發(fā)生的次序,確定每個(gè)對(duì)象可能有的狀態(tài)及狀態(tài)間的轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們。最后,比較各個(gè)對(duì)象的狀態(tài)圖,檢查它們之間的一致性,確保事件之間的匹配。腳本:

是指系統(tǒng)在某一執(zhí)行期間內(nèi)出現(xiàn)的一系列事件。編寫腳本的目的:

是保證不遺漏重要的交互步驟,有助于確保整個(gè)交互過程的正確性的和清晰性。編寫腳本內(nèi)容:

描寫既可以包括系統(tǒng)中發(fā)生的全部事件,也可以只包括由某些特定對(duì)象觸發(fā)的事件。對(duì)于每個(gè)事件,都應(yīng)該指明觸發(fā)該事件的動(dòng)作對(duì)象(系統(tǒng)、用戶或其他事物)、接受事件的目標(biāo)對(duì)象以及該事件的參數(shù)。編寫步驟:

編寫正常情況的腳本??紤]特殊情況,例如輸入或輸出的數(shù)據(jù)為最大值(或最小值)??紤]出錯(cuò)情況,例如,輸入的值為非法值或響應(yīng)失敗。10.4.1編寫腳本ATM系統(tǒng)正常和異常腳本事件跟蹤圖有助于畫狀態(tài)圖。它把事件序列以及事件與對(duì)象的關(guān)系,形象、清晰地表示出來。事件跟蹤圖實(shí)質(zhì)上是擴(kuò)充的腳本,是簡(jiǎn)化的UML順序圖。在事件跟蹤圖中,一條豎線代表一個(gè)對(duì)象,每個(gè)事件用一條水平的箭頭線表示,箭頭方向從事件的發(fā)送對(duì)象指向接受對(duì)象。時(shí)間從上向下遞增。10.4.3畫事件跟蹤圖ATM系統(tǒng)正常情況下的事件跟蹤圖時(shí)間對(duì)象事件/消息一張狀態(tài)圖描繪一類對(duì)象的行為,它確定了由事件序列引出的狀態(tài)序列。從豎線射出的箭頭線,常是對(duì)象到達(dá)某個(gè)狀態(tài)時(shí)所做的行為(也常是引起另一類對(duì)象狀態(tài)轉(zhuǎn)換的事件)。兩個(gè)事件之間的間隔就是一個(gè)狀態(tài)(也可能不變)。10.4.4畫狀態(tài)圖考慮完正常事件之后再考慮邊界情況和特殊情況.如,用戶要求取消該當(dāng)前事務(wù),“超時(shí)〞,停電/機(jī)。不能省略對(duì)用戶出錯(cuò)情況的處理。一張覆蓋了腳本中某類對(duì)象的全部事件的狀態(tài)圖仍可能會(huì)一些遺漏的情況。盡量給每個(gè)狀態(tài)取個(gè)有意義的名字。10.4.4畫狀態(tài)圖以ATM系統(tǒng)為例:“ATM〞、“柜員終端〞、“總行〞和“分行〞都是主動(dòng)對(duì)象,它們相互發(fā)送事件;“現(xiàn)金兌換卡〞、“事務(wù)〞和“賬戶〞是被動(dòng)對(duì)象,并不發(fā)送事件。“儲(chǔ)戶〞和“柜員〞雖然也是動(dòng)作對(duì)象,但是,它們都是系統(tǒng)外部的因素,無須在系統(tǒng)內(nèi)實(shí)現(xiàn)它們。ATM的狀態(tài)圖圖10.10總行類驗(yàn)證賬戶的狀態(tài)圖圖10.11分行類驗(yàn)證密碼的狀態(tài)圖總行類分行類圖10.10總行類的處理事務(wù)狀態(tài)圖圖10.11分行類的處理事務(wù)狀態(tài)圖總行類分行類各個(gè)類的狀態(tài)圖通過共享事件聯(lián)系(合并)起來,構(gòu)成了系統(tǒng)的動(dòng)態(tài)模型。應(yīng)該檢查系統(tǒng)級(jí)的完整性和一致性。對(duì)于沒有前驅(qū)或沒有后繼的狀態(tài)應(yīng)該著重審查,如果這個(gè)狀態(tài)既不是交互序列的起點(diǎn)也不是終點(diǎn),那么發(fā)現(xiàn)了一個(gè)錯(cuò)誤。10.4.5審查動(dòng)態(tài)模型應(yīng)該審查每個(gè)事件,跟蹤它對(duì)系統(tǒng)中各個(gè)對(duì)象所產(chǎn)生的效果,以保證它們與每個(gè)腳本都匹配。例:ATM系統(tǒng)在總行類的狀態(tài)圖中,事件“無效代碼〞,是由總行發(fā)出的,但是在ATM類的狀態(tài)圖中并沒有一個(gè)狀態(tài)接受這個(gè)事件。因此,在ATM類的狀態(tài)圖中應(yīng)該再補(bǔ)充一個(gè)狀態(tài)“do/顯示分行代碼錯(cuò)信息〞,它接受由前驅(qū)狀態(tài)“do/驗(yàn)證賬戶〞發(fā)出的事件“無效代碼〞,它的后續(xù)狀態(tài)是“退卡〞。10.4.5審查動(dòng)態(tài)模型ATM的狀態(tài)圖do/顯示分行代碼錯(cuò)信息無效代碼無效代碼在確定類中應(yīng)有的效勞時(shí),既要考慮該類實(shí)體的常規(guī)行為,又要考慮在本系統(tǒng)中特殊需要的效勞。1.常規(guī)行為在分析階段可以認(rèn)為,類中定義的每個(gè)屬性都是可以訪問的,也就是說,假設(shè)在每個(gè)類中都定義了讀、寫該類每個(gè)屬性的操作。但是,通常無需在類圖中顯式表示這些常規(guī)操作。10.6定義效勞2.從事件導(dǎo)出的操作!!!狀態(tài)圖中對(duì)象接收消息,因此該對(duì)象必須有由消息選擇符指定的操作,它啟動(dòng)相應(yīng)的效勞。在ATM系統(tǒng)中,總行類的“處理分行事務(wù)〞啟動(dòng)分行對(duì)象的效勞“更新賬戶〞。所啟動(dòng)的效勞常是接受事件的對(duì)象在相應(yīng)狀態(tài)的行為。(如:圖10.11分行狀態(tài)圖的左圖)從圖10.9ATM的狀態(tài)圖可導(dǎo)出的ATM類的操作有:

顯示主屏(),要求密碼(),驗(yàn)證賬戶(),要求類型();要求金額(),處理事務(wù)(),吐出現(xiàn)金及請(qǐng)求拿走現(xiàn)金().......。從圖10.10總行的狀態(tài)圖可導(dǎo)出的總行類的操作有:

請(qǐng)求處理分行事務(wù)(),驗(yàn)證分行代碼(),請(qǐng)求分行驗(yàn)卡()從圖10.11分行的狀態(tài)圖可導(dǎo)出分行類的操作有:

更新賬戶(),驗(yàn)證卡號(hào)(),驗(yàn)證密碼()4.利用繼承減少冗余操作應(yīng)該盡量利用繼承機(jī)制以減少所需定義的效勞數(shù)目。只要不違背領(lǐng)域知識(shí)和常識(shí),就盡量抽取出相似類的公共屬性和操作,以建立這些類的新父類,并在類等級(jí)的不同層次中正確地定義各個(gè)效勞。分析就是提取系統(tǒng)需求并建立問題域精確模型的過程。面向?qū)ο蠓治龅年P(guān)鍵工作,是分析、確定問題域中的對(duì)象及對(duì)象間的關(guān)系,并建立起問題域的對(duì)象模型、功能模型和動(dòng)態(tài)模型。大型、復(fù)雜系統(tǒng)的對(duì)象模型通常由下述5個(gè)層次組成:主題層、類與對(duì)象層、結(jié)構(gòu)層、屬性層和效勞層。它們對(duì)應(yīng)著在建立對(duì)象模型的過程中所應(yīng)完成的5項(xiàng)工作。10.7小結(jié)課后作業(yè):P256第1題課堂練習(xí)某公司決定開發(fā)一個(gè)管理所有客戶信息的交互式網(wǎng)絡(luò)系統(tǒng),系統(tǒng)的功能如下:(1)瀏覽客戶信息:任何使用Internet的網(wǎng)絡(luò)用戶都可以瀏覽公司所有的客戶信息(包括姓名、住址、號(hào)碼等)。(2)登錄:公司授予每個(gè)客戶一個(gè)賬戶。擁有授權(quán)賬戶的客戶,可以使用系統(tǒng)提供的頁面設(shè)置個(gè)人密碼,并使用該賬戶和密碼在系統(tǒng)注冊(cè)。(3)修改個(gè)人信息:客戶在系統(tǒng)注冊(cè)后,可以發(fā)送電子郵件或使用系統(tǒng)提供的頁面對(duì)個(gè)人信息進(jìn)行修改。(4)刪除客戶信息:只有公司的管理人員才能刪除不再受公司效勞的客戶信息。系統(tǒng)采用面向?qū)ο蟮姆椒ㄟM(jìn)行開發(fā),請(qǐng)畫出用例圖和類圖。用例圖建立對(duì)象模型〔類圖〕的五個(gè)層次

復(fù)雜問題的對(duì)象模型的5個(gè)層次五個(gè)層次像是對(duì)象模型的5張水平切片,一層比一層顯示出對(duì)象模型的更多細(xì)節(jié)。類或?qū)ο箝g的關(guān)系指讀者理解大型、復(fù)雜模型的一種機(jī)制,將一個(gè)大型的、復(fù)雜的對(duì)象模型分解成幾個(gè)不同的概念范疇〔記憶的7+2原那么〕以下五類客觀事物可作為候選對(duì)象:可感知的物理實(shí)體人或組織的角色應(yīng)該記憶的事件兩個(gè)或多個(gè)對(duì)象的相互作用,通常具有交易或接觸的性質(zhì)需要說明的概念第1步:采用名詞解析法獲取候選的類(1)瀏覽客戶信息:任何使用Internet的網(wǎng)絡(luò)用戶都可以瀏覽公司

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論