第3篇第7章面向?qū)ο骭第1頁(yè)
第3篇第7章面向?qū)ο骭第2頁(yè)
第3篇第7章面向?qū)ο骭第3頁(yè)
第3篇第7章面向?qū)ο骭第4頁(yè)
第3篇第7章面向?qū)ο骭第5頁(yè)
已閱讀5頁(yè),還剩90頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、An Introduction to Database System第第3篇面向?qū)ο蟮姆椒▽W(xué)篇面向?qū)ο蟮姆椒▽W(xué)第7章 面向?qū)ο蠓治鯝n Introduction to Database System第第7章章 面向?qū)ο蠓治雒嫦驅(qū)ο蠓治?面向?qū)ο蠓治?通??s寫為OOA)的關(guān)鍵,是識(shí)別出問題域內(nèi)的對(duì)象,并分析它們相互間的關(guān)系,最終建立起問題域的簡(jiǎn)潔、精確、可理解的正確模型。在用面向?qū)ο笥^點(diǎn)建立起的三種模型中,對(duì)象模型是最基本、最重要、最核心的。An Introduction to Database System第第7章章 面向?qū)ο蠓治雒嫦驅(qū)ο蠓治?.1 7.1 分析過程分析過程 7.2 7.2 需

2、求陳述需求陳述7.3 7.3 建立對(duì)象建摸建立對(duì)象建摸 7.3 7.3 建立動(dòng)態(tài)建摸建立動(dòng)態(tài)建摸7.5 7.5 建立功能模型建立功能模型 7.6 7.6 定定 義義 服服 務(wù)務(wù)7.7 7.7 面向?qū)ο蠓治鰧?shí)例面向?qū)ο蠓治鰧?shí)例An Introduction to Database System7.1 分析過程分析過程 7.1.1 概述面向?qū)ο蠓治鰪姆治雒鑼懹脩粜枨蟮奈募_始。面向?qū)ο蠓治鰪姆治雒鑼懹脩粜枨蟮奈募_始。 - -用戶單方書寫的需求;用戶單方書寫的需求; - -系統(tǒng)分析員配合用戶書寫的需求;系統(tǒng)分析員配合用戶書寫的需求; - -項(xiàng)目標(biāo)書中書寫的需求。項(xiàng)目標(biāo)書中書寫的需求。面向?qū)ο蠓治觯?/p>

3、就是抽取和整理用戶需求并建立問題域精確模型的過程。An Introduction to Database System7.1.1 7.1.1 概述概述理解理解-用戶、分析員和領(lǐng)域?qū)<冶磉_(dá)表達(dá)-需求規(guī)格說(shuō)明書(對(duì)象模型、動(dòng)態(tài)模型、功能模型)驗(yàn)證驗(yàn)證-二義性,完善性 對(duì)象模型最基本、最重要、最核心。An Introduction to Database System7.1.2 三個(gè)子模型與五個(gè)層次 面向?qū)ο蠼5玫降哪P桶齻€(gè)要素,即靜態(tài)結(jié)構(gòu)(對(duì)象模型),交互次序(動(dòng)態(tài)模型)和數(shù)據(jù)變換(功能模型)。 解決的問題不同,這三個(gè)子模型的重要程度也不同:解決任何一個(gè)問題,都需要從客觀世界實(shí)體及實(shí)體間相互

4、關(guān)系抽象出極有價(jià)值的對(duì)象模型;當(dāng)問題涉及交互作用和時(shí)序時(shí)(例如,用戶界面及過程控制等),動(dòng)態(tài)模型是重要的。解決運(yùn)算量很大的問題(例如科學(xué)與工程計(jì)算等),則涉及重要的功能模型。動(dòng)態(tài)模型和功能模型中都包含了對(duì)象模型中的操作(即服務(wù)或方法)。An Introduction to Database System 復(fù)雜問題(大型系統(tǒng))的對(duì)象模型由下述五個(gè)層次組成:主題層(也稱為范疇層)、類&對(duì)象層、結(jié)構(gòu)層、屬性層和服務(wù)層,如圖7.1所示。圖圖7.1 7.1 復(fù)雜問題的對(duì)象模型復(fù)雜問題的對(duì)象模型7.1.2 三個(gè)子模型與五個(gè)層次 An Introduction to Database System 綜上所述

5、,我們?cè)诟拍钌峡梢哉J(rèn)為,面向?qū)ο蠓治龃篌w上按照下列順序進(jìn)行下列順序進(jìn)行:尋找類&對(duì)象,識(shí)別結(jié)構(gòu),識(shí)別主題,定義屬性,建立動(dòng)態(tài)模型,建立功能模型,定義服務(wù)。但是,正如前面已經(jīng)多次強(qiáng)調(diào)指出過的,分析不可能嚴(yán)格地按照預(yù)定順序進(jìn)行,大型、復(fù)雜系統(tǒng)的模型需要反復(fù)構(gòu)造多遍才能建成。通常,先構(gòu)造出模型的子集,然后再逐漸擴(kuò)充,直到完全、充分地理解了整個(gè)問題,才能最終把模型建立起來(lái)。7.1.2 三個(gè)子模型與五個(gè)層次 An Introduction to Database System 分析也不是一個(gè)機(jī)械的過程。大多數(shù)需求陳述都缺乏必要的信息,所缺少的信息主要從用戶和領(lǐng)域?qū)<夷抢铽@取,同時(shí)也需要從分析員對(duì)問題域的

6、背景知識(shí)中提取。在分析過程中,系統(tǒng)分析員必須與領(lǐng)域?qū)<壹坝脩舴磸?fù)交流,以便澄清二義性,改正錯(cuò)誤的概念,補(bǔ)足缺少的信息。面向?qū)ο蠼⒌南到y(tǒng)模型,盡管在最終完成之前還是不準(zhǔn)確、不完整的,但對(duì)做到準(zhǔn)確、無(wú)歧義的交流仍然是大有益處的。7.1.2 三個(gè)子模型與五個(gè)層次 An Introduction to Database System7.2 需求陳述需求陳述 7.2.1 書寫要點(diǎn) 通常,需求陳述的內(nèi)容包括:?jiǎn)栴}范圍,功能需求,性能需求,應(yīng)用環(huán)境及假設(shè)條件等??傊?,需求陳述應(yīng)該闡明“做什么”而不是“怎樣做”。它應(yīng)該描述用戶的需求描述用戶的需求而不是提出解決問題的方法。應(yīng)該指出哪些是系統(tǒng)必要的性質(zhì),哪些是

