第1章為問題域建模_第1頁(yè)
第1章為問題域建模_第2頁(yè)
第1章為問題域建模_第3頁(yè)
第1章為問題域建模_第4頁(yè)
第1章為問題域建模_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)陳少波編著陳少波編著年秋年秋不謀萬世者,不足以謀一時(shí);不謀萬世者,不足以謀一時(shí);不謀全局者,不足以謀一域。不謀全局者,不足以謀一域。1第第1 1章章 為問題域建概念模型為問題域建概念模型1.1 1.1 從需求出發(fā)從需求出發(fā)1.2 1.2 建立一個(gè)概念模型建立一個(gè)概念模型 1.2.1 1.2.1 類及類的表示類及類的表示 1.2.2 1.2.2 發(fā)現(xiàn)類發(fā)現(xiàn)類 1.2.2.1 1.2.2.1 找到備選類找到備選類 1.2.2.2 1.2.2.2 決定候選類決定候選類 1.2.3 1.2.3 確定類之間的關(guān)系確定類之間的關(guān)系 1.2.3.1 1.2.3.1 繼承(

2、泛化)繼承(泛化) 1.2.3.2 1.2.3.2 關(guān)聯(lián)關(guān)聯(lián) 1.2.3.3 1.2.3.3 聚合與組合聚合與組合 1.2.3.4 1.2.3.4 包包 1.2.3.5 1.2.3.5 確定類之間的關(guān)系確定類之間的關(guān)系 1.2.41.2.4 確定類的職責(zé)及協(xié)作者確定類的職責(zé)及協(xié)作者1.31.3 概念模型的詳細(xì)程度及其作用概念模型的詳細(xì)程度及其作用 1.3.11.3.1 概念模型的詳細(xì)程度概念模型的詳細(xì)程度 1.3.21.3.2 概念模型的作用概念模型的作用1.4 1.4 建立概念模型的指導(dǎo)原則建立概念模型的指導(dǎo)原則2第第2 2章章 為問題域建用例模型為問題域建用例模型2.12.1 什么是用例模

3、型什么是用例模型 2.1.1 2.1.1 參與者參與者 2.1.2 2.1.2 用例描述用例描述 2.1.3 2.1.3 用例圖用例圖 2.1.42.1.4 用例之間的關(guān)系用例之間的關(guān)系2.2 2.2 構(gòu)建用例模型構(gòu)建用例模型 2.2.1 2.2.1 確定系統(tǒng)的參與者確定系統(tǒng)的參與者 2.2.2 2.2.2 合并需求獲得用例合并需求獲得用例 2.2.3 2.2.3 細(xì)化用例描述細(xì)化用例描述2.3 2.3 什么是好用例什么是好用例 2.3.1 2.3.1 用例不是用例不是“功能功能”關(guān)于關(guān)于“四輪馬車四輪馬車”之一之一 2.3.2 2.3.2 用例可能是用例可能是“功能功能”關(guān)于關(guān)于“四輪馬車四

4、輪馬車”之二之二 2.3.3 2.3.3 什么時(shí)候才算完成任務(wù)什么時(shí)候才算完成任務(wù)2.4 2.4 本章小結(jié)本章小結(jié)3第第3 3章章 系統(tǒng)健壯性分析系統(tǒng)健壯性分析3.1 3.1 什么是健壯性分析什么是健壯性分析 3.1.1 3.1.1 健壯性分析的作用健壯性分析的作用 3.1.2 3.1.2 健壯性分析的對(duì)象健壯性分析的對(duì)象3.2 3.2 開始健壯性分析開始健壯性分析 3.2.1 3.2.1 通過事件流尋找邊界對(duì)象通過事件流尋找邊界對(duì)象 3.2.2 3.2.2 從概念模型及用例描述中尋找實(shí)體對(duì)象從概念模型及用例描述中尋找實(shí)體對(duì)象3.3 3.3 完善概念模型完善概念模型4第第4 4章章 構(gòu)建交互模

5、型構(gòu)建交互模型4.1 4.1 順序圖順序圖 4.1.1 4.1.1 定義順序圖定義順序圖 4.1.2 4.1.2 順序圖的組成順序圖的組成 4.1.3 4.1.3 創(chuàng)建對(duì)象和分支、從屬流創(chuàng)建對(duì)象和分支、從屬流 4.1.4 4.1.4 順序圖中的時(shí)間順序圖中的時(shí)間 4.1.5 4.1.5 順序圖中的迭代順序圖中的迭代 4.1.6 4.1.6 消息中的參數(shù)和序號(hào)消息中的參數(shù)和序號(hào) 4.1.7 4.1.7 順序圖片斷順序圖片斷 4.1.8 4.1.8 構(gòu)建順序圖模型構(gòu)建順序圖模型4.2 4.2 通信圖通信圖 4.2.1 4.2.1 通信圖的構(gòu)成通信圖的構(gòu)成 4.2.2 4.2.2 消息的序列號(hào)和控制

6、點(diǎn)消息的序列號(hào)和控制點(diǎn) 4.2.3 4.2.3 順序圖與通信圖的轉(zhuǎn)換及比較順序圖與通信圖的轉(zhuǎn)換及比較4.3 4.3 構(gòu)建交互模型構(gòu)建交互模型 4.3.1 4.3.1 引入實(shí)體對(duì)象引入實(shí)體對(duì)象 4.3.2 4.3.2 引入邊界對(duì)象和參與者引入邊界對(duì)象和參與者 4.3.3 4.3.3 添加對(duì)象之間的消息傳遞添加對(duì)象之間的消息傳遞 4.3.4 4.3.4 添加各個(gè)類的屬性和方法添加各個(gè)類的屬性和方法 4.3.5 4.3.5 引入基礎(chǔ)類引入基礎(chǔ)類 4.3.6 4.3.6 系統(tǒng)質(zhì)量評(píng)審及設(shè)計(jì)優(yōu)化系統(tǒng)質(zhì)量評(píng)審及設(shè)計(jì)優(yōu)化4.4 4.4 本章小結(jié)本章小結(jié)5第章關(guān)于過程的話題第章關(guān)于過程的話題5.1 5.1 為

7、什么需要過程為什么需要過程5.2 5.2 主流軟件開發(fā)過程簡(jiǎn)介主流軟件開發(fā)過程簡(jiǎn)介 5.2.1 5.2.1 統(tǒng)一軟件開發(fā)過程統(tǒng)一軟件開發(fā)過程RUPRUP 5.2.2 5.2.2 測(cè)試驅(qū)動(dòng)開發(fā)測(cè)試驅(qū)動(dòng)開發(fā)TDDTDD5.2.3 5.2.3 極限編程極限編程XPXP5.2.4 5.2.4 特征驅(qū)動(dòng)開發(fā)特征驅(qū)動(dòng)開發(fā)FDDFDD 5.3 5.3 理解開發(fā)過程理解開發(fā)過程 5.3.1 5.3.1 模型的演化過程模型的演化過程 5.3.2 5.3.2 第一次迭代第一次迭代5.3.3 5.3.3 第二次迭代第二次迭代5.3.4 5.3.4 隨后的迭代隨后的迭代5.3.5 5.3.5 最后的迭代最后的迭代5.

8、4 5.4 本章小結(jié)本章小結(jié)6第章活動(dòng)圖和狀態(tài)圖第章活動(dòng)圖和狀態(tài)圖.1 .1 活動(dòng)圖活動(dòng)圖6.1.1 6.1.1 定義活動(dòng)圖定義活動(dòng)圖6.1.2 6.1.2 基本活動(dòng)圖基本活動(dòng)圖6.1.3 6.1.3 嵌套活動(dòng)圖嵌套活動(dòng)圖 6.1.4 6.1.4 帶泳道的活動(dòng)圖及對(duì)象流帶泳道的活動(dòng)圖及對(duì)象流6.1.5 6.1.5 活動(dòng)圖構(gòu)建示例活動(dòng)圖構(gòu)建示例6.2 6.2 狀態(tài)圖狀態(tài)圖6.2.1 6.2.1 狀態(tài)狀態(tài)6.2.2 6.2.2 轉(zhuǎn)移轉(zhuǎn)移6.2.3 6.2.3 事件事件6.2.4 6.2.4 狀態(tài)、轉(zhuǎn)移和事件中的相關(guān)概念狀態(tài)、轉(zhuǎn)移和事件中的相關(guān)概念6.3 6.3 本章小結(jié)本章小結(jié)7第章構(gòu)造實(shí)現(xiàn)方式第

