版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第5 章章 面向?qū)ο蟮男枨蠓治雒嫦驅(qū)ο蟮男枨蠓治?本章學(xué)習(xí)內(nèi)容:本章學(xué)習(xí)內(nèi)容:1. 理解面向?qū)ο蠓椒ǖ幕靖拍罾斫饷嫦驅(qū)ο蠓椒ǖ幕靖拍?.2.了解面向?qū)ο蠓椒ǖ奶攸c(diǎn)與優(yōu)點(diǎn)了解面向?qū)ο蠓椒ǖ奶攸c(diǎn)與優(yōu)點(diǎn)3.3.初步掌握面向?qū)ο蠓治龅母鞣N模型及視圖初步掌握面向?qū)ο蠓治龅母鞣N模型及視圖4.4.掌握面向?qū)ο笮枨蠓治龅倪^程與步驟掌握面向?qū)ο笮枨蠓治龅倪^程與步驟第第5章章 面向?qū)ο蟮男枨蠓治雒嫦驅(qū)ο蟮男枨蠓治?.1 面向?qū)ο蠓椒▽W(xué)概述面向?qū)ο蠓椒▽W(xué)概述5.2 面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?.3 用例模型用例模型5.4 對象(概念)模型對象(概念)模型5.5 動(dòng)態(tài)模型動(dòng)態(tài)模型5.6 小結(jié)小結(jié)第第5
2、 章面向?qū)ο蟮男枨蠓治稣旅嫦驅(qū)ο蟮男枨蠓治?5.15.1面向?qū)ο蠓椒▽W(xué)概述面向?qū)ο蠓椒▽W(xué)概述 5.1.1 5.1.1 面向?qū)ο蠹夹g(shù)的由來面向?qū)ο蠹夹g(shù)的由來19861986年年BoochBooch提出的面向?qū)ο蠓治雠c設(shè)計(jì)方法論提出的面向?qū)ο蠓治雠c設(shè)計(jì)方法論(OOA/OODOOA/OOD)。)。19911991年年RumbaughRumbaugh提出的面向?qū)ο竽P图夹g(shù)(提出的面向?qū)ο竽P图夹g(shù)(OMTOMT)。)。19941994年年JacobsonJacobson提出的面向?qū)ο筌浖こ谭椒▽W(xué)提出的面向?qū)ο筌浖こ谭椒▽W(xué)(OOSEOOSE)。)。BoochBooch、OMTOMT和和Jacobson
3、Jacobson將他們各自的對象建模方法結(jié)將他們各自的對象建模方法結(jié)合到一起,提出了統(tǒng)一的建模語言合到一起,提出了統(tǒng)一的建模語言UMLUML(Unified Unified Modeling LanguageModeling Language) 5.1 方法學(xué)概述方法學(xué)概述 1 由來、由來、2 概述、概述、3 建模建模第第5 章面向?qū)ο蟮男枨蠓治稣旅嫦驅(qū)ο蟮男枨蠓治?5.1.2 5.1.2 面向?qū)ο蠓椒ǜ攀雒嫦驅(qū)ο蠓椒ǜ攀?主要特點(diǎn):主要特點(diǎn): 從問題域中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),從問題域中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),用用對象對象作為對這些事物的抽象表示,并以此作為系統(tǒng)作為對這些
4、事物的抽象表示,并以此作為系統(tǒng)的基本構(gòu)成單位;的基本構(gòu)成單位;事物的靜態(tài)特征(即可以用一些數(shù)據(jù)來表達(dá)的特征)事物的靜態(tài)特征(即可以用一些數(shù)據(jù)來表達(dá)的特征)用用對象的屬性對象的屬性來表示,事物的動(dòng)態(tài)特征(即事物的行來表示,事物的動(dòng)態(tài)特征(即事物的行為)用為)用對象的操作對象的操作來表示;來表示;對象的屬性與操作結(jié)合為一體,成為一個(gè)獨(dú)立的實(shí)對象的屬性與操作結(jié)合為一體,成為一個(gè)獨(dú)立的實(shí)體,對外屏蔽其內(nèi)部細(xì)節(jié)(稱為體,對外屏蔽其內(nèi)部細(xì)節(jié)(稱為封裝封裝););對事物進(jìn)行分類,把具有相同屬性和相同操作的對對事物進(jìn)行分類,把具有相同屬性和相同操作的對象歸為一類,象歸為一類,類類是這些對象的抽象描述,每個(gè)對象
5、是是這些對象的抽象描述,每個(gè)對象是它的類的一個(gè)它的類的一個(gè)實(shí)例實(shí)例;5.1 方法學(xué)概述方法學(xué)概述 1 由來、由來、2 概述、概述、3 建模建模第第5 章面向?qū)ο蟮男枨蠓治稣旅嫦驅(qū)ο蟮男枨蠓治?通過在不同程度上運(yùn)用通過在不同程度上運(yùn)用抽象原則抽象原則(忽略事物之間(忽略事物之間的一些差異),可以得到較一般的類和較特殊的類。的一些差異),可以得到較一般的類和較特殊的類。特殊類特殊類繼承繼承一般類的屬性和操作,面向?qū)ο蠓椒ㄖб话泐惖膶傩院筒僮?,面向?qū)ο蠓椒ㄖС诌@種繼承關(guān)系的描述與實(shí)現(xiàn),從而簡化系統(tǒng)的構(gòu)持這種繼承關(guān)系的描述與實(shí)現(xiàn),從而簡化系統(tǒng)的構(gòu)造過程及其文檔;造過程及其文檔;復(fù)雜對象可以用簡單的對象
6、作為其構(gòu)成部分(稱復(fù)雜對象可以用簡單的對象作為其構(gòu)成部分(稱為為聚合聚合););對象之間通過對象之間通過消息消息進(jìn)行通信,以實(shí)現(xiàn)對象之間的進(jìn)行通信,以實(shí)現(xiàn)對象之間的動(dòng)態(tài)聯(lián)系;動(dòng)態(tài)聯(lián)系;通過通過關(guān)聯(lián)關(guān)聯(lián)表達(dá)對象之間的靜態(tài)關(guān)系。表達(dá)對象之間的靜態(tài)關(guān)系。5.1 方法學(xué)概述方法學(xué)概述 1 由來、由來、2 概述、概述、3 建模建模第第5 章面向?qū)ο蟮男枨蠓治稣旅嫦驅(qū)ο蟮男枨蠓治?面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)1.1.與人們習(xí)慣的思維方法一致與人們習(xí)慣的思維方法一致 2.2.可使軟件系統(tǒng)結(jié)構(gòu)更加穩(wěn)定可使軟件系統(tǒng)結(jié)構(gòu)更加穩(wěn)定 3.3.軟件具有更好的可復(fù)用性軟件具有更好的可復(fù)用性 4.4.軟件更加便于維
7、護(hù)與擴(kuò)充軟件更加便于維護(hù)與擴(kuò)充 5.1 方法學(xué)概述方法學(xué)概述 1 由來、由來、2 概述、概述、3 建模建模第第5 章面向?qū)ο蟮男枨蠓治稣旅嫦驅(qū)ο蟮男枨蠓治?5.1.3 面向?qū)ο蠼C嫦驅(qū)ο蠼?模型就是為了理解事物而對事物做出的一種抽象,是對事物的一種可視化描述。模型可幫助人們思考問題,定義術(shù)語,并幫助人們保持定義和假設(shè)的一致性。建立模型的主要目的是為了減少復(fù)雜性。模型是一種組織大量信息的有效機(jī)制。 面對對象方法開發(fā)軟件中的幾種主要模型:用況模型、概念模型、配置模型、實(shí)現(xiàn)模型、測試模型。5.1.3 面向?qū)ο蠼C嫦驅(qū)ο蠼S美P陀美P停喊杏美捌渑c用戶之間的關(guān)系;對象模型對象模型:包
8、含問題域涉及的類及其屬性和關(guān)系,其作用是更詳細(xì)地提煉用例,將系統(tǒng)的行為初步分配給提供行為的一組對象;設(shè)計(jì)模型設(shè)計(jì)模型:將系統(tǒng)的靜態(tài)結(jié)構(gòu)定義為子系統(tǒng)、類和接口,并定義由子系統(tǒng)、類和接口之間的協(xié)作來實(shí)現(xiàn)的用例;實(shí)現(xiàn)模型實(shí)現(xiàn)模型:包含構(gòu)件和類到構(gòu)件的映射;配置模型配置模型:定義計(jì)算機(jī)的物理節(jié)點(diǎn)和構(gòu)件到這些節(jié)點(diǎn)的映射;測試模型測試模型:描述用于驗(yàn)證用例的測試用例。 5.1.3 面向?qū)ο蠼C嫦驅(qū)ο蠼?所有模型都是相關(guān)的,只是每種模型的側(cè)重點(diǎn)不同,它們合起來表示整個(gè)系統(tǒng)。在分析模型中:構(gòu)造出完全獨(dú)立于實(shí)現(xiàn)的分析模型在設(shè)計(jì)階段:把求解域的結(jié)構(gòu)逐步加入到模型里。在實(shí)現(xiàn)階段:把問題域與求解域的結(jié)構(gòu)都編寫成代
9、碼,并經(jīng)過嚴(yán)格的測試驗(yàn)證。第第5 章面向?qū)ο蟮男枨蠓治稣旅嫦驅(qū)ο蟮男枨蠓治?5.1.3 面向?qū)ο蠼C嫦驅(qū)ο蠼?使用用例驅(qū)動(dòng)的開發(fā)方法是通過建立用況模型,再以用況模型為核心構(gòu)造一系列模型。 本章主要介紹與需求分析、軟件設(shè)計(jì)有關(guān)的用況模型、分析模型和設(shè)計(jì)模型。第第5章章 面向?qū)ο蟮男枨蠓治雒嫦驅(qū)ο蟮男枨蠓治?.1 面向?qū)ο蠓椒▽W(xué)概述面向?qū)ο蠓椒▽W(xué)概述5.2 面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?.3 用例模型用例模型5.4 對象(概念)模型對象(概念)模型5.5 動(dòng)態(tài)模型動(dòng)態(tài)模型5.6 小結(jié)小結(jié)135.2 5.2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?、對象、對象3、屬性、屬性4、方法、方法5、消息、
10、消息2、類、類6、封裝、封裝7、繼承、繼承8、多態(tài)性與動(dòng)態(tài)聯(lián)編、多態(tài)性與動(dòng)態(tài)聯(lián)編9、重載、重載145.2 5.2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?、對象、對象3、屬性、屬性4、方法、方法5、消息、消息2、類、類6、封裝、封裝7、繼承、繼承8、多態(tài)性與動(dòng)態(tài)聯(lián)編、多態(tài)性與動(dòng)態(tài)聯(lián)編9、重載、重載15定義定義1:對象是具有相同狀態(tài)的一組操作的集合。:對象是具有相同狀態(tài)的一組操作的集合。2 2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍顚ο髮ο?、對象、對象-對象定義對象定義家里的寵物是一只叫小白的狗家里的寵物是一只叫小白的狗,白黃相間的毛白黃相間的毛,體形體形矮小是它的靜態(tài)特征矮小是它的靜態(tài)特征,會汪汪叫會汪汪叫,撒
11、嬌是它的動(dòng)態(tài)特撒嬌是它的動(dòng)態(tài)特征征小白:狗16定義定義3:對象:對象:=其中:其中:ID是是對象的標(biāo)識對象的標(biāo)識或名字;或名字;MS是對象中的操作集是對象中的操作集合;合;DS是對象的數(shù)據(jù)結(jié)構(gòu);是對象的數(shù)據(jù)結(jié)構(gòu);MI是對象受理的消息名集合是對象受理的消息名集合 (即對外接口)。這個(gè)定義是一個(gè)形式化的定義。(即對外接口)。這個(gè)定義是一個(gè)形式化的定義。定義定義2:對象是對問題域中某個(gè)事物的抽象,這種抽象反:對象是對問題域中某個(gè)事物的抽象,這種抽象反映系統(tǒng)保存有關(guān)這個(gè)事物的信息或與它交互的能映系統(tǒng)保存有關(guān)這個(gè)事物的信息或與它交互的能力。也就是說,對象是對屬性值和操作的封裝。力。也就是說,對象是對屬性
12、值和操作的封裝。這個(gè)定義著重從信息模擬的角度看待這個(gè)定義著重從信息模擬的角度看待“對象對象” 。17 以數(shù)據(jù)為中心以數(shù)據(jù)為中心,不設(shè)與數(shù)據(jù)無關(guān)的操作;,不設(shè)與數(shù)據(jù)無關(guān)的操作; Object主動(dòng)處理主動(dòng)處理而不而不 被動(dòng)地等待被處理,外部只能被動(dòng)地等待被處理,外部只能通過通過message請求操作;請求操作; 具有封裝性具有封裝性:外部操作時(shí),無須知道該:外部操作時(shí),無須知道該object內(nèi)部內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法;的數(shù)據(jù)結(jié)構(gòu)及算法; 具有并行性具有并行性:不同:不同object各自獨(dú)立地處理自身數(shù)據(jù),各自獨(dú)立地處理自身數(shù)據(jù),彼此間僅通過傳遞彼此間僅通過傳遞message完成通信;完成通信; 模塊
13、獨(dú)立性好模塊獨(dú)立性好:內(nèi)聚強(qiáng)、耦合松:內(nèi)聚強(qiáng)、耦合松5.2 5.2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍顚ο髮ο?對象特點(diǎn)對象特點(diǎn)185.2 5.2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?、對象、對象3、屬性、屬性4、方法、方法5、消息、消息2、類、類6、封裝、封裝7、繼承、繼承8、多態(tài)性與動(dòng)態(tài)聯(lián)編、多態(tài)性與動(dòng)態(tài)聯(lián)編9、重載、重載192、類:、類:具有相同數(shù)據(jù)和相同操作的具有相同數(shù)據(jù)和相同操作的一組對象一組對象;比如:學(xué)生面向?qū)ο蟮睦L圖程序:畫圓實(shí)例(實(shí)例(Instance): 實(shí)例就是由某個(gè)實(shí)例就是由某個(gè)特定的類特定的類所描述的所描述的一個(gè)具體的對象。實(shí)際上類是建立對象時(shí)使用的一個(gè)具體的對象。實(shí)際上類是建立
14、對象時(shí)使用的“樣樣板板”,按照這個(gè),按照這個(gè)樣板樣板所建立的每個(gè)具體的對象,就是所建立的每個(gè)具體的對象,就是類的實(shí)際例子,通常稱為實(shí)例。類的實(shí)際例子,通常稱為實(shí)例。 當(dāng)使用當(dāng)使用“對象對象”這個(gè)術(shù)語時(shí),既可以指一個(gè)具體這個(gè)術(shù)語時(shí),既可以指一個(gè)具體的對象,也可以泛指一般的對象,但是,當(dāng)使用的對象,也可以泛指一般的對象,但是,當(dāng)使用“實(shí)實(shí)例例”這個(gè)術(shù)語時(shí),必然是指一個(gè)這個(gè)術(shù)語時(shí),必然是指一個(gè)具體的對象具體的對象。 具體的人:張三,李四20動(dòng)物215.2 5.2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?、對象、對象3、屬性、屬性4、方法、方法5、消息、消息2、類、類6、封裝、封裝7、繼承、繼承8、多態(tài)性與動(dòng)態(tài)
15、聯(lián)編、多態(tài)性與動(dòng)態(tài)聯(lián)編9、重載、重載22前一頁其他概念3. 屬性(屬性(Attribute) 屬性,就是屬性,就是類中所定義的數(shù)據(jù)類中所定義的數(shù)據(jù),它是對客觀世界實(shí),它是對客觀世界實(shí)體所具有的性質(zhì)的抽象。類的每個(gè)實(shí)例都有自己特有的體所具有的性質(zhì)的抽象。類的每個(gè)實(shí)例都有自己特有的屬性值。屬性值。 例如,例如,Circle類中定義的代表圓心坐標(biāo),半徑,顏類中定義的代表圓心坐標(biāo),半徑,顏色等的數(shù)據(jù)成員,就是圓的屬性。色等的數(shù)據(jù)成員,就是圓的屬性。 235.2 5.2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?、對象、對象3、屬性、屬性4、方法、方法5、消息、消息2、類、類6、封裝、封裝7、繼承、繼承8、多態(tài)性與
16、動(dòng)態(tài)聯(lián)編、多態(tài)性與動(dòng)態(tài)聯(lián)編9、重載、重載24前一頁其他概念4. 方法(方法(Method) 方法,就是方法,就是對象所具有的能力對象所具有的能力,也就是,也就是類中類中所定義的服務(wù)所定義的服務(wù)。方法描述了對象執(zhí)行操作的算法,。方法描述了對象執(zhí)行操作的算法,響應(yīng)消息的方法。在響應(yīng)消息的方法。在C+語言中把方法稱為語言中把方法稱為成員成員函數(shù)函數(shù)。 例如例如:李李*會唱歌會唱歌屬性屬性:學(xué)號學(xué)號,姓名姓名,學(xué)分學(xué)分方法方法:唱歌唱歌Circle.Show(Green);255.2 5.2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?、對象、對象3、屬性、屬性4、方法、方法5、消息、消息2、類、類6、封裝、封裝7
17、、繼承、繼承8、多態(tài)性與動(dòng)態(tài)聯(lián)編、多態(tài)性與動(dòng)態(tài)聯(lián)編9、重載、重載265.消息(消息(Message) 消息,就是消息,就是要求某個(gè)對象要求某個(gè)對象執(zhí)行在定義它的那個(gè)執(zhí)行在定義它的那個(gè)類中所定義的某個(gè)操作的規(guī)格說明。通常,一個(gè)消類中所定義的某個(gè)操作的規(guī)格說明。通常,一個(gè)消息由下述三部分組成:息由下述三部分組成: 接收消息的接收消息的對象對象 消息選擇符消息選擇符(也稱為消息名)(也稱為消息名) 零個(gè)或多個(gè)零個(gè)或多個(gè)變元變元 Circle MyCircle.Show(Red);275.2 5.2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?、對象、對象3、屬性、屬性4、方法、方法5、消息、消息2、類、類6、封裝
18、、封裝7、繼承、繼承8、多態(tài)性與動(dòng)態(tài)聯(lián)編、多態(tài)性與動(dòng)態(tài)聯(lián)編9、重載、重載286、封裝:、封裝:把內(nèi)部實(shí)現(xiàn)細(xì)節(jié)隱藏起來,使其他把內(nèi)部實(shí)現(xiàn)細(xì)節(jié)隱藏起來,使其他外部對象無法訪問,僅僅提供某些功能。外部對象無法訪問,僅僅提供某些功能。使對使對象形成接口部分和實(shí)現(xiàn)部分象形成接口部分和實(shí)現(xiàn)部分295.2 5.2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?、對象、對象3、屬性、屬性4、方法、方法5、消息、消息2、類、類6、封裝、封裝7、繼承、繼承8、多態(tài)性與動(dòng)態(tài)聯(lián)編、多態(tài)性與動(dòng)態(tài)聯(lián)編9、重載、重載307. 繼承(繼承(Inheritance) 繼承是指能夠繼承是指能夠直接獲得直接獲得已有的性質(zhì)和特征,而已有的性質(zhì)和特征
19、,而不必重復(fù)不必重復(fù)定義它們。在面向?qū)ο蟮能浖夹g(shù)中,繼定義它們。在面向?qū)ο蟮能浖夹g(shù)中,繼承子類自動(dòng)地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。承子類自動(dòng)地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。 面向?qū)ο筌浖夹g(shù)的許多強(qiáng)有力的功能和突出面向?qū)ο筌浖夹g(shù)的許多強(qiáng)有力的功能和突出的優(yōu)點(diǎn),都來源于把類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng):的優(yōu)點(diǎn),都來源于把類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng):一個(gè)類的上層可以有父類,下層可以有子類。這種一個(gè)類的上層可以有父類,下層可以有子類。這種層次結(jié)構(gòu)系統(tǒng)的一個(gè)重要性質(zhì)是繼承性,一個(gè)類直層次結(jié)構(gòu)系統(tǒng)的一個(gè)重要性質(zhì)是繼承性,一個(gè)類直接繼承其父類的全部描述。接繼承其父類的全部描述。31Class 中國人
20、中國人中國人中國人 Attributes中國人中國人 Methods張三張三 (instance) Class 中國人中國人 張三的張三的 AttributesClass 成都成都人人 (子類子類) 成都人成都人 Attributes成都人成都人 Methods Class 中國人中國人李四李四 (instance) 中國人李四的中國人李四的 Attributes 成都人李四的成都人李四的 Attributes Class 成都人成都人例:例:繼承:繼承:子類自動(dòng)共享父類的子類自動(dòng)共享父類的attributes 和和methods ,而,而不必重復(fù)定義。不必重復(fù)定義。特點(diǎn):特點(diǎn): 若若成都人成
21、都人的的 methods中有與中有與中國人中國人的同名,則李的同名,則李四執(zhí)行該四執(zhí)行該 method 時(shí)以時(shí)以成都人成都人為準(zhǔn),不執(zhí)行為準(zhǔn),不執(zhí)行中國人中國人中定中定義的同名義的同名 method。 傳遞性:傳遞性:AB、BC AC 一個(gè)一個(gè) class 繼承了上層全部繼承了上層全部 classes 的一切性質(zhì)。的一切性質(zhì)。32注意:注意:多重繼承在定義中多重繼承在定義中應(yīng)避免二義性應(yīng)避免二義性,即兩二個(gè)父類中,即兩二個(gè)父類中定義重名,但各具不同性質(zhì)。定義重名,但各具不同性質(zhì)。例:例:FemaleChineseScholar 修改與擴(kuò)充可以很容易地通過派生子類來完成。修改與擴(kuò)充可以很容易地通
22、過派生子類來完成。 一個(gè)子類只一個(gè)子類只 有有 一一 個(gè)父類稱為單個(gè)父類稱為單 繼繼 承承, 一個(gè)子類可有一個(gè)子類可有多個(gè)父類稱為多重繼承。多個(gè)父類稱為多重繼承。335.2 5.2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?、對象、對象3、屬性、屬性4、方法、方法5、消息、消息2、類、類6、封裝、封裝7、繼承、繼承8、多態(tài)性與動(dòng)態(tài)聯(lián)編、多態(tài)性與動(dòng)態(tài)聯(lián)編9、重載、重載348、多態(tài)性與動(dòng)態(tài)聯(lián)編、多態(tài)性與動(dòng)態(tài)聯(lián)編多態(tài)性是指多態(tài)性是指子類對象子類對象可以像父類對象那樣使用,同樣的消息既可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象??梢园l(fā)送給父類對象也可以發(fā)送給子類對象。不同層次的不同
23、層次的 classes 可共享一個(gè)可共享一個(gè)method名,但按各自的方式來名,但按各自的方式來實(shí)現(xiàn)這種實(shí)現(xiàn)這種 method。如如虛函數(shù)虛函數(shù)機(jī)制能在一個(gè)類等級中使用相同函數(shù)的多個(gè)不同版機(jī)制能在一個(gè)類等級中使用相同函數(shù)的多個(gè)不同版本,在運(yùn)行時(shí)刻才根據(jù)接收消息的對象所屬于的類,決定到本,在運(yùn)行時(shí)刻才根據(jù)接收消息的對象所屬于的類,決定到底執(zhí)行哪個(gè)特定的版本,稱為底執(zhí)行哪個(gè)特定的版本,稱為動(dòng)態(tài)聯(lián)編,也叫滯后聯(lián)編。動(dòng)態(tài)聯(lián)編,也叫滯后聯(lián)編。 在在C+中多態(tài)性是通過中多態(tài)性是通過虛函數(shù)虛函數(shù)來實(shí)現(xiàn)的。來實(shí)現(xiàn)的。35“叫”“汪汪”“喵喵” 寵物-名字+叫() 主人+指揮() 寵物-名字+叫() 貓+叫()
24、 狗+叫() 鵝+叫()多態(tài)使對象在事前不知道其他對象的類型時(shí)36375.2 5.2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?、對象、對象3、屬性、屬性4、方法、方法5、消息、消息2、類、類6、封裝、封裝7、繼承、繼承8、多態(tài)性與動(dòng)態(tài)聯(lián)編、多態(tài)性與動(dòng)態(tài)聯(lián)編9、重載、重載l在在C+語言中函數(shù)重載是通過靜態(tài)聯(lián)編來實(shí)現(xiàn)的,也就是在語言中函數(shù)重載是通過靜態(tài)聯(lián)編來實(shí)現(xiàn)的,也就是在編譯時(shí)根據(jù)編譯時(shí)根據(jù)函數(shù)變元的個(gè)數(shù)和類型函數(shù)變元的個(gè)數(shù)和類型,決定使用函數(shù)的哪部分,決定使用函數(shù)的哪部分實(shí)現(xiàn)代碼;對于重載的運(yùn)算符,同樣是在編譯時(shí)根據(jù)被實(shí)現(xiàn)代碼;對于重載的運(yùn)算符,同樣是在編譯時(shí)根據(jù)被操作操作數(shù)的類型數(shù)的類型,決定使用該算
25、符的哪種操作,決定使用該算符的哪種操作。389、重載、重載在在同一作用域內(nèi)同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字。函數(shù)名字。在在C+語言中函數(shù)重載通過語言中函數(shù)重載通過靜態(tài)聯(lián)編靜態(tài)聯(lián)編(也叫先前聯(lián)編也叫先前聯(lián)編)實(shí)現(xiàn)。實(shí)現(xiàn)。重載進(jìn)一步提高了面向?qū)ο笙到y(tǒng)的靈活性和可讀性。重載進(jìn)一步提高了面向?qū)ο笙到y(tǒng)的靈活性和可讀性。 392 2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍? (小結(jié)小結(jié)) )1、對象、對象3、屬性、屬性4、方法、方法5、消息、消息2、類、類6、封裝、封裝7、繼承、繼承8、多態(tài)性與動(dòng)態(tài)聯(lián)編、多態(tài)性與動(dòng)態(tài)聯(lián)編9、重載、重載第第5 章面向
26、對象的需求分析總結(jié)章面向?qū)ο蟮男枨蠓治隹偨Y(jié) 1對象對象 是指問題域中是指問題域中某些事物的一個(gè)抽象某些事物的一個(gè)抽象,它反映該,它反映該事物在系統(tǒng)中需要保存的信息和發(fā)揮的作用,它是事物在系統(tǒng)中需要保存的信息和發(fā)揮的作用,它是由數(shù)據(jù)(屬性)及其上的操作(也稱為服務(wù)、方法由數(shù)據(jù)(屬性)及其上的操作(也稱為服務(wù)、方法或行為)組成的封裝體?;蛐袨椋┙M成的封裝體。 5.2 基本概念基本概念1.類和對象類和對象 2.封閉繼承多態(tài)封閉繼承多態(tài)3.概述概述第第5 章面向?qū)ο蟮男枨蠓治隹偨Y(jié)章面向?qū)ο蟮男枨蠓治隹偨Y(jié) 可以從以下可以從以下4 4個(gè)方面來認(rèn)識對象:個(gè)方面來認(rèn)識對象:(1) 1) 從動(dòng)態(tài)的觀點(diǎn)看,對象的
27、操作就是對象的行為。從動(dòng)態(tài)的觀點(diǎn)看,對象的操作就是對象的行為。(2 2)從存儲角度看,對象是私有存儲,其中有數(shù)據(jù)也從存儲角度看,對象是私有存儲,其中有數(shù)據(jù)也有操作。其他對象的方法不能直接操縱該對象的私有數(shù)有操作。其他對象的方法不能直接操縱該對象的私有數(shù)據(jù),只有對象私有的方法才可操縱它。據(jù),只有對象私有的方法才可操縱它。(3 3)從實(shí)現(xiàn)機(jī)制看,對象是一個(gè)自動(dòng)機(jī),其中私有數(shù)從實(shí)現(xiàn)機(jī)制看,對象是一個(gè)自動(dòng)機(jī),其中私有數(shù)據(jù)表示了對象的狀態(tài),該狀態(tài)只能由私有的方法改變它。據(jù)表示了對象的狀態(tài),該狀態(tài)只能由私有的方法改變它。(4)(4)在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對象是系統(tǒng)中的基本運(yùn)在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對象是
28、系統(tǒng)中的基本運(yùn)行實(shí)體。行實(shí)體。 5.2 基本概念基本概念1.類和對象類和對象 2.封閉繼承多態(tài)封閉繼承多態(tài)3.概述概述第第5 章章 面向?qū)ο蟮男枨蠓治隹偨Y(jié)面向?qū)ο蟮男枨蠓治隹偨Y(jié) 2 2類類 是指具有相同屬性和操作的是指具有相同屬性和操作的對象的集合對象的集合,它代表一種抽象它代表一種抽象,作為具有類似特性與共同行,作為具有類似特性與共同行為的對象的模板,可用來產(chǎn)生對象。為的對象的模板,可用來產(chǎn)生對象。3 3實(shí)例實(shí)例 類是建立對象時(shí)使用的類是建立對象時(shí)使用的“樣板樣板”,按照這,按照這個(gè)樣板所建立起來的一個(gè)個(gè)具體的對象,就是個(gè)樣板所建立起來的一個(gè)個(gè)具體的對象,就是類的實(shí)例類的實(shí)例。 5.2 基本
29、概念基本概念1.類和對象類和對象 2.封閉繼承多態(tài)封閉繼承多態(tài)3.概述概述第第5 章章 面向?qū)ο蟮男枨蠓治雒嫦驅(qū)ο蟮男枨蠓治?5.2.3 5.2.3 面向?qū)ο蟮姆治龈攀雒嫦驅(qū)ο蟮姆治龈攀?面向?qū)ο蠓治龅哪繕?biāo)是完成對所解問題的分析、解決面向?qū)ο蠓治龅哪繕?biāo)是完成對所解問題的分析、解決待建立的系統(tǒng)要做什么的問題,并建立系統(tǒng)的模型。待建立的系統(tǒng)要做什么的問題,并建立系統(tǒng)的模型。面向?qū)ο蠓治龅囊话悴襟E:面向?qū)ο蠓治龅囊话悴襟E:1.1.獲取用戶需求獲取用戶需求 2.2.標(biāo)識對象和類標(biāo)識對象和類 3.3.定義類的結(jié)構(gòu)和層次定義類的結(jié)構(gòu)和層次 4.4.建立對象模型建立對象模型 5.5.建立動(dòng)態(tài)模型建立動(dòng)態(tài)模型
30、 5.2 基本概念基本概念1.類和對象類和對象 2.封閉繼承多態(tài)封閉繼承多態(tài)3.概述概述第第5章章 面向?qū)ο蟮男枨蠓治雒嫦驅(qū)ο蟮男枨蠓治?.1 面向?qū)ο蠓椒▽W(xué)概述面向?qū)ο蠓椒▽W(xué)概述5.2 面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?.3 用例模型用例模型5.4 對象(概念)模型對象(概念)模型5.5 動(dòng)態(tài)模型動(dòng)態(tài)模型5.6 小結(jié)小結(jié)45UML提供的提供的用例圖用例圖也是建立功能模型的強(qiáng)有力工也是建立功能模型的強(qiáng)有力工具。在具。在UML中把用用例圖建立起來的系統(tǒng)模型稱中把用用例圖建立起來的系統(tǒng)模型稱為為用例模型,用例模型,一個(gè)用例模型由若干幅用例圖組成。一個(gè)用例模型由若干幅用例圖組成。5.3.1 用例
31、圖用例圖5.3.2 用例建模用例建模5.3 5.3 用例模型用例模型功能模型:表明系統(tǒng)應(yīng)該做什么功能模型:表明系統(tǒng)應(yīng)該做什么通常的表示方法:數(shù)據(jù)流圖(通常的表示方法:數(shù)據(jù)流圖(DFD)46UML提供的提供的用例圖用例圖也是建立功能模型的強(qiáng)有力工也是建立功能模型的強(qiáng)有力工具。在具。在UML中把用用例圖建立起來的系統(tǒng)模型稱中把用用例圖建立起來的系統(tǒng)模型稱為為用例模型,用例模型,一個(gè)用例模型由若干幅用例圖組成。一個(gè)用例模型由若干幅用例圖組成。5.3.1 用例圖用例圖5.3.2 用例建模用例建模5.3 5.3 用例模型用例模型功能模型:表明系統(tǒng)應(yīng)該做什么功能模型:表明系統(tǒng)應(yīng)該做什么通常的表示方法:數(shù)據(jù)
32、流圖(通常的表示方法:數(shù)據(jù)流圖(DFD)47n一幅用例圖包含的模型元素有一幅用例圖包含的模型元素有:系統(tǒng)系統(tǒng),行為者行為者,用例用例,及用例及用例之間的之間的關(guān)系關(guān)系. n系統(tǒng)系統(tǒng)n用例用例n行為者行為者n用例之間的關(guān)系用例之間的關(guān)系48n一幅用例圖包含的模型元素有一幅用例圖包含的模型元素有:系統(tǒng)系統(tǒng),行為者行為者,用例用例,及用例及用例之間的之間的關(guān)系關(guān)系. n系統(tǒng)系統(tǒng)n用例用例n行為者行為者n用例之間的關(guān)系用例之間的關(guān)系491. 系統(tǒng)系統(tǒng)系統(tǒng)被看作是一個(gè)提供用例的黑盒子,內(nèi)部如何工系統(tǒng)被看作是一個(gè)提供用例的黑盒子,內(nèi)部如何工作、用例如何實(shí)現(xiàn),這些對于建立用例模型來說都作、用例如何實(shí)現(xiàn),這些
33、對于建立用例模型來說都是不重要的。是不重要的。代表系統(tǒng)的代表系統(tǒng)的方框的邊線方框的邊線表示表示系統(tǒng)的邊界系統(tǒng)的邊界,用于劃定,用于劃定系統(tǒng)的功能范圍,定義了系統(tǒng)所具有的功能。描述系統(tǒng)的功能范圍,定義了系統(tǒng)所具有的功能。描述該系統(tǒng)功能的用例置于方框內(nèi),代表外部實(shí)體的行該系統(tǒng)功能的用例置于方框內(nèi),代表外部實(shí)體的行為者置于方框外。為者置于方框外。9.6.1 用例圖50例如:51簽定一份簽定一份保險(xiǎn)單保險(xiǎn)單客戶客戶保險(xiǎn)銷保險(xiǎn)銷售人員售人員銷售統(tǒng)計(jì)銷售統(tǒng)計(jì)客戶統(tǒng)計(jì)客戶統(tǒng)計(jì)某保險(xiǎn)業(yè)務(wù)的用例圖某保險(xiǎn)業(yè)務(wù)的用例圖又如:52n一幅用例圖包含的模型元素有一幅用例圖包含的模型元素有:系統(tǒng)系統(tǒng),行為者行為者,用例用例
34、,及用例及用例之間的之間的關(guān)系關(guān)系. n系統(tǒng)系統(tǒng)n用例用例n行為者行為者n用例之間的關(guān)系用例之間的關(guān)系532. 用例用例一個(gè)用例是可以被行為者感受到的、系統(tǒng)的一個(gè)完一個(gè)用例是可以被行為者感受到的、系統(tǒng)的一個(gè)完整的功能。整的功能。在在UML中把用例定義成系統(tǒng)完成的一中把用例定義成系統(tǒng)完成的一系列動(dòng)作,動(dòng)作的結(jié)果能被特定的行為者察覺到系列動(dòng)作,動(dòng)作的結(jié)果能被特定的行為者察覺到。這些動(dòng)作除了完成系統(tǒng)內(nèi)部的計(jì)算與工作外,還包這些動(dòng)作除了完成系統(tǒng)內(nèi)部的計(jì)算與工作外,還包括與一些行為者的通信。用例通過關(guān)聯(lián)與行為者連括與一些行為者的通信。用例通過關(guān)聯(lián)與行為者連接,關(guān)聯(lián)指出一個(gè)用例與哪些行為者交互,這種交接,
35、關(guān)聯(lián)指出一個(gè)用例與哪些行為者交互,這種交互是互是雙向雙向的。的。用例具有下述特征:用例具有下述特征:(1) 用例代表某些用戶可見的功能,實(shí)現(xiàn)一個(gè)具用例代表某些用戶可見的功能,實(shí)現(xiàn)一個(gè)具體的用戶目標(biāo);體的用戶目標(biāo);54(2) 用例總是被行為者啟動(dòng)的,并向行為者提供用例總是被行為者啟動(dòng)的,并向行為者提供可識別的值;可識別的值;(3) 用例必須是完整的。用例必須是完整的。注意,用例是一個(gè)注意,用例是一個(gè)類類,它代表一類功能而不是使用,它代表一類功能而不是使用該功能的某個(gè)具體實(shí)例。該功能的某個(gè)具體實(shí)例。用例的實(shí)例用例的實(shí)例是系統(tǒng)的一種是系統(tǒng)的一種實(shí)際使用方法,通常把實(shí)際使用方法,通常把用例的實(shí)例稱為腳
36、本用例的實(shí)例稱為腳本。腳本。腳本是系統(tǒng)的一次具體執(zhí)行過程,例如,在自動(dòng)售貨機(jī)是系統(tǒng)的一次具體執(zhí)行過程,例如,在自動(dòng)售貨機(jī)系統(tǒng)中,張三投入硬幣購買礦泉水,系統(tǒng)收到錢后系統(tǒng)中,張三投入硬幣購買礦泉水,系統(tǒng)收到錢后把礦泉水送出來,上述過程就是一個(gè)腳本;李四投把礦泉水送出來,上述過程就是一個(gè)腳本;李四投幣買可樂,但是可樂已賣完了,于是系統(tǒng)給出提示幣買可樂,但是可樂已賣完了,于是系統(tǒng)給出提示信息并把錢退還給李四,這個(gè)過程是另一個(gè)腳本。信息并把錢退還給李四,這個(gè)過程是另一個(gè)腳本。55n一幅用例圖包含的模型元素有一幅用例圖包含的模型元素有:系統(tǒng)系統(tǒng),行為者行為者,用例用例,及用例及用例之間的之間的關(guān)系關(guān)系.
37、 n系統(tǒng)系統(tǒng)n用例用例n行為者行為者n用例之間的關(guān)系用例之間的關(guān)系563. 行為者行為者行為者是指與系統(tǒng)交互的人或其他系統(tǒng),它代表外行為者是指與系統(tǒng)交互的人或其他系統(tǒng),它代表外部實(shí)體。使用用例并且與系統(tǒng)交互的部實(shí)體。使用用例并且與系統(tǒng)交互的任何人或物任何人或物都都是行為者。是行為者。行為者代表一種行為者代表一種角色角色,而不是某個(gè)具體的人或物。,而不是某個(gè)具體的人或物。事實(shí)上,一個(gè)具體的人可以充當(dāng)多種不同角色。事實(shí)上,一個(gè)具體的人可以充當(dāng)多種不同角色。57在用例圖中用直線連接行為者和用例,表示兩者之在用例圖中用直線連接行為者和用例,表示兩者之間交換信息,稱為間交換信息,稱為通信聯(lián)系通信聯(lián)系。行
38、為者觸發(fā)(激活)。行為者觸發(fā)(激活)用例,并與用例交換信息。單個(gè)行為者可與多個(gè)用用例,并與用例交換信息。單個(gè)行為者可與多個(gè)用例聯(lián)系;反之,一個(gè)用例也可與多個(gè)行為者聯(lián)系。例聯(lián)系;反之,一個(gè)用例也可與多個(gè)行為者聯(lián)系。對于同一個(gè)用例而言,不同行為者起的作用也不同。對于同一個(gè)用例而言,不同行為者起的作用也不同??梢园芽梢园研袨檎叻殖芍餍袨檎吆透毙袨檎撸€可分成行為者分成主行為者和副行為者,還可分成主動(dòng)行為者和被動(dòng)行為者主動(dòng)行為者和被動(dòng)行為者。實(shí)踐表明,行為者對確定用例是非常有用的。面對實(shí)踐表明,行為者對確定用例是非常有用的。面對一個(gè)大型、復(fù)雜的系統(tǒng),要列出用例清單往往很困一個(gè)大型、復(fù)雜的系統(tǒng),要列出用
39、例清單往往很困難,可以先列出行為者清單,再針對每個(gè)行為者列難,可以先列出行為者清單,再針對每個(gè)行為者列出它的用例。這樣做可以比較容易地建立起用例模出它的用例。這樣做可以比較容易地建立起用例模型。型。58n一幅用例圖包含的模型元素有一幅用例圖包含的模型元素有:系統(tǒng)系統(tǒng),行為者行為者,用例用例,及用例及用例之間的之間的關(guān)系關(guān)系. n系統(tǒng)系統(tǒng)n用例用例n行為者行為者n用例之間的關(guān)系用例之間的關(guān)系594. 用例之間的關(guān)系用例之間的關(guān)系UML用例之間主要有用例之間主要有擴(kuò)展和使用擴(kuò)展和使用兩種關(guān)系,它們兩種關(guān)系,它們是泛化關(guān)系的兩種不同形式。是泛化關(guān)系的兩種不同形式。(1) 擴(kuò)展關(guān)系擴(kuò)展關(guān)系向一個(gè)用例中
40、向一個(gè)用例中添加一些動(dòng)作后添加一些動(dòng)作后構(gòu)成了另一個(gè)用例,構(gòu)成了另一個(gè)用例,這兩個(gè)用例之間的關(guān)系就是擴(kuò)展關(guān)系,后者繼承前這兩個(gè)用例之間的關(guān)系就是擴(kuò)展關(guān)系,后者繼承前者的一些行為,通常把后者稱為擴(kuò)展用例。例如,者的一些行為,通常把后者稱為擴(kuò)展用例。例如,在自動(dòng)售貨機(jī)系統(tǒng)中,在自動(dòng)售貨機(jī)系統(tǒng)中,“售貨售貨”是一個(gè)基本的用例,是一個(gè)基本的用例,如果顧客購買罐裝飲料,售貨功能完成得很順利,如果顧客購買罐裝飲料,售貨功能完成得很順利,但是,如果顧客要購買用紙杯裝的散裝飲料,則不但是,如果顧客要購買用紙杯裝的散裝飲料,則不能執(zhí)行該用例提供的常規(guī)動(dòng)作,而要做些改動(dòng)。能執(zhí)行該用例提供的常規(guī)動(dòng)作,而要做些改動(dòng)。
41、60我們可以修改售貨用例,使之既能提供售罐裝飲料我們可以修改售貨用例,使之既能提供售罐裝飲料的常規(guī)動(dòng)作又能提供售散裝飲料的非常規(guī)動(dòng)作,但的常規(guī)動(dòng)作又能提供售散裝飲料的非常規(guī)動(dòng)作,但是,這將把該用例與一些特殊的判斷和邏輯混雜在是,這將把該用例與一些特殊的判斷和邏輯混雜在一起,使正常的流程晦澀難懂。圖一起,使正常的流程晦澀難懂。圖9.18中把常規(guī)動(dòng)中把常規(guī)動(dòng)作放在作放在“售貨售貨”用例中,而把用例中,而把非常規(guī)動(dòng)作放置于非常規(guī)動(dòng)作放置于“售散裝飲料售散裝飲料”用例中,這兩個(gè)用例之間的關(guān)系就用例中,這兩個(gè)用例之間的關(guān)系就是擴(kuò)展關(guān)系。在用例圖中,用例之間的擴(kuò)展關(guān)系圖是擴(kuò)展關(guān)系。在用例圖中,用例之間的擴(kuò)
42、展關(guān)系圖示為示為帶版類帶版類擴(kuò)展擴(kuò)展的泛化關(guān)系。的泛化關(guān)系。61圖圖9.18 含擴(kuò)展和使用關(guān)系的用例圖含擴(kuò)展和使用關(guān)系的用例圖62(2) 使用關(guān)系使用關(guān)系當(dāng)當(dāng)一個(gè)用例使用另一個(gè)用例一個(gè)用例使用另一個(gè)用例時(shí),這兩個(gè)用例之間就時(shí),這兩個(gè)用例之間就構(gòu)成了使用關(guān)系。一般說來,如果在若干個(gè)用例中構(gòu)成了使用關(guān)系。一般說來,如果在若干個(gè)用例中有某些相同的動(dòng)作,則可以把這些相同的動(dòng)作提取有某些相同的動(dòng)作,則可以把這些相同的動(dòng)作提取出來單獨(dú)構(gòu)成一個(gè)用例(稱為抽象用例)。這樣,出來單獨(dú)構(gòu)成一個(gè)用例(稱為抽象用例)。這樣,當(dāng)某個(gè)用例使用該抽象用例時(shí),就好像這個(gè)用例包當(dāng)某個(gè)用例使用該抽象用例時(shí),就好像這個(gè)用例包含了抽
43、象用例中的所有動(dòng)作。在用例圖中,用例之含了抽象用例中的所有動(dòng)作。在用例圖中,用例之間的使用關(guān)系用間的使用關(guān)系用帶版類帶版類使用使用的泛化關(guān)系表示,的泛化關(guān)系表示,如圖如圖9.18所示。所示。打開機(jī)器的目的是打開機(jī)器的目的是-供貨供貨,供貨用例使用打開機(jī)器供貨用例使用打開機(jī)器用例用例63請注意擴(kuò)展與使用之間的異同:請注意擴(kuò)展與使用之間的異同: 這兩種關(guān)系都意這兩種關(guān)系都意味著從幾個(gè)用例中抽取那些公共的行為并放入一個(gè)味著從幾個(gè)用例中抽取那些公共的行為并放入一個(gè)單獨(dú)的用例中,而這個(gè)用例被其他用例使用或擴(kuò)展,單獨(dú)的用例中,而這個(gè)用例被其他用例使用或擴(kuò)展,但是,但是,使用和擴(kuò)展的目的是不同的使用和擴(kuò)展的
44、目的是不同的。通常在描述一。通常在描述一般行為的變化時(shí)采用擴(kuò)展關(guān)系;在兩個(gè)或多個(gè)用例般行為的變化時(shí)采用擴(kuò)展關(guān)系;在兩個(gè)或多個(gè)用例中出現(xiàn)中出現(xiàn)重復(fù)描述又想避免這種重復(fù)重復(fù)描述又想避免這種重復(fù)時(shí),可以采用使時(shí),可以采用使用關(guān)系。用關(guān)系。64幾乎在任何情況下都需要使用用例,通過用例可以幾乎在任何情況下都需要使用用例,通過用例可以獲取用戶需求,規(guī)劃和控制項(xiàng)目。獲取用戶需求,規(guī)劃和控制項(xiàng)目。獲取用例是需求獲取用例是需求分析階段的主要工作之一分析階段的主要工作之一,而且是首先要做的工作。,而且是首先要做的工作。大部分用例將在項(xiàng)目的需求分析階段產(chǎn)生,并且隨大部分用例將在項(xiàng)目的需求分析階段產(chǎn)生,并且隨著開發(fā)工
45、作的深入還會發(fā)現(xiàn)更多用例,這些新發(fā)現(xiàn)著開發(fā)工作的深入還會發(fā)現(xiàn)更多用例,這些新發(fā)現(xiàn)的用例都的用例都應(yīng)及時(shí)補(bǔ)充進(jìn)已有的用例集中應(yīng)及時(shí)補(bǔ)充進(jìn)已有的用例集中。用例集中。用例集中的每個(gè)用例都是對系統(tǒng)的一個(gè)的每個(gè)用例都是對系統(tǒng)的一個(gè)潛在的需求潛在的需求。9.6.2 用例建模65UML提供的提供的用例圖用例圖也是建立功能模型的強(qiáng)有力工也是建立功能模型的強(qiáng)有力工具。在具。在UML中把用用例圖建立起來的系統(tǒng)模型稱中把用用例圖建立起來的系統(tǒng)模型稱為為用例模型,用例模型,一個(gè)用例模型由若干幅用例圖組成。一個(gè)用例模型由若干幅用例圖組成。5.3.1 用例圖用例圖5.3.2 用例建模用例建模5.3 5.3 用例模型用例模
46、型功能模型:表明系統(tǒng)應(yīng)該做什么功能模型:表明系統(tǒng)應(yīng)該做什么通常的表示方法:數(shù)據(jù)流圖(通常的表示方法:數(shù)據(jù)流圖(DFD)66用例建模的主要步驟:用例建模的主要步驟:n(1)首先定義一個(gè)系統(tǒng);首先定義一個(gè)系統(tǒng);n(2)并在該系統(tǒng)中確定行為者;并在該系統(tǒng)中確定行為者;n(3)確定用例,描述每一個(gè)用例;確定用例,描述每一個(gè)用例;n(4)確定關(guān)系(包括用例與執(zhí)行者之間的關(guān)系,執(zhí)行者之確定關(guān)系(包括用例與執(zhí)行者之間的關(guān)系,執(zhí)行者之間的關(guān)系,用例之間的關(guān)系);間的關(guān)系,用例之間的關(guān)系);n(5)最后確認(rèn)所建的模型。最后確認(rèn)所建的模型。n其中其中,尋找行為者和用例尋找行為者和用例是關(guān)鍵是關(guān)鍵. n1. 尋找行
47、為者尋找行為者n2. 尋找用例尋找用例67用例建模的主要步驟:用例建模的主要步驟:n(1)首先定義一個(gè)系統(tǒng);首先定義一個(gè)系統(tǒng);n(2)并在該系統(tǒng)中確定行為者;并在該系統(tǒng)中確定行為者;n(3)確定用例,描述每一個(gè)用例;確定用例,描述每一個(gè)用例;n(4)確定關(guān)系(包括用例與執(zhí)行者之間的關(guān)系,執(zhí)行者之確定關(guān)系(包括用例與執(zhí)行者之間的關(guān)系,執(zhí)行者之間的關(guān)系,用例之間的關(guān)系);間的關(guān)系,用例之間的關(guān)系);n(5)最后確認(rèn)所建的模型。最后確認(rèn)所建的模型。n其中其中,尋找行為者和用例尋找行為者和用例是關(guān)鍵是關(guān)鍵. n1. 尋找行為者尋找行為者n2. 尋找用例尋找用例681. 尋找行為者尋找行為者為獲取用例首
48、先要找出系統(tǒng)的行為者,可以通過請為獲取用例首先要找出系統(tǒng)的行為者,可以通過請系統(tǒng)的用戶回答一些問題的辦法來發(fā)現(xiàn)行為者。下系統(tǒng)的用戶回答一些問題的辦法來發(fā)現(xiàn)行為者。下述問題有助于發(fā)現(xiàn)行為者:述問題有助于發(fā)現(xiàn)行為者:誰將使用系統(tǒng)的主要功能(主行為者)?誰將使用系統(tǒng)的主要功能(主行為者)?誰需要借助系統(tǒng)的支持來完成日常工作?誰需要借助系統(tǒng)的支持來完成日常工作?誰來維護(hù)和管理系統(tǒng)(副行為者)?誰來維護(hù)和管理系統(tǒng)(副行為者)?系統(tǒng)控制哪些硬件設(shè)備?系統(tǒng)控制哪些硬件設(shè)備?系統(tǒng)需要與哪些其他系統(tǒng)交互?系統(tǒng)需要與哪些其他系統(tǒng)交互?哪些人或系統(tǒng)對本系統(tǒng)產(chǎn)生的結(jié)果(值)感興趣?哪些人或系統(tǒng)對本系統(tǒng)產(chǎn)生的結(jié)果(值)
49、感興趣?69用例建模的主要步驟:用例建模的主要步驟:n(1)首先定義一個(gè)系統(tǒng);首先定義一個(gè)系統(tǒng);n(2)并在該系統(tǒng)中確定行為者;并在該系統(tǒng)中確定行為者;n(3)確定用例,描述每一個(gè)用例;確定用例,描述每一個(gè)用例;n(4)確定關(guān)系(包括用例與執(zhí)行者之間的關(guān)系,執(zhí)行者之確定關(guān)系(包括用例與執(zhí)行者之間的關(guān)系,執(zhí)行者之間的關(guān)系,用例之間的關(guān)系);間的關(guān)系,用例之間的關(guān)系);n(5)最后確認(rèn)所建的模型。最后確認(rèn)所建的模型。n其中其中,尋找行為者和用例尋找行為者和用例是關(guān)鍵是關(guān)鍵. n1. 尋找行為者尋找行為者n2. 尋找用例尋找用例702. 尋找用例尋找用例一旦找到了行為者,就可以通過請每個(gè)行為者回答一
50、旦找到了行為者,就可以通過請每個(gè)行為者回答下述問題來獲取用例:下述問題來獲取用例:(1)行為者需要系統(tǒng)提供哪些功能?行為者自身需行為者需要系統(tǒng)提供哪些功能?行為者自身需要做什么?要做什么?(2)行為者是否需要讀取、創(chuàng)建、刪除、修改或存行為者是否需要讀取、創(chuàng)建、刪除、修改或存儲系統(tǒng)中的某類信息?儲系統(tǒng)中的某類信息?(3)系統(tǒng)中發(fā)生的事件需要通知行為者嗎?行為者系統(tǒng)中發(fā)生的事件需要通知行為者嗎?行為者需要通知系統(tǒng)某些事情嗎?從功能觀點(diǎn)看,這些事需要通知系統(tǒng)某些事情嗎?從功能觀點(diǎn)看,這些事件能做什么?件能做什么?71(4)行為者的日常工作是否因?yàn)橄到y(tǒng)的新功能而被行為者的日常工作是否因?yàn)橄到y(tǒng)的新功能而
51、被簡化或提高了效率?簡化或提高了效率?(5)還有一些不是針對具體行為者而是針對整個(gè)系還有一些不是針對具體行為者而是針對整個(gè)系統(tǒng)的問題,也能幫助建模者發(fā)現(xiàn)用例,例如:統(tǒng)的問題,也能幫助建模者發(fā)現(xiàn)用例,例如:系統(tǒng)需要哪些輸入輸出?輸入來自何處?輸出到哪系統(tǒng)需要哪些輸入輸出?輸入來自何處?輸出到哪里去?里去?當(dāng)前使用的系統(tǒng)(可能是人工系統(tǒng))存在的主要問當(dāng)前使用的系統(tǒng)(可能是人工系統(tǒng))存在的主要問題是什么?題是什么?注意,最后這兩個(gè)問題注意,最后這兩個(gè)問題并不意味著沒有行為者也可并不意味著沒有行為者也可以有用例以有用例,只是在獲取用例時(shí)還不知道行為者是誰只是在獲取用例時(shí)還不知道行為者是誰。事實(shí)上,一個(gè)
52、用例必須至少與一個(gè)行為者相關(guān)聯(lián)。事實(shí)上,一個(gè)用例必須至少與一個(gè)行為者相關(guān)聯(lián)。72可用的構(gòu)造型元素:可用的構(gòu)造型元素: 當(dāng)描述一般行為時(shí)有例外、任選或異常處理時(shí),當(dāng)描述一般行為時(shí)有例外、任選或異常處理時(shí),采用采用extend(或(或擴(kuò)展擴(kuò)展 )。)。 當(dāng)在兩個(gè)或多個(gè)用例中出現(xiàn)重復(fù)描述(有共用當(dāng)在兩個(gè)或多個(gè)用例中出現(xiàn)重復(fù)描述(有共用行為)而又想避免重復(fù)時(shí),采用行為)而又想避免重復(fù)時(shí),采用include (或(或使用使用 ) 。73某金融貿(mào)易系統(tǒng)用例圖某金融貿(mào)易系統(tǒng)用例圖設(shè)置邊界設(shè)置邊界風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析交易估價(jià)交易估價(jià)進(jìn)行交易進(jìn)行交易超越邊界超越邊界更新帳目更新帳目評價(jià)評價(jià)交易交易人員人員交易交易經(jīng)
53、理經(jīng)理計(jì)帳計(jì)帳系統(tǒng)系統(tǒng)銷售員銷售員extendextendincludeincludeincludeinclude又如:注:注:“設(shè)置邊界設(shè)置邊界”用例是指對某個(gè)特定用戶規(guī)定最大貿(mào)易量用例是指對某個(gè)特定用戶規(guī)定最大貿(mào)易量第第5章章 面向?qū)ο蟮男枨蠓治雒嫦驅(qū)ο蟮男枨蠓治?.1 面向?qū)ο蠓椒▽W(xué)概述面向?qū)ο蠓椒▽W(xué)概述5.2 面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?.3 用例模型用例模型5.4 對象(概念)模型對象(概念)模型5.5 動(dòng)態(tài)模型動(dòng)態(tài)模型5.6 小結(jié)小結(jié)類圖用來描述系統(tǒng)中的類及類和類之間的靜態(tài)關(guān)系。類圖用來描述系統(tǒng)中的類及類和類之間的靜態(tài)關(guān)系。對象模型表現(xiàn)了客觀世界對象模型表現(xiàn)了客觀世界實(shí)體
54、對象實(shí)體對象的相互關(guān)系。通的相互關(guān)系。通常使用常使用UML提供的提供的類圖類圖來建立對象模型。來建立對象模型。5.4 5.4 對象模型對象模型5.4.1類圖的基本符號5.4.2 表示類與類之間關(guān)系的符號類圖用來描述系統(tǒng)中的類及類和類之間的靜態(tài)關(guān)系。類圖用來描述系統(tǒng)中的類及類和類之間的靜態(tài)關(guān)系。對象模型表現(xiàn)了客觀世界對象模型表現(xiàn)了客觀世界實(shí)體對象實(shí)體對象的相互關(guān)系。通的相互關(guān)系。通常使用常使用UML提供的提供的類圖類圖來建立對象模型。來建立對象模型。5.4 5.4 對象模型對象模型5.4.1類圖的基本符號類圖的基本符號5.4.2 表示類與類之間關(guān)系的符號775.4.1 類圖的基本符號類圖的基本符
55、號類圖描述類及類與類之間的靜態(tài)關(guān)系類圖描述類及類與類之間的靜態(tài)關(guān)系。類圖是一種靜。類圖是一種靜態(tài)模型,它是創(chuàng)建其他態(tài)模型,它是創(chuàng)建其他UML圖的基礎(chǔ)。圖的基礎(chǔ)。1. 定義類定義類UML中類的中類的圖形符號為長方形圖形符號為長方形,用兩,用兩條橫線把長方形分成上、中、下條橫線把長方形分成上、中、下3個(gè)個(gè)區(qū)域,分別放類的名字、屬性和服務(wù),區(qū)域,分別放類的名字、屬性和服務(wù),如圖如圖9.5所示。其中下面兩個(gè)區(qū)域可省所示。其中下面兩個(gè)區(qū)域可省略。略。圖圖9.5 表示類的圖表示類的圖類名是類名是一類對象一類對象的名字。名字應(yīng)的名字。名字應(yīng)該是富于描述性的、簡潔的而且該是富于描述性的、簡潔的而且無二義性的。
56、無二義性的。78例如:例如:可見性可見性(可訪問性可訪問性)通常有通常有3種:種:公有的公有的(public)私有的私有的(private) 保護(hù)的保護(hù)的(protected),分別用加號(分別用加號(+)、減號()、減號(-)和井號(和井號(#)表示。)表示。類的完整表示類的完整表示5.4.1類圖的基本符號類圖的基本符號2.定義屬性定義屬性UML描述屬性的語法格式如下:描述屬性的語法格式如下:可見性可見性 屬性名:屬性名: 類型名類型名=初值初值性性質(zhì)串質(zhì)串注意注意:如果未聲明可見性,則表示該屬性的可見如果未聲明可見性,則表示該屬性的可見性尚未定義。沒有默認(rèn)的可見性。性尚未定義。沒有默認(rèn)的可
57、見性。79服務(wù)也就是操作,服務(wù)也就是操作,UML描述操作的語法格式如下:描述操作的語法格式如下:可見性可見性 操作名(參數(shù)表):操作名(參數(shù)表): 返回值類型返回值類型性質(zhì)串性質(zhì)串操作可見性的定義方法與屬性相同。操作可見性的定義方法與屬性相同。參數(shù)表是用逗號分隔的形式參數(shù)的序列。描述一個(gè)參數(shù)表是用逗號分隔的形式參數(shù)的序列。描述一個(gè)參數(shù)參數(shù)的語的語法如下:法如下:參數(shù)名:參數(shù)名: 類型名類型名=默認(rèn)默認(rèn)值值3. 定義服務(wù)定義服務(wù)5.4.1類圖的基本符號類圖的基本符號3.定義服務(wù)定義服務(wù)80Class NameAttributesMethodsClassClass NameAttributesMe
58、thodsClass-&-Object表示屬于該類表示屬于該類的對象的對象也可對類和對象用有區(qū)別的畫法:也可對類和對象用有區(qū)別的畫法:類圖用來描述系統(tǒng)中的類及類和類之間的靜態(tài)關(guān)系。類圖用來描述系統(tǒng)中的類及類和類之間的靜態(tài)關(guān)系。對象模型表現(xiàn)了客觀世界對象模型表現(xiàn)了客觀世界實(shí)體對象實(shí)體對象的相互關(guān)系。通的相互關(guān)系。通常使用常使用UML提供的提供的類圖類圖來建立對象模型。來建立對象模型。5.4 5.4 對象模型對象模型5.4.1類圖的基本符號5.4.2 表示類與類之間關(guān)系的符號表示類與類之間關(guān)系的符號82類圖由類及類與類之間的關(guān)系組成。定義了類之后就可以定類圖由類及類與類之間的關(guān)系組成。定義了類之后
59、就可以定義類與類之間的各種關(guān)系了。類與類之間通常有義類與類之間的各種關(guān)系了。類與類之間通常有關(guān)聯(lián)關(guān)聯(lián)、聚集、聚集、泛化(繼承)泛化(繼承)、依賴依賴和和細(xì)化細(xì)化等等4種關(guān)系。種關(guān)系。關(guān)聯(lián)關(guān)聯(lián)聚集聚集泛化泛化依賴和細(xì)化依賴和細(xì)化5.4.2表示關(guān)系的符號表示關(guān)系的符號83類圖由類及類與類之間的關(guān)系組成。定義了類之后就可以定類圖由類及類與類之間的關(guān)系組成。定義了類之后就可以定義類與類之間的各種關(guān)系了。類與類之間通常有義類與類之間的各種關(guān)系了。類與類之間通常有關(guān)聯(lián)關(guān)聯(lián)、聚集、聚集、泛化(繼承)泛化(繼承)、依賴依賴和和細(xì)化細(xì)化等等4種關(guān)系。種關(guān)系。關(guān)聯(lián)關(guān)聯(lián)(實(shí)直線兩端實(shí)直線兩端)聚集聚集(實(shí)直線實(shí)直線
60、端菱形端菱形)泛化泛化(實(shí)直線實(shí)直線端端三角形三角形)依賴和細(xì)化依賴和細(xì)化(虛直線虛直線)5.4.2表示關(guān)系的符號表示關(guān)系的符號84類1類2角色角色關(guān)聯(lián)名角色角色表示該類在這個(gè)表示該類在這個(gè)關(guān)聯(lián)關(guān)聯(lián)中的作用中的作用。如果沒有顯式。如果沒有顯式標(biāo)出角色名,則意味著用標(biāo)出角色名,則意味著用類名作為角色名類名作為角色名。重?cái)?shù)重?cái)?shù):該類有多少個(gè)對象:該類有多少個(gè)對象與對方的一個(gè)對象連接。與對方的一個(gè)對象連接。關(guān)聯(lián)關(guān)聯(lián)表示兩個(gè)類的對象之間存在某種語義上的聯(lián)系。表示兩個(gè)類的對象之間存在某種語義上的聯(lián)系。重?cái)?shù)1、關(guān)聯(lián)、關(guān)聯(lián)85在表示關(guān)聯(lián)的在表示關(guān)聯(lián)的直線兩端直線兩端可以寫上可以寫上重?cái)?shù)重?cái)?shù)(multipli
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南省紅河州、文山州2026屆高三上學(xué)期第二次復(fù)習(xí)統(tǒng)一檢測語文試卷(含答案)
- 合肥高新區(qū)AV-1地塊整體定位及物業(yè)發(fā)展建議
- 11月通脹數(shù)據(jù)點(diǎn)評:明年需關(guān)注的兩條宏觀物價(jià)線索
- 2026廣西貴港市桂平市尋旺鄉(xiāng)中心幼兒園招聘專任教師、安保人員3人備考考試題庫及答案解析
- 2026年上半年黑龍江省事業(yè)單位公開招聘(4254人)備考考試試題及答案解析
- 室內(nèi)保潔服務(wù)公司安全管理責(zé)任制度
- 2026山東事業(yè)單位統(tǒng)考東營經(jīng)濟(jì)技術(shù)開發(fā)區(qū)招聘2人備考考試題庫及答案解析
- 職場人際關(guān)系管理制度(3篇)
- 上海市執(zhí)法類公務(wù)員招錄體能測評健康承諾書參考考試題庫及答案解析
- 乳制品設(shè)備管理制度(3篇)
- 2024版2026春新教科版科學(xué)三年級下冊教學(xué)課件:第一單元4.磁極與方向含2個(gè)微課視頻
- 培訓(xùn)保安課件
- “黨的二十屆四中全會精神”專題題庫及答案
- 2026屆福建省寧德市三校高三上學(xué)期1月月考?xì)v史試題(含答案)
- 2026年冀教版初一地理上冊期末真題試卷+解析及答案
- 2025年文化產(chǎn)業(yè)版權(quán)保護(hù)與運(yùn)營手冊
- GB/T 17622-2008帶電作業(yè)用絕緣手套
- GB/T 1041-2008塑料壓縮性能的測定
- 400份食物頻率調(diào)查問卷F表
- 滑坡地質(zhì)災(zāi)害治理施工
- 實(shí)驗(yàn)動(dòng)物從業(yè)人員上崗證考試題庫(含近年真題、典型題)
評論
0/150
提交評論