7、任選的性質(zhì)。書寫需求陳述時(shí),要盡力做到語(yǔ)法正確,而且應(yīng)該慎 重選用名詞、動(dòng)詞、形容詞和同義詞。An Introduction to Database System圖圖7.2 ATM7.2 ATM系統(tǒng)系統(tǒng)n圖7.2 所示的自動(dòng)取款機(jī)(ATM)系統(tǒng),是本書講述面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計(jì)時(shí)使用的一個(gè)實(shí)例。7.2.2 例子An Introduction to Database System下面陳述對(duì)ATM系統(tǒng)的需求。某銀行擬開發(fā)一個(gè)自動(dòng)取款機(jī)系統(tǒng),它是一個(gè)由自動(dòng)取款機(jī)、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成的網(wǎng)絡(luò)系統(tǒng)。ATM和中央計(jì)算機(jī)由總行投資購(gòu)買??傂袚碛卸嗯_(tái)ATM,分別設(shè)在全市各主要街道上。分行負(fù)

8、責(zé)提供分行計(jì)算機(jī)和柜員終端。柜員終端設(shè)在分行營(yíng)業(yè)廳及分行下屬的各個(gè)儲(chǔ)蓄所內(nèi)。該系統(tǒng)的軟件開發(fā)成本由各個(gè)分行分?jǐn)偂?.2 需求陳述需求陳述- 7.2.2 例子An Introduction to Database System銀行柜員使用柜員終端處理儲(chǔ)戶提交的儲(chǔ)蓄事務(wù)。儲(chǔ)戶可以用現(xiàn)金或支票向自己擁有的某個(gè)賬戶內(nèi)存款或開新賬戶。儲(chǔ)戶也可以從自己的賬戶中取款。通常,一個(gè)儲(chǔ)戶可能擁有多個(gè)賬戶。柜員負(fù)責(zé)把儲(chǔ)戶提交的存款或取款事務(wù)輸進(jìn)柜員終端,接收儲(chǔ)戶交來(lái)的現(xiàn)金或支票,或付給儲(chǔ)戶現(xiàn)金。柜員終端與相應(yīng)的分行計(jì)算機(jī)通信,分行計(jì)算機(jī)具體處理針對(duì)某個(gè)賬戶的事務(wù)并且維護(hù)賬戶。7.2 需求陳述需求陳述- 7.2.2

9、例子An Introduction to Database System 擁有銀行賬戶的儲(chǔ)戶有權(quán)申請(qǐng)領(lǐng)取現(xiàn)金兌換卡。使用現(xiàn)金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現(xiàn)金兌換卡在ATM上提取現(xiàn)金(即取款),或查詢有關(guān)自己賬戶的信息(例如,某個(gè)指定賬戶上的余額)。將來(lái)可能還要求使用ATM辦理轉(zhuǎn)賬、存款等事務(wù)。7.2 需求陳述需求陳述- 7.2.2 例子An Introduction to Database System 所謂現(xiàn)金兌換卡就是一張?zhí)刂频拇趴?,上面有分行代碼和卡號(hào)。分行代碼唯一標(biāo)識(shí)總行下屬的一個(gè)分行,卡號(hào)確定了這張卡可以訪問哪些賬戶。通常,一張卡可以訪問儲(chǔ)戶的若干個(gè)賬戶,但是不一

10、定能訪問這個(gè)儲(chǔ)戶的全部賬戶。每張現(xiàn)金兌換卡僅屬于一個(gè)儲(chǔ)戶所有,但是,同一張卡可能有多個(gè)副本,因此,必須考慮同時(shí)在若干臺(tái)ATM上使用同樣的現(xiàn)金兌換卡的可能性。也就是說(shuō),系統(tǒng)應(yīng)該能夠處理并發(fā)的訪問。7.2 需求陳述需求陳述- 7.2.2 例子An Introduction to Database System 當(dāng)用戶把現(xiàn)金兌換卡插入ATM之后,ATM就與用戶交互,以獲取有關(guān)這次事務(wù)的信息,并與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息。首先,ATM要求用戶輸入密碼,接下來(lái)ATM把從這張卡上讀到的信息以及用戶輸入的密碼傳給中央計(jì)算機(jī),請(qǐng)求中央計(jì)算機(jī)核對(duì)這些信息并處理這次事務(wù)。7.2 需求陳述需求陳述- 7.2.2

11、 例子An Introduction to Database System 中央計(jì)算機(jī)根據(jù)卡上的分行代碼確定這次事務(wù)與分行的對(duì)應(yīng)關(guān)系,并且委托相應(yīng)的分行計(jì)算機(jī)驗(yàn)證用戶密碼。如果用戶輸入的密碼是正確的,ATM就要求用戶選擇事務(wù)類型(取款、查詢等)。當(dāng)用戶選擇取款時(shí),ATM請(qǐng)求用戶輸入取款額。最后,ATM從現(xiàn)金出口吐出現(xiàn)金,并且打印出賬單交給用戶。7.2 需求陳述需求陳述- 7.2.2 例子ATM機(jī)系統(tǒng)問題描述機(jī)系統(tǒng)問題描述n銀行網(wǎng)絡(luò)中包含柜員和 ATM,ATM 被共享中心所分享。n每家銀行利用自己的計(jì)算機(jī)維護(hù)自己的賬戶并處理賬戶所屬的交易,這些交易包括存款和取款。n某些銀行擁有自己的柜員站,柜員

12、站直接和該銀行的計(jì)算機(jī)通信,柜員鍵入賬戶數(shù)據(jù)和交易數(shù)據(jù)。nATM 和中心計(jì)算機(jī)通信,中心計(jì)算機(jī)再和銀行清賬。nATM 接受金融卡,要求用戶做些操作后和中心計(jì)算機(jī)通信,執(zhí)行交易給予現(xiàn)金和打印收據(jù)。n系統(tǒng)要求保留交易記錄和嚴(yán)守安全規(guī)定。n能同時(shí)存取客戶的相同賬戶。10.2 需求陳述需求陳述An Introduction to Database System7.3 建立對(duì)象模型建立對(duì)象模型面向?qū)ο蠓治鍪滓墓ぷ?,是建立問題域的對(duì)象模型。這個(gè)模型描述了現(xiàn)實(shí)世界中的“類與對(duì)象”以及它們之間的關(guān)系,表示了目標(biāo)系統(tǒng)的靜態(tài)數(shù)據(jù)結(jié)構(gòu)。靜態(tài)數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)用細(xì)節(jié)依賴較少,比較容易確定。當(dāng)用戶的需求變化時(shí),靜態(tài)數(shù)據(jù)結(jié)構(gòu)