9、章構(gòu)造實(shí)現(xiàn)方式7.1 7.1 組件圖組件圖7.1.1 7.1.1 什么是組件什么是組件7.1.2 7.1.2 接口和組件間的關(guān)系接口和組件間的關(guān)系7.1.3 7.1.3 嵌套組件嵌套組件7.1.4 7.1.4 組件圖的作用組件圖的作用7.2 7.2 部署圖部署圖7.2.1 7.2.1 部署圖通用準(zhǔn)則部署圖通用準(zhǔn)則7.2.2 7.2.2 結(jié)點(diǎn)和組件結(jié)點(diǎn)和組件7.2.3 7.2.3 依賴和通信關(guān)聯(lián)依賴和通信關(guān)聯(lián)7.2.4 7.2.4 實(shí)現(xiàn)方式的建模過程實(shí)現(xiàn)方式的建模過程7.2.5 7.2.5 部署圖應(yīng)用部署圖應(yīng)用7.3 7.3 本章小結(jié)本章小結(jié)88.1 8.1 面向?qū)ο笏悸沸〗Y(jié)面向?qū)ο笏悸沸〗Y(jié)8.

10、1.1 8.1.1 從什么地方開始從什么地方開始8.1.2 8.1.2 分析與設(shè)計(jì)思路分析與設(shè)計(jì)思路8.2 8.2 編程簡(jiǎn)述編程簡(jiǎn)述8.2.1 8.2.1 什么是編程什么是編程8.2.2 8.2.2 編程的例子編程的例子8.3 8.3 測(cè)試簡(jiǎn)述測(cè)試簡(jiǎn)述8.3.1 8.3.1 測(cè)試面向?qū)ο蟮能浖泻尾煌瑴y(cè)試面向?qū)ο蟮能浖泻尾煌?.3.2 8.3.2 對(duì)面向?qū)ο鬁y(cè)試的誤解對(duì)面向?qū)ο鬁y(cè)試的誤解8.3.3 8.3.3 測(cè)試方法概述測(cè)試方法概述8.3.4 8.3.4 單元測(cè)試(類測(cè)試)單元測(cè)試(類測(cè)試)8.3.5 8.3.5 集成測(cè)試(交互測(cè)試)集成測(cè)試(交互測(cè)試)8.3.6 8.3.6 系統(tǒng)測(cè)試系統(tǒng)

11、測(cè)試8.4 8.4 數(shù)據(jù)庫(kù)設(shè)計(jì)簡(jiǎn)介數(shù)據(jù)庫(kù)設(shè)計(jì)簡(jiǎn)介8.4.1 8.4.1 結(jié)構(gòu)映射到表結(jié)構(gòu)映射到表8.4.2 8.4.2 把功能映射到把功能映射到SQLSQL命令命令第章總結(jié)及其他第章總結(jié)及其他9第第1 1章章 為問題域建概念模型為問題域建概念模型1.1 1.1 從需求出發(fā)從需求出發(fā)1.2 1.2 建立一個(gè)概念模型建立一個(gè)概念模型 1.2.1 1.2.1 類及類的表示類及類的表示 1.2.2 1.2.2 發(fā)現(xiàn)類發(fā)現(xiàn)類 1.2.2.1 1.2.2.1 找到備選類找到備選類 1.2.2.2 1.2.2.2 決定候選類決定候選類 1.2.3 1.2.3 確定類之間的關(guān)系確定類之間的關(guān)系 1.2.3.1

12、 1.2.3.1 繼承(泛化)繼承(泛化) 1.2.3.2 1.2.3.2 關(guān)聯(lián)關(guān)聯(lián) 1.2.3.3 1.2.3.3 聚合與組合聚合與組合 1.2.3.4 1.2.3.4 包包 1.2.3.5 1.2.3.5 確定類之間的關(guān)系確定類之間的關(guān)系 1.2.41.2.4 確定類的職責(zé)及協(xié)作者確定類的職責(zé)及協(xié)作者1.31.3 概念模型的詳細(xì)程度及其作用概念模型的詳細(xì)程度及其作用 1.3.11.3.1 概念模型的詳細(xì)程度概念模型的詳細(xì)程度 1.3.21.3.2 概念模型的作用概念模型的作用1.4 1.4 建立概念模型的指導(dǎo)原則建立概念模型的指導(dǎo)原則10與結(jié)構(gòu)化方法不同,面向?qū)ο蠓椒ㄖ蟹治雠c設(shè)計(jì)之間的界限

13、是模糊的,與結(jié)構(gòu)化方法不同,面向?qū)ο蠓椒ㄖ蟹治雠c設(shè)計(jì)之間的界限是模糊的,分析和設(shè)計(jì)工作共存于一個(gè)連續(xù)體上,并且不同的實(shí)踐者對(duì)于分析和設(shè)計(jì)工作共存于一個(gè)連續(xù)體上,并且不同的實(shí)踐者對(duì)于“分析分析”和和“設(shè)計(jì)設(shè)計(jì)”在這個(gè)連續(xù)體上的活動(dòng)有不同的分類界限。因此,生硬地定在這個(gè)連續(xù)體上的活動(dòng)有不同的分類界限。因此,生硬地定義分析和設(shè)計(jì)過程各包含哪些步驟沒有什么好處。義分析和設(shè)計(jì)過程各包含哪些步驟沒有什么好處。更多地面向分析更多地面向設(shè)計(jì)做什么?需求應(yīng)用領(lǐng)域調(diào)查如何做?邏輯解決方案圖圖1-1 分析和設(shè)計(jì)活動(dòng)共存于一個(gè)連續(xù)體上分析和設(shè)計(jì)活動(dòng)共存于一個(gè)連續(xù)體上既然不同的人和不同的方法對(duì)這些術(shù)語(yǔ)有不同的解釋,對(duì)這

14、些術(shù)語(yǔ)的既然不同的人和不同的方法對(duì)這些術(shù)語(yǔ)有不同的解釋,對(duì)這些術(shù)語(yǔ)的定義所做的爭(zhēng)論也就沒有什么積極意義。真正重要的是解決如何更好、定義所做的爭(zhēng)論也就沒有什么積極意義。真正重要的是解決如何更好、更快、更經(jīng)濟(jì)地創(chuàng)建和維護(hù)軟件這樣一個(gè)問題。因此,在本課程中,更快、更經(jīng)濟(jì)地創(chuàng)建和維護(hù)軟件這樣一個(gè)問題。因此,在本課程中,我們不打算對(duì)我們不打算對(duì)“分析分析”和和“設(shè)計(jì)設(shè)計(jì)”作出明確的區(qū)分。作出明確的區(qū)分。第第1 1章章 為問題域建概念模型為問題域建概念模型這說明了什么這說明了什么11由于現(xiàn)實(shí)世界中各領(lǐng)域?qū)浖到y(tǒng)的需求日益增長(zhǎng),變化也越來越快,由于現(xiàn)實(shí)世界中各領(lǐng)域?qū)浖到y(tǒng)的需求日益增長(zhǎng),變化也越來越快,