13、相對(duì)來(lái)說(shuō)比較穩(wěn)定。因此,用面向?qū)ο蠓椒ㄩ_發(fā)絕大多數(shù)軟件時(shí),都首先建立對(duì)象模型,然后再建立另外兩個(gè)子模型。需求陳述、應(yīng)用領(lǐng)域的專業(yè)知識(shí)以及關(guān)于客觀世界的常識(shí),是建立對(duì)象模型時(shí)的主要信息來(lái)源。An Introduction to Database System7.3 建立對(duì)象模型建立對(duì)象模型建立對(duì)象模型典型的步驟:n確定對(duì)象類和關(guān)聯(lián),對(duì)于大型復(fù)雜問題還要進(jìn)一步劃分出若干個(gè)主題;n給類和關(guān)聯(lián)增添屬性,以進(jìn)一步描述它們;n利用適當(dāng)?shù)睦^承關(guān)系進(jìn)一步合并和組織類。An Introduction to Database System7.3.1 確定類與對(duì)象 類與對(duì)象是在問題域中客觀存在的,系統(tǒng)分析員的主要任

14、務(wù),就是通過分析找出這些類與對(duì)象。首先,找出所有候選的類與對(duì)象;然后,從候選的類與對(duì)象中篩選掉不正確的或不必要的。 對(duì)象是對(duì)問題域中有意義的事物的抽象,它們既可能是物理實(shí)體,也可能是抽象概念。具體地說(shuō),大多數(shù) 客觀事物可分為下述 5 類:An Introduction to Database System(1) 可感知的物理實(shí)體,例如,汽車、書、房屋 等等。 (2) 人或組織的角色,例如,醫(yī)生、教師、職員、計(jì)算機(jī)系、財(cái)務(wù)處等等。 (3) 應(yīng)該記憶的事件,例如,飛行、演出、訪問、交通 事故等等。 (4) 兩個(gè)或多個(gè)對(duì)象的相互作用,通常具有交易或接觸的性質(zhì),例如,購(gòu)買、納稅、結(jié)婚等等。 (5) 需

15、要說(shuō)明的概念,例如,保險(xiǎn)政策、版權(quán)法 等等。在分析所面臨的問題時(shí),可以參照上列 5 類常見事物,找出在當(dāng)前問題域中的候選類與對(duì)象。7.3.1 確定類與對(duì)象An Introduction to Database System另一種更簡(jiǎn)單的分析方法,是所謂的非正式分析。這種分析方法以用自然語(yǔ)言書寫的需求陳述為依據(jù),把陳述中的名詞作為類與對(duì)象的候選者,用形容詞作為確定屬性的線索,把動(dòng)詞作為服務(wù)(操作)的候選者。7.3.1 確定類與對(duì)象An Introduction to Database System以ATM系統(tǒng)為例: 類與對(duì)象的候選者: 銀行、自動(dòng)取款機(jī)(ATM)、系統(tǒng)、中央計(jì)算機(jī)、分行計(jì)算機(jī)、柜

16、員終端、網(wǎng)絡(luò)、總行、分行、軟件、成本、市、街道、營(yíng)業(yè)廳、儲(chǔ)蓄所、柜員、儲(chǔ)戶、現(xiàn)金、支票、帳戶、事務(wù)、現(xiàn)金兌換卡、余額、磁卡、分行代碼、卡號(hào)、用戶、信息、密碼、類型、取款額、帳單、訪問等。7.3.1 確定類與對(duì)象An Introduction to Database System7.3.1 確定類與對(duì)象 2. 篩選出正確的類與對(duì)象篩選出正確的類與對(duì)象 篩選時(shí)主要依據(jù)下列標(biāo)準(zhǔn),刪除不正確或不必要的類與對(duì)象: (1) 冗余 如果兩個(gè)類表達(dá)了同樣的信息,則應(yīng)該保留在此問題域中最富于描述力的名稱。 如如“儲(chǔ)戶儲(chǔ)戶”與與“用戶用戶”、“磁卡磁卡”與與“現(xiàn)金兌換現(xiàn)金兌換卡卡”;An Introduction

17、 to Database System 7.3.1 確定類與對(duì)象(2) 無(wú)關(guān) :現(xiàn)實(shí)世界中存在許多對(duì)象,不能把它們都納入到系統(tǒng)中去,僅需要把與本問題密切相關(guān)的類與對(duì)象放進(jìn)目標(biāo)系統(tǒng)中。 如如“成本成本”、“街道街道”、“營(yíng)業(yè)廳營(yíng)業(yè)廳”、“儲(chǔ)儲(chǔ)蓄所蓄所”;(3) 籠統(tǒng):在需求陳述中常常使用一些籠統(tǒng)的、泛指的名詞 如“銀行”、“網(wǎng)絡(luò)”、“系統(tǒng)”、“軟件”、“信息”; (4) 屬性:在需求陳述中有些名詞描述的是其他對(duì)象的屬性,應(yīng)該把這些名詞從候選類與對(duì)象中去掉。如“余額”、“分行代碼”、“卡號(hào)”、“密碼”、“類型”;An Introduction to Database System(5) 操作 在需

18、求陳述中有時(shí)可能使用一些既可作為名詞,又可作為動(dòng)詞的詞,應(yīng)該慎重考慮它們?cè)诒締栴}中的含 義,以便正確地決定把它們作為類還是作為類中定義的操作。如如“訪問訪問”; (6) 實(shí)現(xiàn) 在分析階段不應(yīng)該過早地考慮怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)。因此,應(yīng)該去掉僅和實(shí)現(xiàn)有關(guān)的候選的類與對(duì)象。 7.3.1 確定類與對(duì)象An Introduction to Database System 在ATM實(shí)例中,經(jīng)過初步篩選,剩下的類與對(duì)象為: ATM、中央計(jì)算機(jī)、分行計(jì)算機(jī)、柜員終端、總行、分行、柜員、儲(chǔ)戶、帳戶、事務(wù)、現(xiàn)金兌換卡。7.3.1 確定類與對(duì)象An Introduction to Database System7.3.

19、2 確定關(guān)聯(lián) 分析確定關(guān)聯(lián),能促使分析員考慮問題域的邊緣情況,有助于發(fā)現(xiàn)那些尚未被發(fā)現(xiàn)的類與對(duì)象。1. 初步確定關(guān)聯(lián) 在需求陳述中使用的描述性動(dòng)詞或動(dòng)詞詞組,通常表示關(guān)聯(lián)關(guān)系。因此,在初步確定關(guān)聯(lián)時(shí),大多數(shù)關(guān)聯(lián)可以通過直接提取需求陳述中的動(dòng)詞詞組而得出。u 直接提取動(dòng)詞短語(yǔ)得出關(guān)聯(lián)u 需求陳述中隱含的關(guān)聯(lián)u 根據(jù)問題域知識(shí)得出的關(guān)聯(lián)以ATM系統(tǒng)為例,經(jīng)過分析初步確定出下列關(guān)聯(lián):(1)直接提取動(dòng)詞短語(yǔ)得出的關(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ā)成本

20、。 儲(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ā)的訪問。An Introduction to Database System(2)需求陳述中隱含的關(guān)聯(lián) 總行由各個(gè)分行組成。 分行保管賬戶。 總行擁有中央計(jì)算機(jī)。 系統(tǒng)維護(hù)事務(wù)日志。 系統(tǒng)提供必要的安全性。 儲(chǔ)戶擁有現(xiàn)金兌換卡 (3)根據(jù)問題域知識(shí)得出的關(guān)聯(lián) 現(xiàn)金兌換卡訪問賬戶。 分行雇用柜員。 7

21、.3.2 確定關(guān)聯(lián)直接提取動(dòng)詞短語(yǔ)得出的關(guān)聯(lián)直接提取動(dòng)詞短語(yǔ)得出的關(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)隱含的關(guān)聯(lián)總行由各個(gè)分行組成。分行保管賬戶。總行擁有中央計(jì)算機(jī)。

22、系統(tǒng)維護(hù)事務(wù)日志。系統(tǒng)提供必要的安全性。儲(chǔ)戶擁有現(xiàn)金兌換卡。中央計(jì)算機(jī)與分行通信根據(jù)問題域知識(shí)得出的關(guān)聯(lián)根據(jù)問題域知識(shí)得出的關(guān)聯(lián)現(xiàn)金兌換卡訪問賬戶。分行雇用柜員。An Introduction to Database System7.3.2 確定關(guān)聯(lián)2.篩選 經(jīng)初步分析得出的關(guān)聯(lián)只能作為候選的關(guān)聯(lián),還需經(jīng)過進(jìn)一步篩選,以去掉不正確的或不必要的關(guān)聯(lián)。篩選時(shí)主要根據(jù)下述標(biāo)準(zhǔn)刪除候選的關(guān)聯(lián):An Introduction to Database System7.3.2 確定關(guān)聯(lián)(1)已刪去的類之間的關(guān)聯(lián) 如果在分析確定類與對(duì)象的過程中已經(jīng)刪掉了某個(gè)候選類,則與這個(gè)類有關(guān)的關(guān)聯(lián)也應(yīng)該刪去,或用其他類重

23、新表達(dá)這個(gè)關(guān)聯(lián)。 以ATM系統(tǒng)為例,由于已經(jīng)刪去了“系統(tǒng)”、“網(wǎng)絡(luò)”、“市”、“街道”、“成本”、“軟件”、“事務(wù)日志”、“現(xiàn)金”、“營(yíng)業(yè)廳”、“儲(chǔ)蓄所”、“賬單”等候選類,因此,與這些類有關(guān)的下列8個(gè)關(guān)聯(lián)也應(yīng)該刪去: An Introduction to Database System7.3.2 確定關(guān)聯(lián) ATM、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成網(wǎng)絡(luò)。 ATM設(shè)在主要街道上。 分行分?jǐn)傑浖_發(fā)成本。 系統(tǒng)提供必要的安全性。 系統(tǒng)維護(hù)事務(wù)日志。 ATM吐出現(xiàn)金。 ATM打印賬單。 柜員終端設(shè)在分行營(yíng)業(yè)廳及儲(chǔ)蓄所內(nèi)An Introduction to Database System7.3.2

24、 確定關(guān)聯(lián)(2)與問題無(wú)關(guān)的或應(yīng)在實(shí)現(xiàn)階段考慮的關(guān)聯(lián) 應(yīng)該把處在本問題域之外的關(guān)聯(lián)或與實(shí)現(xiàn)密切相關(guān)的關(guān)聯(lián)刪去。 例如,在ATM系統(tǒng)的例子中,“系統(tǒng)處理并發(fā)的訪問”并沒有標(biāo)明對(duì)象之間的新關(guān)聯(lián),它只不過提醒我們?cè)趯?shí)現(xiàn)階段需要使用實(shí)現(xiàn)并發(fā)訪問的算法,以處理并發(fā)事務(wù)。An Introduction to Database System7.3.2 確定關(guān)聯(lián)(3)瞬時(shí)事件 關(guān)聯(lián)應(yīng)該描述問題域的靜態(tài)結(jié)構(gòu),而不應(yīng)該是一個(gè)瞬時(shí)事件。 以ATM系統(tǒng)為例,“ATM讀現(xiàn)金兌換卡”描述了ATM與用戶交互周期中的一個(gè)動(dòng)作,它并不是ATM與現(xiàn)金兌換卡之間的固有關(guān)系,因此應(yīng)該刪去。類似地,還應(yīng)該刪去“ATM與用戶交互”這個(gè)候

25、選的關(guān)聯(lián)。 如果用動(dòng)作表述的需求隱含了問題域的某種基本結(jié)構(gòu),則應(yīng)該用適當(dāng)?shù)膭?dòng)詞詞組重新表示這個(gè)關(guān)聯(lián)。例如,在ATM系統(tǒng)的需求陳述中,“中央計(jì)算機(jī)確定事務(wù)與分行的對(duì)應(yīng)關(guān)系”隱含了結(jié)構(gòu)上“中央計(jì)算機(jī)與分行通信”的關(guān)系。 An Introduction to Database System7.3.2 確定關(guān)聯(lián)(4)三元關(guān)聯(lián) 三個(gè)或三個(gè)以上對(duì)象之間的關(guān)聯(lián),大多可以分解為二元關(guān)聯(lián)或用詞組描述成限定的關(guān)聯(lián)。 An Introduction to Database System3.進(jìn)一步完善:應(yīng)該進(jìn)一步完善經(jīng)篩選后余下的關(guān)聯(lián),通常從下述幾個(gè)方面進(jìn)行改進(jìn): (1) 正名 :好的名字是幫助讀者理解的關(guān)鍵因素之一