15、軟件開發(fā)技術(shù)的發(fā)展方向已從軟件開發(fā)技術(shù)的發(fā)展方向已從“提升被開發(fā)系統(tǒng)的執(zhí)行效率提升被開發(fā)系統(tǒng)的執(zhí)行效率”轉(zhuǎn)變成轉(zhuǎn)變成為為“提高開發(fā)效率提高開發(fā)效率”。面向?qū)ο蠹夹g(shù)降低了解決方案域(計(jì)算機(jī))與。面向?qū)ο蠹夹g(shù)降低了解決方案域(計(jì)算機(jī))與問題域之間的差別,提供了良好的復(fù)用機(jī)制,能夠更加有效地提高軟問題域之間的差別,提供了良好的復(fù)用機(jī)制,能夠更加有效地提高軟件開發(fā)效率,完全適應(yīng)了軟件開發(fā)技術(shù)的發(fā)展方向。件開發(fā)效率,完全適應(yīng)了軟件開發(fā)技術(shù)的發(fā)展方向。在本課程中,我們將通過一個(gè)簡(jiǎn)單的個(gè)人圖書管理系統(tǒng)(根據(jù)需要,在本課程中,我們將通過一個(gè)簡(jiǎn)單的個(gè)人圖書管理系統(tǒng)(根據(jù)需要,有時(shí)會(huì)插入一些實(shí)際的圖書館中圖書管理

16、系統(tǒng)以及其他應(yīng)用系統(tǒng)的例有時(shí)會(huì)插入一些實(shí)際的圖書館中圖書管理系統(tǒng)以及其他應(yīng)用系統(tǒng)的例子),讓大家體驗(yàn)一下正確的面向?qū)ο蠓治龊驮O(shè)計(jì)過程,從而幫助大子),讓大家體驗(yàn)一下正確的面向?qū)ο蠓治龊驮O(shè)計(jì)過程,從而幫助大家更好地駕駛面向?qū)ο蠹夹g(shù),增強(qiáng)自已的家更好地駕駛面向?qū)ο蠹夹g(shù),增強(qiáng)自已的“內(nèi)功內(nèi)功”。為了使大家把精力集中于面向?qū)ο蟮膽?yīng)用,本課程不涉及項(xiàng)目計(jì)劃、管為了使大家把精力集中于面向?qū)ο蟮膽?yīng)用,本課程不涉及項(xiàng)目計(jì)劃、管理等內(nèi)容。另外,關(guān)于軟件需求、分析、設(shè)計(jì)等術(shù)語(yǔ),我們?cè)诶淼葍?nèi)容。另外,關(guān)于軟件需求、分析、設(shè)計(jì)等術(shù)語(yǔ),我們?cè)谲浖ぼ浖こ坛讨幸呀?jīng)詳細(xì)介紹了,在此也不再論述,只是請(qǐng)你記?。褐幸呀?jīng)詳細(xì)介紹

17、了,在此也不再論述,只是請(qǐng)你記住:“需求調(diào)研需求調(diào)研是了解問題,分析是定義問題,而設(shè)計(jì)則是解決問題。是了解問題,分析是定義問題,而設(shè)計(jì)則是解決問題?!钡诘? 1章章 為問題域建概念模型為問題域建概念模型121.1 從需求出發(fā)從需求出發(fā)盡管我們不打算詳細(xì)論述軟件需求的概念,但盡管我們不打算詳細(xì)論述軟件需求的概念,但一切軟件開發(fā)都毫無例一切軟件開發(fā)都毫無例外地必須從需求出發(fā)外地必須從需求出發(fā)。用軟件工程的術(shù)語(yǔ)來講,。用軟件工程的術(shù)語(yǔ)來講,“弄清楚要做什么弄清楚要做什么”就是我們通常所說的就是我們通常所說的“需求分析需求分析”。軟件項(xiàng)目未來的所有工作都是依。軟件項(xiàng)目未來的所有工作都是依據(jù)需求分析的結(jié)

18、果來開展的,如果需求分析的結(jié)果是錯(cuò)誤的或不完整據(jù)需求分析的結(jié)果來開展的,如果需求分析的結(jié)果是錯(cuò)誤的或不完整的,那么,接下來的設(shè)計(jì)和編碼工作就是建立在錯(cuò)誤或不完整的基礎(chǔ)的,那么,接下來的設(shè)計(jì)和編碼工作就是建立在錯(cuò)誤或不完整的基礎(chǔ)上,其結(jié)果也就可想而知了。因此,需求分析是軟件開發(fā)過程中最重上,其結(jié)果也就可想而知了。因此,需求分析是軟件開發(fā)過程中最重要的一個(gè)環(huán)節(jié)。要的一個(gè)環(huán)節(jié)。第第1 1章章 為問題域建概念模型為問題域建概念模型軟件項(xiàng)目的需求分析一般要經(jīng)歷以下幾個(gè)步驟:軟件項(xiàng)目的需求分析一般要經(jīng)歷以下幾個(gè)步驟:(1 1)確定項(xiàng)目的目標(biāo)和范圍;)確定項(xiàng)目的目標(biāo)和范圍;(2 2)根據(jù)項(xiàng)目的目標(biāo)和范圍來分

19、析、確認(rèn)與項(xiàng)目相關(guān)的參與者;)根據(jù)項(xiàng)目的目標(biāo)和范圍來分析、確認(rèn)與項(xiàng)目相關(guān)的參與者;(3 3)抽取出所有的非功能需求;)抽取出所有的非功能需求;(4 4)分析所有的功能性需求,一般采用用例建模的方法;)分析所有的功能性需求,一般采用用例建模的方法;(5 5)編寫項(xiàng)目的)編寫項(xiàng)目的需求規(guī)格說明書)。需求規(guī)格說明書)。13第第1 1章章 為問題域建概念模型為問題域建概念模型本人是一個(gè)愛書之人,家里各類書籍已過千冊(cè),而平時(shí)又本人是一個(gè)愛書之人,家里各類書籍已過千冊(cè),而平時(shí)又經(jīng)常有朋友來借,因此需要一個(gè)個(gè)人圖書管理系統(tǒng)。該系經(jīng)常有朋友來借,因此需要一個(gè)個(gè)人圖書管理系統(tǒng)。該系統(tǒng)應(yīng)該能夠?qū)幕拘畔从?jì)

20、算機(jī)類、非計(jì)算機(jī)類分統(tǒng)應(yīng)該能夠?qū)幕拘畔从?jì)算機(jī)類、非計(jì)算機(jī)類分別建檔,實(shí)現(xiàn)按書名、作者、類別、出版社等關(guān)鍵字的組別建檔,實(shí)現(xiàn)按書名、作者、類別、出版社等關(guān)鍵字的組合查詢功能。在使用該系統(tǒng)錄入新書籍時(shí)系統(tǒng)會(huì)自動(dòng)按規(guī)合查詢功能。在使用該系統(tǒng)錄入新書籍時(shí)系統(tǒng)會(huì)自動(dòng)按規(guī)則生成書號(hào),可以修改信息,但不能夠刪除記錄。該系統(tǒng)則生成書號(hào),可以修改信息,但不能夠刪除記錄。該系統(tǒng)還應(yīng)該能夠?qū)耐饨枨闆r進(jìn)行記錄,可對(duì)外借情況列還應(yīng)該能夠?qū)耐饨枨闆r進(jìn)行記錄,可對(duì)外借情況列表打印。另外,還希望對(duì)書籍的購(gòu)買金額、冊(cè)數(shù)按特殊時(shí)表打印。另外,還希望對(duì)書籍的購(gòu)買金額、冊(cè)數(shù)按特殊時(shí)段進(jìn)行統(tǒng)計(jì)。段進(jìn)行統(tǒng)計(jì)。一般情

21、況下,用戶僅僅能夠或者只會(huì)對(duì)其所需要的軟件提出一些要求,一般情況下,用戶僅僅能夠或者只會(huì)對(duì)其所需要的軟件提出一些要求,而且這些要求通常都是比較模糊的。即使是我們自已,在開始的時(shí)候而且這些要求通常都是比較模糊的。即使是我們自已,在開始的時(shí)候也很難提出一個(gè)非常完整的需求。以下是一個(gè)初步的需求描述:也很難提出一個(gè)非常完整的需求。以下是一個(gè)初步的需求描述:14第第1 1章章 為問題域建概念模型為問題域建概念模型建立概念模型的目的是幫助開發(fā)團(tuán)隊(duì)理解問題域的各種概念、各種名詞、建立概念模型的目的是幫助開發(fā)團(tuán)隊(duì)理解問題域的各種概念、各種名詞、以及它們之間的各種關(guān)系。而建立用例模型的目的是幫助開發(fā)團(tuán)隊(duì)理解以及

22、它們之間的各種關(guān)系。而建立用例模型的目的是幫助開發(fā)團(tuán)隊(duì)理解用戶對(duì)系統(tǒng)的各種功能需求。這兩方面的工作,是分析工作的主要內(nèi)容,用戶對(duì)系統(tǒng)的各種功能需求。這兩方面的工作,是分析工作的主要內(nèi)容,其結(jié)果就是得到明確的問題定義。也就是知道系統(tǒng)該做什么、不該做什其結(jié)果就是得到明確的問題定義。也就是知道系統(tǒng)該做什么、不該做什么,以及要達(dá)到的目標(biāo)。么,以及要達(dá)到的目標(biāo)。以上的需求描述當(dāng)然不夠清晰、不夠嚴(yán)謹(jǐn),但從這樣的描述中,我們可以上的需求描述當(dāng)然不夠清晰、不夠嚴(yán)謹(jǐn),但從這樣的描述中,我們可以對(duì)待開發(fā)軟件系統(tǒng)有一個(gè)初步的認(rèn)識(shí)。這段描述是我們進(jìn)一步工作的以對(duì)待開發(fā)軟件系統(tǒng)有一個(gè)初步的認(rèn)識(shí)。這段描述是我們進(jìn)一步工作