26、。因此,應(yīng)該仔細(xì)選擇含義更明確的名字作為關(guān)聯(lián)名。(2) 分解 :為了能夠適用于不同的關(guān)聯(lián),必要時(shí)應(yīng)該分解以前確定的類與對(duì)象。 (3) 補(bǔ)充 :發(fā)現(xiàn)了遺漏的關(guān)聯(lián)就應(yīng)該及時(shí)補(bǔ)上。 (4) 標(biāo)明重?cái)?shù) : 應(yīng)該初步判定各個(gè)關(guān)聯(lián)的類型,并粗略地確定關(guān)聯(lián)的重?cái)?shù)。 7.3.2 確定關(guān)聯(lián)An Introduction to Database System7.3.2 確定關(guān)聯(lián)An Introduction to Database System 在開發(fā)應(yīng)該按問題領(lǐng)域而不是用功能分解方法來(lái)確定主題。此外,應(yīng)該按照使不同主題內(nèi)的對(duì)象相互間依賴和交互最少的原則來(lái)確定主題。 大型、復(fù)雜系統(tǒng)的過程中,為了降低復(fù)雜程度,人們

27、習(xí)慣于把系統(tǒng)再進(jìn)一步劃分成幾個(gè)不同的主題,也就是在概念上把系統(tǒng)包含的內(nèi)容分解成若干個(gè)范疇。7.3.3 劃分主題An Introduction to Database Systemn劃分主題劃分主題(總行、分行、總行、分行、ATM機(jī)機(jī))。An Introduction to Database System一般說(shuō)來(lái),確定屬性的過程包括分析和選擇兩個(gè)步驟。 1. 1. 分析分析 需求陳述不能得到所有屬性,須借助領(lǐng)域知識(shí)和需求陳述不能得到所有屬性,須借助領(lǐng)域知識(shí)和常識(shí)。常識(shí)。 2. 2. 選擇選擇 根據(jù)下述情況,刪除不必要的屬性:根據(jù)下述情況,刪除不必要的屬性: 1 1)誤把對(duì)象當(dāng)屬性:)誤把對(duì)象當(dāng)屬

28、性:如果某個(gè)實(shí)體的獨(dú)立存在比它的值更重要,則應(yīng)把它作為一個(gè)對(duì)象而不是對(duì)象的屬性 2 ) 誤把關(guān)聯(lián)類的屬性當(dāng)作一般對(duì)象的屬性 如果某個(gè)性質(zhì)依賴于某個(gè)關(guān)聯(lián)鏈的存在,則該性質(zhì)是關(guān)聯(lián)類的屬性,在分析階段不應(yīng)該把它作為一般對(duì)象的屬性 7.3.4 確定屬性An Introduction to Database System3) 把限定誤當(dāng)成屬性 正確使用限定詞往往可以減少關(guān)聯(lián)的重?cái)?shù)。如果把某個(gè)屬性值固定下來(lái)以后能減少關(guān)聯(lián) 的重?cái)?shù),則應(yīng)該考慮把這個(gè)屬性重新表述成一個(gè)限定詞。 4) 誤把內(nèi)部狀態(tài)當(dāng)成了屬性 如果某個(gè)性質(zhì)是對(duì)象的非公開的內(nèi)部狀態(tài),則應(yīng)該從對(duì)象模型中刪掉這個(gè)屬性。 5) 過于細(xì)化6) 存在不一致的

29、屬性7.3.4 確定屬性An Introduction to Database System圖圖7.4 ATM7.4 ATM系統(tǒng)對(duì)象模型中的屬性系統(tǒng)對(duì)象模型中的屬性7.3.4 確定屬性An Introduction to Database System一般說(shuō)來(lái),可以使用兩種方式建立繼承(即泛化)關(guān)系。(1) 自底向上: 抽象出現(xiàn)有類的共同性質(zhì)泛化出父類,這個(gè)過程實(shí)質(zhì)上模擬了人類歸納思維過程。如:如:“遠(yuǎn)程事務(wù)遠(yuǎn)程事務(wù)”和和“柜員事務(wù)柜員事務(wù)”泛化出泛化出“事務(wù)事務(wù)”; “ “ATM”ATM”和和“柜員終端柜員終端”泛化出泛化出“輸入終端輸入終端”。(2) 自頂向下: 把現(xiàn)有類細(xì)化成更具體的子類

30、,這模擬了人類的演繹思維過程。7.3.5 識(shí)別繼承關(guān)系A(chǔ)n Introduction to Database System圖圖7.5 7.5 帶有帶有繼承繼承關(guān)系關(guān)系的的ATMATM對(duì)象對(duì)象模型模型7.3.5 識(shí)別繼承關(guān)系A(chǔ)n Introduction to Database System僅僅經(jīng)過一次建模過程很難得到完全正確的對(duì)象模型。事實(shí)上,軟件開發(fā)過程就是一個(gè)多次反復(fù)修改、逐步完善的過程。在建模的任何一個(gè)步驟中,如果發(fā)現(xiàn)了模型的缺陷,都必須返回到前期階段進(jìn)行修改。由于面向?qū)ο蟮母拍詈头?hào)在整個(gè)開發(fā)過程中都是一致的,因此遠(yuǎn)比使用結(jié)構(gòu)分析、設(shè)計(jì)技術(shù)更容易實(shí)現(xiàn)反復(fù)修、逐步完善的過程。 實(shí)際上,有

31、些細(xì)化工作 ( 例如,定義服務(wù) ) 是在建立了動(dòng)態(tài)模型和功能模型之后才進(jìn)行的。在實(shí)際工作中,建模的步驟并不一定嚴(yán)格按照前面講述的次序進(jìn)行。 7.3.6 反復(fù)修改An Introduction to Database System1. 1. 分解類分解類 如:分解如:分解“現(xiàn)金兌換卡現(xiàn)金兌換卡”類為類為“卡權(quán)限卡權(quán)限”和和“現(xiàn)金現(xiàn)金兌換卡兌換卡”,使每個(gè)類功能更單一;,使每個(gè)類功能更單一; 2. 2. 合理組織類合理組織類 如:如:“事務(wù)事務(wù)”由由“更新更新”組成,組成,“更新更新”包括包括“取取款款”、“存款存款”、“查詢查詢”等動(dòng)作。等動(dòng)作。 3. 3. 合并類合并類 如:合并如:合并“分行

32、分行”與與“分行計(jì)算機(jī)分行計(jì)算機(jī)”、“總行總行”與與“中央計(jì)算機(jī)中央計(jì)算機(jī)”。7.3.6 反復(fù)修改An Introduction to Database System圖圖7.6 7.6 修改后修改后的的ATMATM對(duì)象模對(duì)象模型型7.3.6 反復(fù)修改An Introduction to Database System7.4 建立動(dòng)態(tài)模型建立動(dòng)態(tài)模型的步驟建立動(dòng)態(tài)模型的步驟:1)第一步,是編寫典型交互行為的腳本。)第一步,是編寫典型交互行為的腳本。2)第二步,從腳本中提取出事件,確定觸發(fā)每個(gè)事件的動(dòng))第二步,從腳本中提取出事件,確定觸發(fā)每個(gè)事件的動(dòng)作對(duì)象,以及接受事件的目標(biāo)對(duì)象。作對(duì)象,以及接受

33、事件的目標(biāo)對(duì)象。3)第三步,排列事件發(fā)生的次序,確定每個(gè)對(duì)象可能有的)第三步,排列事件發(fā)生的次序,確定每個(gè)對(duì)象可能有的狀態(tài)及狀態(tài)之間的轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們。狀態(tài)及狀態(tài)之間的轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們。4)第四步,比較各個(gè)對(duì)象的狀態(tài)圖,檢查它們之間的一致)第四步,比較各個(gè)對(duì)象的狀態(tài)圖,檢查它們之間的一致性,確保事件之間的匹配性,確保事件之間的匹配An Introduction to Database System在建立動(dòng)態(tài)模型的過程中,腳本是指系統(tǒng)在某一執(zhí)行在建立動(dòng)態(tài)模型的過程中,腳本是指系統(tǒng)在某一執(zhí)行期間內(nèi)出現(xiàn)的一系列事件。期間內(nèi)出現(xiàn)的一系列事件。 腳本描述用戶(或其它外部設(shè)備)與目

34、標(biāo)系統(tǒng)之腳本描述用戶(或其它外部設(shè)備)與目標(biāo)系統(tǒng)之間的一個(gè)或多個(gè)典型的交互過程。間的一個(gè)或多個(gè)典型的交互過程。編寫腳本的目的編寫腳本的目的:保證不遺漏重要的交互步驟保證不遺漏重要的交互步驟7.4.1 編寫腳本編寫腳本An Introduction to Database System 腳本描寫的范圍主要由編寫腳本的具體目的決定。腳本描寫的范圍主要由編寫腳本的具體目的決定。 編寫腳本時(shí),首先編寫正常情況的腳本。然后,考慮特殊情況,例如輸入或輸出的數(shù)據(jù)為最大值(或最小值)。最后,考慮出錯(cuò)情況。腳本描述事件序列。腳本描述事件序列。 對(duì)于每個(gè)事件,都應(yīng)該指明觸發(fā)事件的動(dòng)作對(duì)象(如:計(jì)算機(jī)系統(tǒng);用戶;外

35、部事物等)、接受事件的目標(biāo)對(duì)象和該事件的參數(shù)。表7.1和表7.2分別給出了ATM系統(tǒng)的正常情況腳本和異常情況腳本。7.4.1 編寫腳本編寫腳本An Introduction to Database System ATM請(qǐng)儲(chǔ)戶插卡;儲(chǔ)戶插入一張現(xiàn)金兌換卡 ATM接受該卡并讀它上面的分行代碼和卡號(hào) ATM要求儲(chǔ)戶輸入密碼;儲(chǔ)戶輸入自己的密碼“1234”等數(shù)字 ATM請(qǐng)求總行驗(yàn)證卡號(hào)和密碼;總行要求“39”號(hào)分行核對(duì)儲(chǔ)戶密碼,然后通知ATM說(shuō)這張卡有效 ATM要求儲(chǔ)戶選擇事務(wù)類型(取款、轉(zhuǎn)賬、查詢等);儲(chǔ)戶選擇“取款” ATM要求儲(chǔ)戶輸入取款額;儲(chǔ)戶輸入“880”n表7.1 ATM系統(tǒng)的正常情況正常

36、情況腳本An Introduction to Database System ATM確認(rèn)取款額在預(yù)先規(guī)定的限額內(nèi),然后要求總行處理這個(gè)事務(wù);總行把請(qǐng)求轉(zhuǎn)給分行,該分行成功地處理完這項(xiàng)事務(wù)并返回該賬戶的新余額 ATM吐出現(xiàn)金并請(qǐng)儲(chǔ)戶拿走這些現(xiàn)金;儲(chǔ)戶拿走現(xiàn)金 ATM問儲(chǔ)戶是否繼續(xù)這項(xiàng)事務(wù);儲(chǔ)戶回答“不” ATM打印賬單,退出現(xiàn)金兌換卡,請(qǐng)儲(chǔ)戶拿走它們;儲(chǔ)戶取走賬 單和卡 ATM請(qǐng)儲(chǔ)戶插卡n表7.1 ATM系統(tǒng)的正常情況正常情況腳本An Introduction to Database System表表7.2 ATM7.2 ATM系統(tǒng)的異常情況腳本系統(tǒng)的異常情況腳本 ATM請(qǐng)儲(chǔ)戶插卡;儲(chǔ)戶插入一張

37、現(xiàn)金兌換卡 ATM接受這張卡并順序讀它上面的數(shù)字 ATM要求密碼;儲(chǔ)戶誤輸入“8888” ATM請(qǐng)求總行驗(yàn)證輸入的數(shù)字和密碼;總行在向有關(guān)分行咨詢 之后拒絕這張卡 ATM顯示“密碼錯(cuò)”,并請(qǐng)儲(chǔ)戶重新輸入密碼;儲(chǔ)戶輸入 “1234”;ATM請(qǐng)總行驗(yàn)證后知道這次輸入的密碼正確 ATM請(qǐng)儲(chǔ)戶選擇事務(wù)類型;儲(chǔ)戶選擇“取款” ATM詢問取款額;儲(chǔ)戶改變主意不想取款了,他敲“取消”鍵 ATM退出現(xiàn)金兌換卡,并請(qǐng)儲(chǔ)戶拿走它;儲(chǔ)戶拿走他的卡 ATM請(qǐng)儲(chǔ)戶插卡An Introduction to Database System 在這個(gè)階段用戶界面的細(xì)節(jié)并不太重要,重要的是在這種界面下的信息交換方式。我們的目的是