23、的出發(fā)點(diǎn),通過一系列的分析活動(dòng),也通過與用戶的進(jìn)一步溝通,使我們出發(fā)點(diǎn),通過一系列的分析活動(dòng),也通過與用戶的進(jìn)一步溝通,使我們對(duì)用戶的需求慢慢清晰起來,對(duì)需要解決的問題逐漸明確起來。具體來對(duì)用戶的需求慢慢清晰起來,對(duì)需要解決的問題逐漸明確起來。具體來說,在分析階段通常包含兩個(gè)方面的工作:說,在分析階段通常包含兩個(gè)方面的工作:建立一個(gè)以類圖表示的反映建立一個(gè)以類圖表示的反映問題域靜態(tài)關(guān)系的概念模型;建立一個(gè)以用例模型表示的反映系統(tǒng)行為問題域靜態(tài)關(guān)系的概念模型;建立一個(gè)以用例模型表示的反映系統(tǒng)行為的動(dòng)態(tài)模型。的動(dòng)態(tài)模型。151.2 建立一個(gè)概念模型建立一個(gè)概念模型所謂所謂“問題域問題域”是指一個(gè)包

24、含現(xiàn)實(shí)世界事物與概念的領(lǐng)域,這些事物和是指一個(gè)包含現(xiàn)實(shí)世界事物與概念的領(lǐng)域,這些事物和概念與所要開發(fā)的應(yīng)用系統(tǒng)有關(guān)。概念與所要開發(fā)的應(yīng)用系統(tǒng)有關(guān)。在對(duì)問題域的分析和調(diào)查過程中,所謂在對(duì)問題域的分析和調(diào)查過程中,所謂面向?qū)ο竺嫦驅(qū)ο筮@個(gè)概念的精髓是將問這個(gè)概念的精髓是將問題分解成多個(gè)單獨(dú)的概念或者對(duì)象題分解成多個(gè)單獨(dú)的概念或者對(duì)象即分解成我們能夠覺察、能夠理解、即分解成我們能夠覺察、能夠理解、容易表達(dá)的事物。容易表達(dá)的事物。概念模型概念模型(conceptual model)是問題域中概念的描)是問題域中概念的描述,通常用一組靜態(tài)結(jié)構(gòu)圖來表達(dá)。概念模型可以展示出:一組概念;述,通常用一組靜態(tài)結(jié)構(gòu)

25、圖來表達(dá)。概念模型可以展示出:一組概念;概念之間的關(guān)聯(lián);概念的屬性。概念之間的關(guān)聯(lián);概念的屬性。表達(dá)概念模型的是類圖。表達(dá)概念模型的是類圖。類圖是描述類、接口以及它們之間關(guān)系的圖,類圖是描述類、接口以及它們之間關(guān)系的圖,它顯示了系統(tǒng)中各個(gè)類的靜態(tài)結(jié)構(gòu),是一種靜態(tài)模型它顯示了系統(tǒng)中各個(gè)類的靜態(tài)結(jié)構(gòu),是一種靜態(tài)模型。類圖根據(jù)系統(tǒng)中。類圖根據(jù)系統(tǒng)中的類以及各個(gè)類的關(guān)系描述系統(tǒng)的靜態(tài)視圖。的類以及各個(gè)類的關(guān)系描述系統(tǒng)的靜態(tài)視圖。類圖是面向?qū)ο笙到y(tǒng)建模中最常用和最基本的圖之一,其他許多圖,如類圖是面向?qū)ο笙到y(tǒng)建模中最常用和最基本的圖之一,其他許多圖,如狀態(tài)圖、順序圖、通信圖、配置圖等都是在類圖的基礎(chǔ)上進(jìn)

26、一步描述了狀態(tài)圖、順序圖、通信圖、配置圖等都是在類圖的基礎(chǔ)上進(jìn)一步描述了系統(tǒng)其他方面的特性。系統(tǒng)其他方面的特性。第第1 1章章 為問題域建概念模型為問題域建概念模型161.2.1 類及類的表示類及類的表示類是構(gòu)成類圖的基礎(chǔ),也是面向?qū)ο笙到y(tǒng)組織結(jié)構(gòu)的核心。要使用類類是構(gòu)成類圖的基礎(chǔ),也是面向?qū)ο笙到y(tǒng)組織結(jié)構(gòu)的核心。要使用類圖,需要了解類和對(duì)象之間的區(qū)別。圖,需要了解類和對(duì)象之間的區(qū)別。類是對(duì)資源的定義,它所包含的類是對(duì)資源的定義,它所包含的信息主要用來描述某種類型實(shí)體的特征以及對(duì)該類型實(shí)體的使用方法。信息主要用來描述某種類型實(shí)體的特征以及對(duì)該類型實(shí)體的使用方法。對(duì)象是具體的實(shí)體,它遵守類制定的

27、規(guī)則。對(duì)象是具體的實(shí)體,它遵守類制定的規(guī)則。從軟件的角度看,程序通從軟件的角度看,程序通常包含的是類的集合以及類所定義的行為,而實(shí)際創(chuàng)建信息和管理信常包含的是類的集合以及類所定義的行為,而實(shí)際創(chuàng)建信息和管理信息的是遵守類的規(guī)則的對(duì)象。息的是遵守類的規(guī)則的對(duì)象。類定義了一組具有狀態(tài)和行為的對(duì)象,這些對(duì)象具有相同的屬性、操類定義了一組具有狀態(tài)和行為的對(duì)象,這些對(duì)象具有相同的屬性、操作、關(guān)系和語(yǔ)義。其中,屬性和關(guān)聯(lián)用來描述狀態(tài)。屬性通常用沒有作、關(guān)系和語(yǔ)義。其中,屬性和關(guān)聯(lián)用來描述狀態(tài)。屬性通常用沒有身份的數(shù)據(jù)值表示,如數(shù)字和字符串。關(guān)聯(lián)則用有身份的對(duì)象之間的身份的數(shù)據(jù)值表示,如數(shù)字和字符串。關(guān)聯(lián)則

28、用有身份的對(duì)象之間的關(guān)系來表示。行為由操作來描述,方法是操作的實(shí)現(xiàn)。關(guān)系來表示。行為由操作來描述,方法是操作的實(shí)現(xiàn)。為了支持對(duì)身份、屬性和操作的定義,為了支持對(duì)身份、屬性和操作的定義,UML規(guī)范采用一個(gè)具有規(guī)范采用一個(gè)具有3個(gè)預(yù)定個(gè)預(yù)定義分欄的圖標(biāo)表示類,分欄中包含的信息有:名稱、屬性和操作,它們義分欄的圖標(biāo)表示類,分欄中包含的信息有:名稱、屬性和操作,它們對(duì)應(yīng)著類的基本元素,如圖對(duì)應(yīng)著類的基本元素,如圖1.2所示。所示。第第1 1章章 為問題域建概念模型為問題域建概念模型17圖圖1.2 類的類的3種預(yù)定義的分欄種預(yù)定義的分欄1) 1) 名稱名稱類名采用黑體字書寫在名稱分欄的中部。給類命名時(shí)最

29、好能夠反映類所類名采用黑體字書寫在名稱分欄的中部。給類命名時(shí)最好能夠反映類所代表的問題域中的概念,并且要清楚準(zhǔn)確,不能含糊不清;類名通常表代表的問題域中的概念,并且要清楚準(zhǔn)確,不能含糊不清;類名通常表示為一個(gè)名詞。示為一個(gè)名詞。2)2)屬性屬性類的屬性,也稱為特性,描述了類在軟件系統(tǒng)中代表的事物(即對(duì)象)類的屬性,也稱為特性,描述了類在軟件系統(tǒng)中代表的事物(即對(duì)象)所具備的特性,這些特性是該類中所有對(duì)象所共有的。對(duì)象可能有很多所具備的特性,這些特性是該類中所有對(duì)象所共有的。對(duì)象可能有很多屬性,在系統(tǒng)建模時(shí),只抽取那些對(duì)系統(tǒng)有用的特征作為類的屬性,通屬性,在系統(tǒng)建模時(shí),只抽取那些對(duì)系統(tǒng)有用的特征