38、確保能夠完成全部必要的信息交換,而不會(huì)丟失重要的信息。 不經(jīng)過實(shí)際使用很難評(píng)價(jià)一個(gè)用戶界面的優(yōu)劣,因此,軟件開發(fā)人員往往快速地建立起用戶界面的原,供用戶試用與評(píng)價(jià)。 7.4.2 設(shè)想用戶界面An Introduction to Database System7.4.2 設(shè)想用戶界面An Introduction to Database System為了有助于建立動(dòng)態(tài)模型,通常在畫狀態(tài)圖之前先畫出事件跟蹤圖事件跟蹤圖。為此首先需要進(jìn)一步明確事件及事件與對(duì)象的關(guān)系。1.確定事件 應(yīng)該仔細(xì)分析每個(gè)腳本,以便從中提取出所有外部事件。經(jīng)過分析,應(yīng)該區(qū)分出每類事件的發(fā)送對(duì)象和接受對(duì)象。2.畫出事件跟蹤圖

39、事件跟蹤圖實(shí)質(zhì)上是擴(kuò)充的腳本,而且可以把它看作是簡(jiǎn)化的UML順序圖。7.4.3 畫事件跟蹤圖An Introduction to Database System對(duì)象:豎線;對(duì)象:豎線;事件:水平箭頭。事件:水平箭頭。An Introduction to Database System7.4.4 畫狀態(tài)圖畫狀態(tài)圖 狀態(tài)圖描繪事件與對(duì)象狀態(tài)的關(guān)系。狀態(tài)圖描繪事件與對(duì)象狀態(tài)的關(guān)系。通常,用一張狀態(tài)圖描繪一類對(duì)象的行為,它確定了由事件序列引出的狀態(tài)序列。但是,也不是任何一個(gè)類都需要有一張狀態(tài)圖描繪它的行為。 根據(jù)一張事件跟蹤圖畫出狀態(tài)圖后,再把其他腳本的事件跟蹤圖合并到已畫出的狀態(tài)圖中??紤]完正常事件

40、后考慮邊界情況和特殊情況,當(dāng)所有腳本都被狀態(tài)圖反映出來(lái),該類的狀態(tài)圖就構(gòu)造好了。An Introduction to Database System吐出現(xiàn)金吐出現(xiàn)金 ATMAn Introduction to Database SystemAn Introduction to Database System 各個(gè)類的狀態(tài)圖通過共享事件合并起來(lái),構(gòu)成了系統(tǒng)的動(dòng)態(tài)模型。在完成了每個(gè)具有重要交互行為的類的狀態(tài)圖之后,應(yīng)該檢查系統(tǒng)級(jí)的完整性和一致性。 一 般說(shuō)來(lái),每個(gè)事件都應(yīng)該既有發(fā)送對(duì)象又有接受對(duì)象,當(dāng)然,有時(shí)發(fā)送者和接受者是同一個(gè)對(duì)象。對(duì)于 沒有前驅(qū)或沒有后繼的狀態(tài)應(yīng)該著重審查,如果這個(gè)狀態(tài)既不是

41、交互序列的起點(diǎn)也不是終點(diǎn),則發(fā)現(xiàn)了一 個(gè)錯(cuò)誤。 7.4.5 審查動(dòng)態(tài)模型An Introduction to Database System7.5 建立功能模型建立功能模型 通常在建立了對(duì)象模型和動(dòng)態(tài)模型之后再建立功能模型。功能模型表明了系統(tǒng)中數(shù)據(jù)之間的依賴關(guān)系,以及有關(guān)的數(shù)據(jù)處理功能,它由一組數(shù)據(jù)流圖組成。其中的處理功能可以用 IPO 圖 ( 或表 ) 在UML中,功能模型也可以由用例圖表達(dá)An Introduction to Database System圖圖7.12 ATM7.12 ATM系統(tǒng)的基本系統(tǒng)模型系統(tǒng)的基本系統(tǒng)模型1 、畫出基本系統(tǒng)模型圖、畫出基本系統(tǒng)模型圖An Introdu

42、ction to Database System圖圖7.13 ATM7.13 ATM系統(tǒng)的功能級(jí)數(shù)據(jù)流圖系統(tǒng)的功能級(jí)數(shù)據(jù)流圖2、畫出功能級(jí)數(shù)據(jù)流圖、畫出功能級(jí)數(shù)據(jù)流圖An Introduction to Database System3 描述處理框功能描述處理框功能An Introduction to Database System7.6 定定 義義 服服 務(wù)務(wù) 需要等到建立了動(dòng)態(tài)模型和功能模型之后,才能最終確定類中應(yīng)有的服務(wù),因?yàn)檫@兩個(gè)子模型更明確地描述了每個(gè)類中應(yīng)該提供哪些服務(wù)。事實(shí)上,在確定類中應(yīng)有的服務(wù)時(shí),既要考慮該類實(shí)體的常規(guī)行為,又要考慮在本系統(tǒng)中特殊需要的服務(wù)。7.6.1 常規(guī)行

43、為 在分析階段可以認(rèn)為,類中定義的每個(gè)屬性都是可以訪問的。An Introduction to Database System7.6.2 從事件導(dǎo)出的操作 狀態(tài)圖中發(fā)往對(duì)象的事件也就是該對(duì)象接收到的消息,因此該對(duì)象必須有由消息選擇符指定的操作,這個(gè)操作修改對(duì)象狀態(tài)(即屬性值)并啟動(dòng)相應(yīng)的服務(wù)。7.6.3 與數(shù)據(jù)流圖中處理框?qū)?yīng)的操作 數(shù)據(jù)流圖中的每個(gè)處理框都與一個(gè)對(duì)象(也可能是若干個(gè)對(duì)象)上的操作相對(duì)應(yīng)。7.6.4 利用繼承減少冗余操作 應(yīng)該盡量利用繼承機(jī)制以減少所需定義的服務(wù)數(shù)目。7.6 定定 義義 服服 務(wù)務(wù)An Introduction to Database System7.7 面向?qū)?/p>

44、象分析實(shí)例面向?qū)ο蠓治鰧?shí)例 7.7.1 需求陳述 我們將要討論的是電梯的控制問題,下面給出對(duì)這個(gè)問題的描述。在一幢有m層樓的大廈中需要一套控制n部電梯的產(chǎn)品,要求這n部電梯根據(jù)下列約束條件在樓層間移動(dòng)。 An Introduction to Database SystemC1:每部電梯有m個(gè)按鈕,每個(gè)按鈕代表一個(gè)樓層。當(dāng)按下一個(gè)按鈕時(shí)該按鈕指示燈亮,同時(shí)電梯駛向相應(yīng)的樓層,當(dāng)?shù)竭_(dá)由按鈕指定的樓層時(shí)指示燈熄滅。C2:除了大廈的最低層和最高層之外,每層樓都有兩個(gè)按鈕分別指示電梯上行和下行。當(dāng)這兩個(gè)按鈕之一被按下時(shí)相應(yīng)的指示燈亮,當(dāng)電梯到達(dá)此樓層時(shí)燈熄滅,電梯向要求的方向移動(dòng)。C3:當(dāng)電梯無(wú)升降動(dòng)作