30、作為類的屬性,通過這些屬性可以識(shí)別該類的對(duì)象。例如,可以將學(xué)號(hào)、姓名、性別、出過這些屬性可以識(shí)別該類的對(duì)象。例如,可以將學(xué)號(hào)、姓名、性別、出生年月、專業(yè)、班級(jí)等作為類生年月、專業(yè)、班級(jí)等作為類StudentStudent的屬性。的屬性。第第1 1章章 為問題域建概念模型為問題域建概念模型名稱名稱屬性屬性操作操作183) 3) 操作操作屬性僅僅描述了要處理的數(shù)據(jù),而操作則描述了處理數(shù)據(jù)的具體方法。屬性僅僅描述了要處理的數(shù)據(jù),而操作則描述了處理數(shù)據(jù)的具體方法。類的操作是對(duì)其所屬對(duì)象的行為的抽象,相對(duì)于一個(gè)服務(wù)的實(shí)現(xiàn),且該類的操作是對(duì)其所屬對(duì)象的行為的抽象,相對(duì)于一個(gè)服務(wù)的實(shí)現(xiàn),且該服務(wù)可以由類的任

31、何對(duì)象請(qǐng)求以影響其行為。屬性是描述對(duì)象特征的值,服務(wù)可以由類的任何對(duì)象請(qǐng)求以影響其行為。屬性是描述對(duì)象特征的值,操作用于操縱屬性或執(zhí)行其他動(dòng)作。操作可以看作是類的接口,通過該操作用于操縱屬性或執(zhí)行其他動(dòng)作。操作可以看作是類的接口,通過該接口可以實(shí)現(xiàn)內(nèi)、外信息的交互,操作的具體實(shí)現(xiàn)稱為接口可以實(shí)現(xiàn)內(nèi)、外信息的交互,操作的具體實(shí)現(xiàn)稱為方法方法。某類的操。某類的操作只能作用于該類的對(duì)象。作只能作用于該類的對(duì)象。第第1 1章章 為問題域建概念模型為問題域建概念模型對(duì)象通過相互發(fā)送消息來協(xié)作。一個(gè)消息調(diào)用一個(gè)類操作。這個(gè)操作通對(duì)象通過相互發(fā)送消息來協(xié)作。一個(gè)消息調(diào)用一個(gè)類操作。這個(gè)操作通過存取它自己對(duì)象

32、中的屬性值為調(diào)用對(duì)象的請(qǐng)求提供服務(wù)。一個(gè)可能的過存取它自己對(duì)象中的屬性值為調(diào)用對(duì)象的請(qǐng)求提供服務(wù)。一個(gè)可能的情景是,這個(gè)操作必須對(duì)外面的對(duì)象是可見的(消息必須看得見操作),情景是,這個(gè)操作必須對(duì)外面的對(duì)象是可見的(消息必須看得見操作),這樣的操作被稱為具有這樣的操作被稱為具有公共可見性公共可見性。在面向?qū)ο笙到y(tǒng)中,大多數(shù)的操作都是公有的,而大多數(shù)屬性都是私有在面向?qū)ο笙到y(tǒng)中,大多數(shù)的操作都是公有的,而大多數(shù)屬性都是私有的,屬性值對(duì)其他的類是隱藏的。一個(gè)類的對(duì)象只能請(qǐng)求另一個(gè)類在公的,屬性值對(duì)其他的類是隱藏的。一個(gè)類的對(duì)象只能請(qǐng)求另一個(gè)類在公共界面上發(fā)布的服務(wù)(操作),它們不允許直接操作其他對(duì)象

33、的屬性。共界面上發(fā)布的服務(wù)(操作),它們不允許直接操作其他對(duì)象的屬性。我們說,操作封裝了屬性。然而必須注意,我們說,操作封裝了屬性。然而必須注意,封裝只作用到類封裝只作用到類。一個(gè)對(duì)象。一個(gè)對(duì)象不能對(duì)相同類的對(duì)象隱藏(封裝)任何東西。通常的可見性符號(hào)為:不能對(duì)相同類的對(duì)象隱藏(封裝)任何東西。通常的可見性符號(hào)為:+ +:指公共可見性;:指公共可見性;- -:指私有可見性;:指私有可見性;# #:指受保護(hù)的可見性。分別對(duì)應(yīng):指受保護(hù)的可見性。分別對(duì)應(yīng)于于C+C+中的中的publicpublic、privateprivate和和protectedprotected。19第第1 1章章 為問題域建概

34、念模型為問題域建概念模型1.2.2 1.2.2 發(fā)現(xiàn)類發(fā)現(xiàn)類如前所述,類代表一組相似對(duì)象的集合,而對(duì)象可以是任何適用于系統(tǒng)如前所述,類代表一組相似對(duì)象的集合,而對(duì)象可以是任何適用于系統(tǒng)的人、地點(diǎn)、物品、事件、概念、屏幕演示或報(bào)表。例如,雖然的人、地點(diǎn)、物品、事件、概念、屏幕演示或報(bào)表。例如,雖然“zhang chengzhang cheng”、“jiang junjiang jun”、“l(fā)i haixiali haixia”都是學(xué)生,我們要建立都是學(xué)生,我們要建立的是叫做的是叫做“StudentStudent”類的模型,而不是對(duì)每一個(gè)單個(gè)的學(xué)生建模。發(fā)現(xiàn)類的模型,而不是對(duì)每一個(gè)單個(gè)的學(xué)生建模。

35、發(fā)現(xiàn)類,從本質(zhì)上來講是一項(xiàng)分析工作,因?yàn)樗鼮閼?yīng)用程序確定構(gòu)件。發(fā)現(xiàn)類,從本質(zhì)上來講是一項(xiàng)分析工作,因?yàn)樗鼮閼?yīng)用程序確定構(gòu)件。發(fā)現(xiàn)類的方法有很多種,下面作一些簡(jiǎn)單介紹,最后再說明我們所采用的方類的方法有很多種,下面作一些簡(jiǎn)單介紹,最后再說明我們所采用的方法。法。操作可見性與屬性可見性沒什么不同。操作可見性定義該操作在不同于操作可見性與屬性可見性沒什么不同。操作可見性定義該操作在不同于該類的其他類的對(duì)象中是否可見。如果是可見的,則該操作的可見性為該類的其他類的對(duì)象中是否可見。如果是可見的,則該操作的可見性為公有的,否則是私有的。公有的,否則是私有的。操作可見性需要與操作范圍區(qū)別開來。操作可以在一個(gè)

36、實(shí)例對(duì)象中被調(diào)操作可見性需要與操作范圍區(qū)別開來。操作可以在一個(gè)實(shí)例對(duì)象中被調(diào)用,或者還可以在一個(gè)類對(duì)象中被調(diào)用。對(duì)前一種情況,操作被說成是用,或者還可以在一個(gè)類對(duì)象中被調(diào)用。對(duì)前一種情況,操作被說成是具有具有實(shí)例范圍實(shí)例范圍,而后一種情況則具有,而后一種情況則具有類范圍類范圍。例如,尋找雇員的年齡的。例如,尋找雇員的年齡的操作具有實(shí)例范圍,但計(jì)算雇員的平均年齡的操作就具有類范圍。操作具有實(shí)例范圍,但計(jì)算雇員的平均年齡的操作就具有類范圍。201)1)參與者是潛在的類參與者是潛在的類。參與者表示與系統(tǒng)進(jìn)行交互的任何人或物,其詳。參與者表示與系統(tǒng)進(jìn)行交互的任何人或物,其詳細(xì)概念我們將在后面的用例建模

37、中論述。參與者有兩種情況,一種是在細(xì)概念我們將在后面的用例建模中論述。參與者有兩種情況,一種是在現(xiàn)實(shí)世界中的參與者,另一種是存儲(chǔ)在你的系統(tǒng)中的參與者。例如,在現(xiàn)實(shí)世界中的參與者,另一種是存儲(chǔ)在你的系統(tǒng)中的參與者。例如,在現(xiàn)實(shí)世界中有作為大學(xué)學(xué)生的人,同時(shí),在你的系統(tǒng)中存在業(yè)務(wù)對(duì)象,現(xiàn)實(shí)世界中有作為大學(xué)學(xué)生的人,同時(shí),在你的系統(tǒng)中存在業(yè)務(wù)對(duì)象,代表那些現(xiàn)實(shí)世界中的人。代表那些現(xiàn)實(shí)世界中的人。 2)2)確定客戶確定客戶。大學(xué)中有學(xué)生,銀行有顧客,網(wǎng)絡(luò)操作系統(tǒng)有用戶,航班。大學(xué)中有學(xué)生,銀行有顧客,網(wǎng)絡(luò)操作系統(tǒng)有用戶,航班有乘客。學(xué)生、顧客、用戶和乘客都是客戶的例子。有乘客。學(xué)生、顧客、用戶和乘客都