45、時(shí),關(guān)門并停在當(dāng)前樓層。7.7.1 需求陳述An Introduction to Database System 面向?qū)ο蠓治龅牡谝徊绞菢?gòu)造對(duì)象模型。在這個(gè)步驟中將抽象出類和它的屬性,并用對(duì)象模型圖描繪類&對(duì)象及它們彼此之間的關(guān)系。類所提供的服務(wù)將在面向?qū)ο蠓治龊笃诨蛎嫦驅(qū)ο笤O(shè)計(jì)階段再確定下來(lái)。 為了抽象出問題域中包含的類,可以用下述三個(gè)過程產(chǎn)生候選類,并對(duì)所得到的結(jié)果加以精化。 7.7.2 建立對(duì)象模型An Introduction to Database System 1. 精確地定義問題 應(yīng)該盡可能簡(jiǎn)潔地定義所需要的產(chǎn)品,最好只用一句話來(lái)描述目標(biāo)系統(tǒng)。例如,對(duì)電梯系統(tǒng)可以像下面那樣描述。

46、 在一個(gè)在一個(gè)m m層樓的大廈里,用每層樓的按鈕和電梯內(nèi)的按層樓的大廈里,用每層樓的按鈕和電梯內(nèi)的按鈕來(lái)控制鈕來(lái)控制n n部電梯的移動(dòng)。部電梯的移動(dòng)。2. 提出非形式化策略 為了提出一種解決上述問題的非形式化策略,必須確定問題的約束條件。在7.7.1小節(jié)中已經(jīng)對(duì)電梯問題提出了三種約束。7.7.2 建立對(duì)象模型An Introduction to Database System 最好能用一小段文字把非形式化策略清楚地表達(dá)出來(lái),對(duì)電梯問題來(lái)說(shuō),解決問題的非形式化策略可表達(dá)如下。在一幢有在一幢有m m層樓的大廈里,用電梯內(nèi)的和每個(gè)樓層的按鈕來(lái)層樓的大廈里,用電梯內(nèi)的和每個(gè)樓層的按鈕來(lái)控制控制n n部

47、電梯的運(yùn)動(dòng)。當(dāng)按下電梯按鈕以請(qǐng)求在某一指定部電梯的運(yùn)動(dòng)。當(dāng)按下電梯按鈕以請(qǐng)求在某一指定樓層停下時(shí),按鈕指示燈亮;當(dāng)請(qǐng)求獲得滿足時(shí),指示燈樓層停下時(shí),按鈕指示燈亮;當(dāng)請(qǐng)求獲得滿足時(shí),指示燈熄滅。當(dāng)電梯無(wú)升降操作時(shí),關(guān)門并停在當(dāng)前樓層。熄滅。當(dāng)電梯無(wú)升降操作時(shí),關(guān)門并停在當(dāng)前樓層。 7.7.2 建立對(duì)象模型An Introduction to Database System 3. 把策略形式化 在以上這段描述非形式化策略的文字中,共有八個(gè)不同的名詞:按鈕、電梯、樓層、運(yùn)動(dòng)、大廈、指示燈、請(qǐng)求和門。這些名詞所代表的事物可作為類的初步候選者。 其中,樓層和大廈是處于問題邊界之外的,因此可以忽略;運(yùn)動(dòng)、

48、指示燈、請(qǐng)求和門可以作為其他類的屬性,例如,指示燈(的狀態(tài))可作為按鈕類的屬性,門(的狀態(tài))可作為電梯類的屬性。7.7.2 建立對(duì)象模型An Introduction to Database System 經(jīng)過上述篩選后只剩下兩個(gè)候選類,即電梯和按鈕。 補(bǔ)充了電梯控制器類之后,得到了圖7.16所示的對(duì)象模型。7.7.2 建立對(duì)象模型An Introduction to Database System圖圖7.14 7.14 電梯系統(tǒng)對(duì)象模型的第一次迭代電梯系統(tǒng)對(duì)象模型的第一次迭代7.7.2 建立對(duì)象模型An Introduction to Database System圖圖7.15 7.15 電

49、梯系統(tǒng)對(duì)象模型的第二次迭代電梯系統(tǒng)對(duì)象模型的第二次迭代7.7.2 建立對(duì)象模型An Introduction to Database System1. 編寫腳本 這一步的目的是,決定每一個(gè)類應(yīng)該做的操作。達(dá)到這個(gè)目的的一種有效的方法,是列出用戶和系統(tǒng)之間相互作用的互作用的典型情況,即寫出腳本(包括正常情況腳本和異常情況腳本)。表7.4和表7.5分別是正常情況腳本和異常情況腳本。7.7.3 建立動(dòng)態(tài)模型An Introduction to Database System表表7.4 7.4 電梯系統(tǒng)正常情況腳本電梯系統(tǒng)正常情況腳本 用戶A在3樓按上行按鈕呼叫電梯,用戶A希望到7樓去 上行按鈕指示燈

50、亮 一部電梯到達(dá)3樓,電梯內(nèi)的用戶B已按下了到9樓的按鈕 上行按鈕指示燈熄滅 電梯開門 用戶A進(jìn)入電梯 用戶A按下電梯內(nèi)到7樓的按鈕 7樓按鈕指示燈亮 電梯關(guān)門An Introduction to Database System 電梯到達(dá)7樓 7樓按鈕指示燈熄滅 電梯開門 用戶A走出電梯 電梯在等待時(shí)間到后關(guān)門 電梯載著用戶B繼續(xù)上行到達(dá)9樓續(xù)表續(xù)表7.47.4An Introduction to Database System表表7.5 7.5 電梯系統(tǒng)異常情況腳本電梯系統(tǒng)異常情況腳本用戶A按下電梯內(nèi)到1樓的按鈕 用戶A在3樓按上行按鈕呼叫電梯,但是用戶A希望到1樓 上行銨鈕指示燈亮 一部電梯到達(dá)3樓,電梯內(nèi)用戶B已按下了到9樓的按鈕 上行按鈕指示燈熄滅 電梯開門 用戶A進(jìn)入電梯用戶A按下電梯內(nèi)到1樓的按鈕An Introduction to Database System續(xù)表續(xù)表7.57.5 電梯內(nèi)1樓按鈕指示燈亮

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論