38、是客戶的例子。 3)3) 跟蹤資金流跟蹤資金流。問問你自已,資金是從哪里來的(通常是從客戶那里。問問你自已,資金是從哪里來的(通常是從客戶那里來的),它是怎么掙到的(通過賣產(chǎn)品或服務(wù)),還有它被花在哪里來的),它是怎么掙到的(通過賣產(chǎn)品或服務(wù)),還有它被花在哪里了。通過對(duì)資金進(jìn)行跟蹤,你能夠?yàn)橄到y(tǒng)確定很多核心類(客戶、出了。通過對(duì)資金進(jìn)行跟蹤,你能夠?yàn)橄到y(tǒng)確定很多核心類(客戶、出售的產(chǎn)品或服務(wù),以及組成那些用于出售的產(chǎn)品售的產(chǎn)品或服務(wù),以及組成那些用于出售的產(chǎn)品/服務(wù)的要素)。服務(wù)的要素)。4)4) 概念是潛在的類概念是潛在的類。你所面對(duì)的應(yīng)用領(lǐng)域的業(yè)務(wù)人員經(jīng)常會(huì)使用他們習(xí)。你所面對(duì)的應(yīng)用領(lǐng)域

39、的業(yè)務(wù)人員經(jīng)常會(huì)使用他們習(xí)以為常的術(shù)語(yǔ)。術(shù)語(yǔ)經(jīng)常是領(lǐng)域模型的候選類。例如,在一所大學(xué)中經(jīng)以為常的術(shù)語(yǔ)。術(shù)語(yǔ)經(jīng)常是領(lǐng)域模型的候選類。例如,在一所大學(xué)中經(jīng)常會(huì)使用的業(yè)務(wù)術(shù)語(yǔ)有:專業(yè)、課程、教室、教學(xué)樓和課本,這些概念常會(huì)使用的業(yè)務(wù)術(shù)語(yǔ)有:專業(yè)、課程、教室、教學(xué)樓和課本,這些概念中的每一個(gè)都是你的系統(tǒng)中潛在的類。中的每一個(gè)都是你的系統(tǒng)中潛在的類。第第1 1章章 為問題域建概念模型為問題域建概念模型215) 5) 事件是潛在的類事件是潛在的類。關(guān)鍵事件發(fā)生在大部分問題領(lǐng)域中。例如,在大。關(guān)鍵事件發(fā)生在大部分問題領(lǐng)域中。例如,在大學(xué)中,重要的事件包括畢業(yè)和開學(xué)。每一個(gè)事件都是系統(tǒng)中潛在的類,學(xué)中,重要的

40、事件包括畢業(yè)和開學(xué)。每一個(gè)事件都是系統(tǒng)中潛在的類,因?yàn)樗鼈儠?huì)有其職責(zé)(例如因?yàn)樗鼈儠?huì)有其職責(zé)(例如“畢業(yè)畢業(yè)”要維護(hù)一個(gè)畢業(yè)學(xué)生列表,要知道要維護(hù)一個(gè)畢業(yè)學(xué)生列表,要知道其日期和地點(diǎn)等等)。其日期和地點(diǎn)等等)。6) 6) 主要用戶界面元素是潛在的類主要用戶界面元素是潛在的類。現(xiàn)實(shí)世界中的參與者通過這些類與?,F(xiàn)實(shí)世界中的參與者通過這些類與你的系統(tǒng)一起工作。從學(xué)術(shù)上講,這樣做不夠純粹。然而,這很實(shí)用,你的系統(tǒng)一起工作。從學(xué)術(shù)上講,這樣做不夠純粹。然而,這很實(shí)用,因?yàn)楝F(xiàn)實(shí)世界參與者會(huì)與這些類進(jìn)行協(xié)作。因?yàn)楝F(xiàn)實(shí)世界參與者會(huì)與這些類進(jìn)行協(xié)作。7) 7) 立即找出三到五個(gè)主類立即找出三到五個(gè)主類。這些類是

41、系統(tǒng)的核心,而且如果你不能描述。這些類是系統(tǒng)的核心,而且如果你不能描述這些類的話,就不可能理解業(yè)務(wù)。例如,這些類的話,就不可能理解業(yè)務(wù)。例如,“乘客乘客”、“飛機(jī)飛機(jī)”、“機(jī)組機(jī)組人員人員”和和“機(jī)場(chǎng)機(jī)場(chǎng)”對(duì)于航班訂票系統(tǒng)應(yīng)該是主類。對(duì)于航班訂票系統(tǒng)應(yīng)該是主類?!皩W(xué)生學(xué)生”、“教授教授”、“課程課程”和和“教室教室”對(duì)于大學(xué)信息系統(tǒng)應(yīng)該是主類。對(duì)于大學(xué)信息系統(tǒng)應(yīng)該是主類。我們考察以上這些發(fā)現(xiàn)類的方法,其共同特點(diǎn)是我們考察以上這些發(fā)現(xiàn)類的方法,其共同特點(diǎn)是潛在的類潛在的類基本上都與基本上都與名名詞詞有關(guān)。確實(shí),在實(shí)際工作中,發(fā)現(xiàn)類應(yīng)用最廣泛的就是有關(guān)。確實(shí),在實(shí)際工作中,發(fā)現(xiàn)類應(yīng)用最廣泛的就是“

42、名詞動(dòng)詞名詞動(dòng)詞法法”。所謂。所謂名詞動(dòng)詞法名詞動(dòng)詞法,其主要規(guī)則是從名詞與名詞短語(yǔ)中提取對(duì)象與,其主要規(guī)則是從名詞與名詞短語(yǔ)中提取對(duì)象與屬性;從動(dòng)詞與動(dòng)詞短語(yǔ)中提取操作與關(guān)聯(lián);而所有格短語(yǔ)通常表明名屬性;從動(dòng)詞與動(dòng)詞短語(yǔ)中提取操作與關(guān)聯(lián);而所有格短語(yǔ)通常表明名詞應(yīng)該是屬性而不是對(duì)象。下面,我們就采用該方法開始問題域建模的詞應(yīng)該是屬性而不是對(duì)象。下面,我們就采用該方法開始問題域建模的第一步。第一步。第第1 1章章 為問題域建概念模型為問題域建概念模型潛在的類有什么共同的特點(diǎn)潛在的類有什么共同的特點(diǎn)221.2.2.1 1.2.2.1 找到備選類找到備選類首先,我們可以逐字逐句地閱讀上面那段需求描

43、述,并將其中的所有首先,我們可以逐字逐句地閱讀上面那段需求描述,并將其中的所有名詞及名詞短語(yǔ)列出來,我們可以得到如下的備選類列表:名詞及名詞短語(yǔ)列出來,我們可以得到如下的備選類列表:本人本人 人人 家里家里 書籍書籍 朋友朋友 個(gè)人圖書管理系統(tǒng)個(gè)人圖書管理系統(tǒng) 基本信息(書籍的)基本信息(書籍的) 計(jì)算機(jī)類計(jì)算機(jī)類 非計(jì)算機(jī)類非計(jì)算機(jī)類 書名書名 作者作者 類類別別 出版社出版社 關(guān)鍵字關(guān)鍵字 功能功能 新書籍新書籍 系統(tǒng)系統(tǒng) 規(guī)則規(guī)則 書號(hào)書號(hào) 信信息息 記錄記錄 外借情況外借情況 外借情況列表外借情況列表 購(gòu)買金額購(gòu)買金額 冊(cè)數(shù)冊(cè)數(shù) 特定時(shí)特定時(shí)段段 圖圖1.3 列出所有的名詞及名詞短語(yǔ)列

44、出所有的名詞及名詞短語(yǔ)1.2.2.2 1.2.2.2 決定候選類決定候選類很顯然,并不是每一個(gè)備選類都是合適的候選類,有些名詞對(duì)于要開發(fā)很顯然,并不是每一個(gè)備選類都是合適的候選類,有些名詞對(duì)于要開發(fā)的系統(tǒng)來說無關(guān)緊要,甚至是系統(tǒng)之外的;而有些名詞描述的概念太小,的系統(tǒng)來說無關(guān)緊要,甚至是系統(tǒng)之外的;而有些名詞描述的概念太小,可能是某個(gè)候選類的屬性。因此,我們需要對(duì)備選類進(jìn)行一番篩選,將可能是某個(gè)候選類的屬性。因此,我們需要對(duì)備選類進(jìn)行一番篩選,將不合適的備選類刪去。不合適的備選類刪去。第第1 1章章 為問題域建概念模型為問題域建概念模型23“本人本人”、“人人”、“家里家里”很明顯是系統(tǒng)外的概

45、念,沒有必要建模。很明顯是系統(tǒng)外的概念,沒有必要建模。而而“個(gè)人圖書管理系統(tǒng)個(gè)人圖書管理系統(tǒng)”、“系統(tǒng)系統(tǒng)”指的就是將要開發(fā)的系統(tǒng),即系指的就是將要開發(fā)的系統(tǒng),即系統(tǒng)本身,也沒有必要對(duì)其建模。統(tǒng)本身,也沒有必要對(duì)其建模?!皶畷笔且粋€(gè)很重要的類,而是一個(gè)很重要的類,而“書名書名”、“作者作者”、“類別類別”、“出版社出版社”、“書號(hào)書號(hào)”是用來描述書籍的基本信息,因此應(yīng)該作為是用來描述書籍的基本信息,因此應(yīng)該作為“書籍書籍”類的屬性處理,類的屬性處理,“規(guī)則規(guī)則”則是指書號(hào)的生成規(guī)則,而書號(hào)是則是指書號(hào)的生成規(guī)則,而書號(hào)是書籍的一個(gè)屬性,因此,書籍的一個(gè)屬性,因此,“規(guī)則規(guī)則”可以作為編寫

46、可以作為編寫“書籍書籍”類構(gòu)造函數(shù)類構(gòu)造函數(shù)的指南。的指南?!盎拘畔⒒拘畔ⅰ笔菚⒆髡?、類別等描述書籍的基本信息統(tǒng)稱,是書名、作者、類別等描述書籍的基本信息統(tǒng)稱,“關(guān)關(guān)鍵字鍵字”則是代表書名、作者、出版社則是代表書名、作者、出版社其中之一,因此無需對(duì)其建模。其中之一,因此無需對(duì)其建模?!肮δ芄δ堋?、“新書籍新書籍”、“信息信息”、“記錄記錄”都是在描述需求時(shí)使用都是在描述需求時(shí)使用到的一些相關(guān)術(shù)語(yǔ),并不是問題域的本質(zhì),因此不在考慮的范圍。到的一些相關(guān)術(shù)語(yǔ),并不是問題域的本質(zhì),因此不在考慮的范圍?!坝?jì)算機(jī)類計(jì)算機(jī)類”、“非計(jì)算機(jī)類非計(jì)算機(jī)類”是該系統(tǒng)中圖書的兩大分類,應(yīng)該對(duì)是該系統(tǒng)中圖書的

47、兩大分類,應(yīng)該對(duì)其建模,并改名為其建模,并改名為“計(jì)算機(jī)類書籍計(jì)算機(jī)類書籍”和和“非計(jì)算機(jī)類書籍非計(jì)算機(jī)類書籍”,以減少,以減少歧義。歧義。第第1 1章章 為問題域建概念模型為問題域建概念模型24“外借情況外借情況”則是用來表示一次借閱行為,應(yīng)該成為一個(gè)候選類,多則是用來表示一次借閱行為,應(yīng)該成為一個(gè)候選類,多個(gè)外借情況將組成個(gè)外借情況將組成“外借情況列表外借情況列表”,而外借情況中一個(gè)很重要的角色,而外借情況中一個(gè)很重要的角色是是“朋友朋友” 借閱主體。雖然本系統(tǒng)中并不需要建立借閱主體。雖然本系統(tǒng)中并不需要建立“朋友朋友”的資料的資料庫(kù),但考慮到可能需要列出某個(gè)朋友的借閱情況,因此還是將其列

48、為候庫(kù),但考慮到可能需要列出某個(gè)朋友的借閱情況,因此還是將其列為候選類。為了更好地表述,將選類。為了更好地表述,將“外借情況外借情況”改名為改名為“借閱記錄借閱記錄”,而將,而將“外借情況列表外借情況列表”改名為改名為“借閱情況列表借閱情況列表”。“購(gòu)買金額購(gòu)買金額”、“冊(cè)數(shù)冊(cè)數(shù)”都是統(tǒng)計(jì)的結(jié)果,即都是一個(gè)數(shù)字,故不必都是統(tǒng)計(jì)的結(jié)果,即都是一個(gè)數(shù)字,故不必建模,而建模,而“特定時(shí)段特定時(shí)段”是統(tǒng)計(jì)的范圍,也不必建模;但要進(jìn)行統(tǒng)計(jì),是統(tǒng)計(jì)的范圍,也不必建模;但要進(jìn)行統(tǒng)計(jì),必須有一個(gè)執(zhí)行統(tǒng)計(jì)的主體,這讓我們發(fā)現(xiàn)了一個(gè)在需求描述中隱藏必須有一個(gè)執(zhí)行統(tǒng)計(jì)的主體,這讓我們發(fā)現(xiàn)了一個(gè)在需求描述中隱藏的關(guān)鍵

49、類,即書籍列表。的關(guān)鍵類,即書籍列表。通過以上的分析,我們得到了一個(gè)候選類列表:通過以上的分析,我們得到了一個(gè)候選類列表:書籍書籍 計(jì)算機(jī)類書籍計(jì)算機(jī)類書籍 非計(jì)算機(jī)類書籍非計(jì)算機(jī)類書籍借閱記錄借閱記錄 借閱記錄列表借閱記錄列表 書籍列表書籍列表圖圖1.4 候選類列表候選類列表第第1 1章章 為問題域建概念模型為問題域建概念模型25至此,我們已經(jīng)完成了概念建模的第一步工作。在實(shí)際工作中,這一至此,我們已經(jīng)完成了概念建模的第一步工作。在實(shí)際工作中,這一步不要花費(fèi)太多的時(shí)間,即按前面提及的第步不要花費(fèi)太多的時(shí)間,即按前面提及的第7種發(fā)現(xiàn)類的方法,快速地種發(fā)現(xiàn)類的方法,快速地找出系統(tǒng)中的幾個(gè)主類,以

50、便于我們對(duì)問題域有一個(gè)概要的了解。找出系統(tǒng)中的幾個(gè)主類,以便于我們對(duì)問題域有一個(gè)概要的了解。1.2.3.1 1.2.3.1 繼承(泛化)繼承(泛化)不同類之間經(jīng)常會(huì)存在相似性,兩個(gè)以上的類也會(huì)經(jīng)常共享相同的屬不同類之間經(jīng)常會(huì)存在相似性,兩個(gè)以上的類也會(huì)經(jīng)常共享相同的屬性和性和/或相同的方法。因?yàn)槲覀儾⒉幌胫貜?fù)編寫代碼,那我們就要利用或相同的方法。因?yàn)槲覀儾⒉幌胫貜?fù)編寫代碼,那我們就要利用這種相似機(jī)制。繼承就是這種機(jī)制。這種相似機(jī)制。繼承就是這種機(jī)制。1.2.3 1.2.3 確定類之間的關(guān)系確定類之間的關(guān)系在對(duì)以上候選類建立關(guān)系之前,我們先簡(jiǎn)單地介紹與此相關(guān)的一些概念。在對(duì)以上候選類建立關(guān)系之前

51、,我們先簡(jiǎn)單地介紹與此相關(guān)的一些概念。第第1 1章章 為問題域建概念模型為問題域建概念模型繼承是指子類可以擁有父類的全部屬性和操作。繼承是面向?qū)ο蠓椒ɡ^承是指子類可以擁有父類的全部屬性和操作。繼承是面向?qū)ο蠓椒ǖ囊粋€(gè)重要概念,是面向?qū)ο蠹夹g(shù)提高軟件開發(fā)效率的一個(gè)重要原因。的一個(gè)重要概念,是面向?qū)ο蠹夹g(shù)提高軟件開發(fā)效率的一個(gè)重要原因。在構(gòu)建系統(tǒng)模型時(shí),可以根據(jù)所涉及到的事物的共性抽象出一些基本在構(gòu)建系統(tǒng)模型時(shí),可以根據(jù)所涉及到的事物的共性抽象出一些基本類,并在此基礎(chǔ)上根據(jù)事物的個(gè)性抽象出新的類(即子類)。子類既類,并在此基礎(chǔ)上根據(jù)事物的個(gè)性抽象出新的類(即子類)。子類既具有父類的全部屬性和操作,

52、又具有自己獨(dú)特的屬性和操作。父類與具有父類的全部屬性和操作,又具有自己獨(dú)特的屬性和操作。父類與子類的關(guān)系為一般與特殊的關(guān)系。子類的關(guān)系為一般與特殊的關(guān)系。26第第1 1章章 為問題域建概念模型為問題域建概念模型繼承繼承(inheritanceinheritance)表示兩個(gè)類之間是)表示兩個(gè)類之間是“is ais a”、“is likeis like”或或“is is kind ofkind of(是(是的一種)的一種)”的關(guān)系。的關(guān)系。子類子類(subclasssubclass):如果類):如果類B B繼承自類繼承自類A A,我們說,我們說B B是是A A的子類。的子類。父類父類(super

53、classsuperclass):如果類):如果類B B繼承自類繼承自類A A,我們說,我們說A A是是B B的父類。的父類。繼承機(jī)制具有特殊的意義。由于子類可以自動(dòng)擁有父類的全部操作和繼承機(jī)制具有特殊的意義。由于子類可以自動(dòng)擁有父類的全部操作和屬性,當(dāng)我們?cè)诙x子類時(shí),就不必重復(fù)定義那些在父類中已經(jīng)定義屬性,當(dāng)我們?cè)诙x子類時(shí),就不必重復(fù)定義那些在父類中已經(jīng)定義過的屬性和操作,只需要聲明該類是某個(gè)父類的子類,從而可以將精過的屬性和操作,只需要聲明該類是某個(gè)父類的子類,從而可以將精力集中在定義子類所特有的屬性和操作上。這非常有利于提高軟件的力集中在定義子類所特有的屬性和操作上。這非常有利于提高

54、軟件的可復(fù)用性??蓮?fù)用性。繼承具有傳遞性。如果類繼承具有傳遞性。如果類B B繼承自類繼承自類A A,而類,而類C C又繼承了類又繼承了類B B,則類,則類C C可以可以繼承類繼承類A A和類和類B B的全部屬性和操作。即類的全部屬性和操作。即類C C的對(duì)象除了具有該類新增的所的對(duì)象除了具有該類新增的所有特性之外,還具有全部父類的所有特性。有特性之外,還具有全部父類的所有特性。如果限定每個(gè)子類只能繼承單獨(dú)一個(gè)父類的屬性和操作,則稱這種繼如果限定每個(gè)子類只能繼承單獨(dú)一個(gè)父類的屬性和操作,則稱這種繼承為單繼承;如果一個(gè)子類可以同時(shí)繼承多個(gè)父類的屬性和操作,這承為單繼承;如果一個(gè)子類可以同時(shí)繼承多個(gè)父

55、類的屬性和操作,這種繼承稱為多重繼承。種繼承稱為多重繼承。27類類A(父類)(父類)類類B(子類)(子類)圖圖1.5 UML1.5 UML中繼承的建模符號(hào)中繼承的建模符號(hào)繼承通過利用類間的相似性來復(fù)用已有的工作繼承通過利用類間的相似性來復(fù)用已有的工作例如,學(xué)生都有姓名、住址、電話號(hào)碼和私車。同時(shí),教授也同樣擁例如,學(xué)生都有姓名、住址、電話號(hào)碼和私車。同時(shí),教授也同樣擁有這些東西。毫無疑問,我們可以開發(fā)有關(guān)學(xué)生和教授的類,讓它們有這些東西。毫無疑問,我們可以開發(fā)有關(guān)學(xué)生和教授的類,讓它們一起運(yùn)行。實(shí)際上,僅需要先開發(fā)一起運(yùn)行。實(shí)際上,僅需要先開發(fā)“StudentStudent”類,一旦它可以運(yùn)行

56、了,類,一旦它可以運(yùn)行了,制作一份拷貝,就叫制作一份拷貝,就叫“ProfessorProfessor”,并進(jìn)行一些適當(dāng)?shù)男薷?。這樣做,并進(jìn)行一些適當(dāng)?shù)男薷?。這樣做很容易,但并不完美。如果很容易,但并不完美。如果“StudentStudent”源碼出現(xiàn)錯(cuò)誤將會(huì)怎樣?我們?cè)创a出現(xiàn)錯(cuò)誤將會(huì)怎樣?我們需要在兩個(gè)地方改正錯(cuò)誤。如果處理姓名的方法發(fā)生了變化(你把長(zhǎng)需要在兩個(gè)地方改正錯(cuò)誤。如果處理姓名的方法發(fā)生了變化(你把長(zhǎng)度從度從3030變成了變成了4040)又會(huì)怎樣?同樣要在兩個(gè)地方作出改動(dòng)。這真是讓)又會(huì)怎樣?同樣要在兩個(gè)地方作出改動(dòng)。這真是讓人覺得毫無興趣的工作。如果僅有一份代碼拷貝用于開發(fā)和維護(hù),

57、這人覺得毫無興趣的工作。如果僅有一份代碼拷貝用于開發(fā)和維護(hù),這樣難道不更好嗎?樣難道不更好嗎?第第1 1章章 為問題域建概念模型為問題域建概念模型28這就是繼承。使用繼承,就可以定義一個(gè)類來封裝學(xué)生和教授間的相這就是繼承。使用繼承,就可以定義一個(gè)類來封裝學(xué)生和教授間的相似性。新的類將有屬性似性。新的類將有屬性“namename”、“addressaddress”、“phoneNumberphoneNumber”以及方以及方法法“driveVehicledriveVehicle”。因?yàn)樾枰?,所以就要問問自己,?shù)據(jù)和功。因?yàn)樾枰?,所以就要問問自己,?shù)據(jù)和功能是什么?對(duì)于這個(gè)類,合適的類

58、名應(yīng)該是能是什么?對(duì)于這個(gè)類,合適的類名應(yīng)該是“PersonPerson”。一旦定義了一旦定義了“PersonPerson”類,就可以從它繼承出類,就可以從它繼承出“StudentStudent”和和“ProfessorProfessor”。可以說,。可以說,“PersonPerson”是是“StudentStudent”和和“ProfessorProfessor”的父的父類。任何父類知道和完成的事情,子類也知道。實(shí)際上,僅需要寫兩類。任何父類知道和完成的事情,子類也知道。實(shí)際上,僅需要寫兩行代碼:一行表示行代碼:一行表示“StudentStudent”是是“PersonPerson”的子類,

59、另一行表示的子類,另一行表示“ProfessorProfessor”是是“PersonPerson”的子類。因?yàn)榈淖宇?。因?yàn)椤癙ersonPerson”有姓名、住址和電有姓名、住址和電話號(hào)碼,話號(hào)碼,“StudentStudent”和和“ProfessorProfessor”也有這些屬性。因?yàn)橐灿羞@些屬性。因?yàn)椤癙ersonPerson”是是會(huì)開車的,這樣會(huì)開車的,這樣“StudentStudent”和和“ProfessorProfessor”也應(yīng)該可以開車。也應(yīng)該可以開車。PersonStudentProfessor圖圖1.6 1.6 對(duì)對(duì)“StudentStudent”和和“Profess

60、orProfessor”類從類從“PersonPerson”繼承這個(gè)概念進(jìn)行繼承這個(gè)概念進(jìn)行建模建模第第1 1章章 為問題域建概念模型為問題域建概念模型29繼承技巧和技術(shù)繼承技巧和技術(shù)下面的技巧和技術(shù)有助于有效地應(yīng)用繼承:下面的技巧和技術(shù)有助于有效地應(yīng)用繼承:1.1.尋找相似之處尋找相似之處。無論何時(shí)只要有兩個(gè)以上的類有相似之處。無論何時(shí)只要有兩個(gè)以上的類有相似之處相似的相似的屬性或者是相似的方法,都會(huì)存在使用繼承的可能性。屬性或者是相似的方法,都會(huì)存在使用繼承的可能性。2.2.尋找已有的類尋找已有的類。當(dāng)確定一個(gè)新的類時(shí),可能已經(jīng)有了一個(gè)與其相似。當(dāng)確定一個(gè)新的類時(shí),可能已經(jīng)有了一個(gè)與其相似

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論