面向?qū)ο蟮姆治雠c設(shè)計(jì)課件-分析篇.ppt_第1頁(yè)
面向?qū)ο蟮姆治雠c設(shè)計(jì)課件-分析篇.ppt_第2頁(yè)
面向?qū)ο蟮姆治雠c設(shè)計(jì)課件-分析篇.ppt_第3頁(yè)
面向?qū)ο蟮姆治雠c設(shè)計(jì)課件-分析篇.ppt_第4頁(yè)
面向?qū)ο蟮姆治雠c設(shè)計(jì)課件-分析篇.ppt_第5頁(yè)
已閱讀5頁(yè),還剩180頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第二部分:分析篇,北京大學(xué)信息科學(xué)技術(shù)學(xué)院研究生課程 面向?qū)ο蟮姆治雠c設(shè)計(jì),主講教師:邵維忠,2,課件說(shuō)明 這組課件是本人多年來(lái)在北京大學(xué)講授“面向?qū)ο蟮姆治雠c設(shè)計(jì)”課程時(shí)制作的,隨著該領(lǐng)域理論與技術(shù)的發(fā)展而逐年改進(jìn)。目前的最新版本所適應(yīng)的教材是邵維忠、楊芙清合寫(xiě)的著作面向?qū)ο蟮姆治雠c設(shè)計(jì)(清華大學(xué)出版社2013年1月)。 為了促進(jìn)學(xué)術(shù)交流和資源共享,現(xiàn)將這套課件無(wú)償提供給國(guó)內(nèi)講授同類(lèi)課程的教師和同行,歡迎他們?cè)诮虒W(xué)工作中使用或作為參考。課件共包括“基礎(chǔ)篇”、“分析篇”和“設(shè)計(jì)篇”三部分,是按照54學(xué)時(shí)研究生課程制作的,各位教師可根據(jù)自己的授課對(duì)象及教學(xué)計(jì)劃,對(duì)原課件進(jìn)行剪裁或重新組織。 北京

2、大學(xué)信息學(xué)院 邵維忠 電子信箱: 2013年7月2日,3,第5章建立需求模型用況圖,5.1 需求分析和系統(tǒng)分析 需求分析的確切含義是對(duì)用戶(hù)需求進(jìn)行分析,旨在產(chǎn)生一份明確、規(guī)范的需求定義。 OOA的主要內(nèi)容是研究問(wèn)題域中與需求有關(guān)的事物,把它們抽象為系統(tǒng)中的對(duì)象,建立類(lèi)圖。確切地講,這些工作應(yīng)該叫做系統(tǒng)分析,而不是嚴(yán)格意義上的需求分析。 早期的OOA缺乏一個(gè)良好的基礎(chǔ)對(duì)需求的規(guī)范描述。,4,問(wèn)題域 (抽象的來(lái)源),OOA模型 (類(lèi)圖),抽象,OOA是將問(wèn)題域中的事物抽象為系統(tǒng)中的對(duì)象,5,5.2 基本思路 問(wèn)題的提出:在系統(tǒng)尚未存在時(shí),如何描繪用戶(hù)需要一個(gè)什么樣的系統(tǒng)?如何規(guī)范地定義用戶(hù)需求?

3、考慮問(wèn)題的思路:把系統(tǒng)看作一個(gè)黑箱,看它對(duì)外部的客觀(guān)世界發(fā)揮什么作用,描述其外部可見(jiàn)的行為。,把內(nèi)外交互情況描述清楚,就確切地定義了系統(tǒng)的需求,6,系統(tǒng)邊界,系統(tǒng)邊界:一個(gè)系統(tǒng)所包含的所有系統(tǒng)成分與系統(tǒng)以外各種事物的分界線(xiàn)。 系統(tǒng):被開(kāi)發(fā)的計(jì)算機(jī)軟硬件系統(tǒng),不是指現(xiàn)實(shí)系統(tǒng)。 系統(tǒng)成分:在OOA和OOD中定義并且在編程時(shí)加以實(shí)現(xiàn)的系統(tǒng)元素對(duì)象,對(duì) 象,對(duì)象,對(duì)象,對(duì)象,對(duì)象,對(duì)象,5.3 系統(tǒng)邊界與參與者,7,現(xiàn)實(shí)世界中的事物與系統(tǒng)之間的關(guān)系分四種情況,8,人員 系統(tǒng)的直接使用者 直接為系統(tǒng)服務(wù)的人員 設(shè)備 與系統(tǒng)直接相聯(lián)的設(shè)備 為系統(tǒng)提供信息 在系統(tǒng)控制下運(yùn)行 不與系統(tǒng)相連的設(shè)備 計(jì)算機(jī)設(shè)備

4、外系統(tǒng) 上級(jí)系統(tǒng) 子系統(tǒng) 其它系統(tǒng),如何發(fā)現(xiàn)參與者 考慮人員、設(shè)備、外系統(tǒng),9,什么是用況 I. Jacobson: 用況是通過(guò)使用系統(tǒng)功能的某些部分而使用系統(tǒng)的一種具體方式。每個(gè)用況包括一個(gè)由參與者發(fā)動(dòng)的完整的事件過(guò)程。它詳細(xì)說(shuō)明了參與者和系統(tǒng)之間發(fā)生的交互。因此,一個(gè)用況是一個(gè)由參與者和系統(tǒng)在一次對(duì)話(huà)中執(zhí)行的特定的相關(guān)事務(wù)序列。全部用況的集合則說(shuō)明了所有可能存在的系統(tǒng)使用方式。 對(duì)象技術(shù)詞典: 1對(duì)一個(gè)系統(tǒng)或者一個(gè)應(yīng)用的一種單一的使用方式所進(jìn)行的描述。 2關(guān)于單個(gè)參與者在與系統(tǒng)的對(duì)話(huà)中所執(zhí)行的處理的行為陳述序列。 UML: 對(duì)系統(tǒng)在與它的參與者交互時(shí)所能執(zhí)行的一組動(dòng)作序列(包括其變體)的描

5、述。,本書(shū)的定義: 用況是對(duì)參與者使用系統(tǒng)的一項(xiàng)功能時(shí)所進(jìn)行的交互過(guò)程的描述,其中包含由雙方交替執(zhí)行的一系列動(dòng)作。,5.4 用況(use case),10,術(shù)語(yǔ)“use case”的準(zhǔn)確含義使用情況 是對(duì)一項(xiàng)系統(tǒng)功能使用情況的一般描述,它對(duì)于每一次使用都普遍適應(yīng),既不是應(yīng)用實(shí)例,也不是舉例說(shuō)明。 因此譯為“用況”,而不是“用例”。 幾點(diǎn)說(shuō)明: (1)一個(gè)用況只描述參與者對(duì)單獨(dú)一項(xiàng)系統(tǒng)功能的使用情況; (2)通常是平鋪直敘的文字描述,UML也允許其他描述方式; (3)陳述參與者和系統(tǒng)在交互過(guò)程中雙方所做的事; (4)所描述的交互既可能由參與者發(fā)起也可能由系統(tǒng)發(fā)起 ; (5)描述彼此為對(duì)方直接地做

6、什么事,不描述怎么做; (6)描述應(yīng)力求準(zhǔn)確,允許概括,但不要把雙方的行為混在一起; (7)一個(gè)用況可以由多種參與者分別參與或共同參與。,11,內(nèi)容與書(shū)寫(xiě)格式 : 名稱(chēng) 行為陳述(分左右欄) 調(diào)用語(yǔ)句 控制語(yǔ)句 括號(hào)或標(biāo)號(hào),12,如何定義用況,針對(duì)單個(gè)用況的描述策略: 把自己當(dāng)作參與者,與設(shè)想中的系統(tǒng)進(jìn)行交互??紤]:交互的目的是什么?需要向系統(tǒng)輸入什么信息?希望由系統(tǒng)進(jìn)行什么處理并從它得到何種結(jié)果?把上述交互過(guò)程描述出來(lái) 。 定義系統(tǒng)中所有的用況: (1)全面地了解和收集用戶(hù)所要求的各項(xiàng)系統(tǒng)功能,找出所有的參與者,了解與各項(xiàng)功能相關(guān)的業(yè)務(wù)流程; (2)把用戶(hù)提出的功能組織成適當(dāng)?shù)膯挝?,每一?xiàng)功

7、能完成一項(xiàng)完整而相對(duì)獨(dú)立的工作; (3)窮舉每一類(lèi)參與者所使用的每一項(xiàng)系統(tǒng)功能,定義相應(yīng)的用況; (4)檢查用戶(hù)對(duì)系統(tǒng)的各項(xiàng)功能需求是否都通過(guò)相應(yīng)的用況做了描述。,13,參與者,基用況,include,extend,include,用況,基用況,基用況,被包含用況,延伸用況,用況,5.5 用況圖,參與者,參與者,模型元素: 參與者 用況 延伸 包含 泛化,5.5 用況圖,14,用況之間的關(guān)系 包含、延伸、泛化,延伸,包含,問(wèn)題: 延伸與包含的相似性 延伸的方向問(wèn)題 “條件”和“延伸點(diǎn)”問(wèn)題 “泛化”問(wèn)題 系統(tǒng)邊界問(wèn)題,15,用況的兩種復(fù)雜情況 1、兩個(gè)(或多個(gè))參與者共享一個(gè)用況 不同種類(lèi)的參

8、與者可能都要使用某一項(xiàng)系統(tǒng)功能,因此它們可能共享同一個(gè)用況,16,2、一個(gè)用況的執(zhí)行,可能需要兩個(gè)(甚至多個(gè))參與者同時(shí)與系統(tǒng)交互。,17,用況圖的開(kāi)發(fā)過(guò)程 確定系統(tǒng)邊界 發(fā)現(xiàn)參與者 定義用況 建立用況之間的關(guān)系 確定參與者和用況之間的關(guān)系 繪制用況圖,使用用況圖的幾條建議 最重要的工作是對(duì)用況的描述 不要過(guò)分深入地描述系統(tǒng)內(nèi)部的行為細(xì)節(jié) 運(yùn)用最主要概念,加強(qiáng)用況內(nèi)容的描述 不要陷入延伸與包含、延伸點(diǎn)、泛化等問(wèn)題的爭(zhēng)論和辨別 了解用況的局限性主要作用是描述功能需求,5.6 開(kāi)發(fā)過(guò)程與建議,18,概念: 對(duì)象(object)是系統(tǒng)中用來(lái)描述客觀(guān)事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位,由一組屬

9、性和施加于這組屬性的一組操作構(gòu)成。 類(lèi)(class)是具有相同屬性和操作的一組對(duì)象的集合,它為屬于該類(lèi)的全部對(duì)象提供了統(tǒng)一的抽象描述,它由一個(gè)類(lèi)名、一組屬性和一組操作構(gòu)成。 類(lèi)和對(duì)象的關(guān)系集合與成員,對(duì)象是類(lèi)的實(shí)例,第6章 發(fā)現(xiàn)對(duì)象,定義對(duì)象類(lèi),6.1 對(duì)象和類(lèi)的概念及其運(yùn)用,19,主動(dòng)對(duì)象(active object)至少有一個(gè)操作不需要接收消息就能主動(dòng)執(zhí)行的對(duì)象 用于描述具有主動(dòng)行為的事物 主動(dòng)對(duì)象的類(lèi)叫做主動(dòng)類(lèi)(active class) 被動(dòng)對(duì)象(passive object) 每個(gè)操作都必須在消息的驅(qū)動(dòng)下才能執(zhí)行的對(duì)象,20,類(lèi)的語(yǔ)義,OO方法中的類(lèi)在不同的語(yǔ)境下有兩種不同的語(yǔ)義:

10、1. 一個(gè)類(lèi)代表由它的全部對(duì)象實(shí)例所構(gòu)成的群體 日常語(yǔ)言表達(dá)中的例子: “公司里有管理人員、技術(shù)人員和市場(chǎng)人員” “馬路上汽車(chē)很多” 在OO模型中: 每個(gè)類(lèi)都是由它的全部對(duì)象實(shí)例所構(gòu)成的集合 類(lèi)代表了它的全部對(duì)象實(shí)例。,2. 一個(gè)類(lèi)代表屬于該類(lèi)的任意一個(gè)對(duì)象實(shí)例 從大量的個(gè)體中抽象出一個(gè)概念,再運(yùn)用這個(gè)概念時(shí)就可以代表其中的任何一個(gè)個(gè)體,例如: “學(xué)生有一個(gè)學(xué)號(hào),屬于一個(gè)班級(jí),要上課” 在OO系統(tǒng)模型中定義了一個(gè)類(lèi),它就可以代表它的任何一個(gè)對(duì)象實(shí)例,例如: 汽車(chē)與發(fā)動(dòng)機(jī)之間的聚合關(guān)系,表示任何一輛汽車(chē)都有一臺(tái)發(fā)動(dòng)機(jī),任何一臺(tái)發(fā)動(dòng)機(jī)都可以裝在01輛汽車(chē)上,21,在類(lèi)的抽象層次建模,理由: (1)

11、充分性:模型中一個(gè)類(lèi)描述了它的全部對(duì)象實(shí)例 (2)必要性:個(gè)別對(duì)象實(shí)例不能代表其他對(duì)象實(shí)例 (3)符合人類(lèi)的思維方式:在概念層次上表達(dá)描述事物規(guī)律 (4)與OOPL保持良好的對(duì)應(yīng) (5)避免建模概念復(fù)雜化 (6)消除抽象層次的混亂,22,如何運(yùn)用類(lèi)和對(duì)象的概念,從對(duì)象出發(fā)認(rèn)識(shí)問(wèn)題域 將問(wèn)題域中的事物抽象為對(duì)象; 將具有共同特征的對(duì)象抽象為類(lèi) 用類(lèi)以及它們之間的關(guān)系構(gòu)成整個(gè)系統(tǒng)模型;,歸納,23,類(lèi) 名,壓縮方式,類(lèi) 名,屬性名:類(lèi)型名 ,操作名() ,展開(kāi)方式,6.2 表示法 在模型中用類(lèi)符號(hào)來(lái)表示一個(gè)類(lèi) 它代表了屬于該類(lèi)的全部對(duì)象實(shí)例,24,對(duì)象名:類(lèi)名,壓縮方式,屬性名=值 ,UML的對(duì)象

12、表示法:,細(xì)節(jié)方式,對(duì)象名:類(lèi)名,25,6.3 發(fā)現(xiàn)對(duì)象,研究問(wèn)題域 親臨現(xiàn)場(chǎng)深入調(diào)查研究 直接觀(guān)察并向用戶(hù)及相關(guān)的業(yè)務(wù)人員進(jìn)行調(diào)查和交流,考察問(wèn)題域中各種各樣的事物、它們的特征及相互關(guān)系 聽(tīng)取問(wèn)題域?qū)<业囊?jiàn)解 領(lǐng)域?qū)<野夹g(shù)人員、管理者、老職員和富有經(jīng)驗(yàn)的工人等 閱讀相關(guān)材料 閱讀各種與問(wèn)題域有關(guān)的材料,學(xué)習(xí)相關(guān)行業(yè)和領(lǐng)域的基本知識(shí) 借鑒以往的系統(tǒng) 查閱以往在該問(wèn)題域中開(kāi)發(fā)過(guò)的同類(lèi)系統(tǒng)的分析文檔 ,吸取經(jīng)驗(yàn),發(fā)現(xiàn)可以復(fù)用的類(lèi),26,正確地運(yùn)用抽象原則 對(duì)什么進(jìn)行抽象問(wèn)題域 當(dāng)前目標(biāo)系統(tǒng)責(zé)任,忽略與系統(tǒng)責(zé)任無(wú)關(guān)的事物 只注意與之有關(guān)的事物 ,抽象為系統(tǒng)中的對(duì)象 例如:學(xué)校的教師、學(xué)生、教務(wù)員

13、 和 警衛(wèi) 忽略與系統(tǒng)責(zé)任無(wú)關(guān)的事物特征 只注意與之有關(guān)的特征,抽象為對(duì)象的屬性或操作 例如:教師的專(zhuān)業(yè)、職稱(chēng) 和 身高、體重,正確地提煉對(duì)象 例如:對(duì)書(shū)的不同抽象 在圖書(shū)館管理系統(tǒng)中以一本書(shū)作為一個(gè)對(duì)象實(shí)例 在書(shū)店管理系統(tǒng)中以一種書(shū)作為一個(gè)對(duì)象實(shí)例,27,由系統(tǒng)管理或使用其信息,或者在系統(tǒng)中呈現(xiàn)某些行為的各類(lèi)人員,由系統(tǒng)管理或使用其信息,或者在系統(tǒng)中呈現(xiàn)某些行為的各類(lèi)組織,由系統(tǒng)進(jìn)行管理的各種物品,其他,策略與啟發(fā),(1)考慮問(wèn)題域:,抽象事物,事件,文件,結(jié)構(gòu),人員,組織,物品,設(shè)備,由系統(tǒng)進(jìn)行管理或控制,或者在系統(tǒng)中呈現(xiàn)某些行為的各種設(shè)備,例如:課程、計(jì)劃、交易、賬戶(hù),需要長(zhǎng)期記憶的事件

14、例如:銀行的取款、存款,保險(xiǎn)公司的索賠,車(chē)輛管理中的駕駛違章,泛指各種表格、檔案、證件、票據(jù)等文件例如:業(yè)務(wù)報(bào)表,人事檔案,身份證,合同,商品訂單等 注意三個(gè)問(wèn)題:非基礎(chǔ)數(shù)據(jù),同一事物的重復(fù)描述,多種事物信息組合,從結(jié)構(gòu)得到啟發(fā),聯(lián)想到新的對(duì)象,其他一切有助于發(fā)現(xiàn)對(duì)象的事物,28,(2)考慮系統(tǒng)邊界: 考察在系統(tǒng)邊界以外與系統(tǒng)交互的各類(lèi)參與者 考慮通過(guò)那些對(duì)象處理這些參與者的交互,人員,設(shè)備,外系統(tǒng),(3)考慮系統(tǒng)責(zé)任: 檢查每一項(xiàng)功能需求是否已有相應(yīng)的對(duì)象提供, 發(fā)現(xiàn)遺漏的對(duì)象,29,審查與篩選,(1)舍棄無(wú)用的對(duì)象 通過(guò)屬性判斷: 是否通過(guò)屬性記錄了某些有用的信息? 通過(guò)操作判斷: 是否通

15、過(guò)操作提供了某些有用的功能? 二者都不是無(wú)用,30,(2)對(duì)象的精簡(jiǎn) 只有一個(gè)屬性的對(duì)象,班級(jí) ,班主任 姓名,1,1,班級(jí) 班主任姓名 ,31,(3)與實(shí)現(xiàn)條件有關(guān)的對(duì)象 例如:與 圖形用戶(hù)界面(GUI) 數(shù)據(jù)管理系統(tǒng) 硬件 及 操作系統(tǒng) 有關(guān)的對(duì)象 推遲到OOD考慮,32,6.4 對(duì)象分類(lèi),(1)將對(duì)象抽象為類(lèi),用類(lèi)表示它的全部對(duì)象 (2)審查和調(diào)整 類(lèi)的屬性或操作不適合該類(lèi)的全部對(duì)象實(shí)例 例:“汽車(chē)”類(lèi)的“乘客限量”屬性 進(jìn)一步劃分特殊類(lèi) 屬性及操作相同的類(lèi) 經(jīng)過(guò)抽象,差別很大的事物可能只保留相同的特征 考慮能否合并為一個(gè)類(lèi) 屬性及操作相似的類(lèi) 考慮能否提升出一個(gè)一般類(lèi) 同一事物的重復(fù)描

16、述 例:“職員”和“工作證” 取消其中一個(gè),33,(3)類(lèi)的命名 類(lèi)的名字應(yīng)適合該類(lèi)(及其特殊類(lèi))的全部對(duì)象實(shí)例 反映個(gè)體而不是群體 使用名詞 或 帶定語(yǔ)的名詞 避免市井俚語(yǔ)和無(wú)意義的符號(hào) 使用問(wèn)題域通用的詞匯 使用便于交流的語(yǔ)言文字 可以用本地文字和英文雙重命名,34,屬性(attribute)是用來(lái)描述對(duì)象靜態(tài)特征的一個(gè)數(shù)據(jù)項(xiàng)。 實(shí)例屬性(instance attribute)和類(lèi)屬性(class attribute)的區(qū)別 例如:儀表類(lèi) 輸入電壓、功率及各種規(guī)定的質(zhì)量指標(biāo)類(lèi)屬性 編號(hào)、出廠(chǎng)日期、精度等實(shí)際性能參數(shù)實(shí)例屬性,第7章 定義對(duì)象的屬性和操作,7.1 屬性和操作,35,操作(op

17、eration)是用來(lái)描述對(duì)象動(dòng)態(tài)特征(行為)的一個(gè)動(dòng)作序列 。 近義詞:方法(method),服務(wù)(service) 被動(dòng)操作(passive operation): 只有接收到消息才能執(zhí)行的操作 編程語(yǔ)言中的函數(shù)、過(guò)程等被動(dòng)成分 主動(dòng)操作(active operation): 不需要接收消息就能主動(dòng)執(zhí)行的操作 編程語(yǔ)言中的進(jìn)程、線(xiàn)程等主動(dòng)成分,36,實(shí)現(xiàn)級(jí)細(xì)節(jié)方式,分析級(jí)細(xì)節(jié)方式,7.2 屬性和操作的表示法,類(lèi) 名,屬性名:類(lèi)型名=值 ,操作名(參數(shù)表):返回類(lèi)型 ,類(lèi) 名,屬性名:類(lèi)型名 ,操作名() ,37,7.3 定義屬性,(1)策略與啟發(fā) 按常識(shí)這個(gè)對(duì)象應(yīng)該有哪些屬性? 人姓名、地

18、址、出生年月 在當(dāng)前的問(wèn)題域中,對(duì)象應(yīng)該有哪些屬性? 商品條形碼 根據(jù)系統(tǒng)責(zé)任,這個(gè)對(duì)象應(yīng)具有哪些屬性? 乘客手機(jī)號(hào)碼 建立這個(gè)對(duì)象是為了保存和管理哪些信息? 物資型號(hào)、規(guī)格、庫(kù)存量 為實(shí)現(xiàn)操作的功能,需要增設(shè)哪些屬性? 傳感器(信號(hào)采集功能)時(shí)間間隔 是否需要增加描述對(duì)象狀態(tài)的屬性? 設(shè)備狀態(tài) 用什么屬性表示關(guān)聯(lián)和聚合? 課程任課教師,汽車(chē)發(fā)動(dòng)機(jī),38,(2)審查與篩選 是否體現(xiàn)了以系統(tǒng)責(zé)任為目標(biāo)的抽象 例:書(shū)重量? 是否描述對(duì)象本身的特征 例:課程電話(huà)號(hào)碼? 是否可通過(guò)繼承得到? 是否可從其他屬性直接導(dǎo)出?,(3)推遲到OOD考慮的問(wèn)題 規(guī)范化問(wèn)題 對(duì)象標(biāo)識(shí) 性能問(wèn)題,(4)屬性的命名與定

19、位 命名:原則與類(lèi)的命名相同 定位:針對(duì)所描述的對(duì)象 適合類(lèi)(及其子類(lèi))的全部對(duì)象實(shí)例,39,(1)對(duì)象行為分類(lèi) 系統(tǒng)行為 例:創(chuàng)建、刪除、復(fù)制、轉(zhuǎn)存 對(duì)象自身的行為算法簡(jiǎn)單的操作 例:讀、寫(xiě)屬性值 對(duì)象自身的行為算法復(fù)雜的操作 計(jì)算或監(jiān)控,7.4 定義操作,40,考慮系統(tǒng)責(zé)任 有哪些功能要求在本對(duì)象提供? 考慮問(wèn)題域 對(duì)象在問(wèn)題域?qū)?yīng)的事物有哪些行為? 分析對(duì)象狀態(tài) 對(duì)象狀態(tài)的轉(zhuǎn)換是由哪些操作引起的? 追蹤操作的執(zhí)行路線(xiàn) 模擬操作的執(zhí)行,并在整個(gè)系統(tǒng)中跟蹤,(3)策略與啟發(fā),41,審查對(duì)象的每個(gè)操作是否真正有用 是否直接提供系統(tǒng)責(zé)任所要求的某項(xiàng)功能? 或者 響應(yīng)其它操作的請(qǐng)求間接地完成這種功

20、能的某些局部操作? 調(diào)整取消無(wú)用的操作 審查操作是不是高內(nèi)聚的 一個(gè)操作應(yīng)該只完成一項(xiàng)單一的、完整的功能 調(diào)整拆分 或 合并,(3)審查與調(diào)整,42,考慮問(wèn)題域 對(duì)象行為是被引發(fā)的, 還是主動(dòng)呈現(xiàn)的?,(4)認(rèn)識(shí)對(duì)象的主動(dòng)行為,操作執(zhí)行路線(xiàn)逆向追蹤,與參與者直接交互的對(duì)象操作,43,問(wèn)題:分析階段為什么要給出操作流程? 關(guān)于OOA/OOD分工的兩種不同觀(guān)點(diǎn),(5)操作過(guò)程描述 可采用流程圖或活動(dòng)圖,yes,no,動(dòng)作陳述框,在框內(nèi)填寫(xiě)要執(zhí)行的動(dòng)作。,條件判斷框,給出一個(gè)判斷條件。,轉(zhuǎn)接,用于連接各個(gè)框, 表示它們之間的轉(zhuǎn)接關(guān)系。,入口/出口標(biāo)記,指出操作的開(kāi)始或結(jié)束。,流程圖:,活動(dòng)圖:在流程

21、圖基礎(chǔ)上進(jìn)行了一些擴(kuò)展,有更強(qiáng)的描述能力(第9章介紹),44,命名:動(dòng)詞或動(dòng)賓結(jié)構(gòu) 定位: 與實(shí)際事物一致 例:售貨員售貨,商品售出 在一般-特殊結(jié)構(gòu)中的位置 適合類(lèi)的全部對(duì)象實(shí)例,(6)操作的命名和定位,從主語(yǔ)-謂語(yǔ)-賓語(yǔ)結(jié)構(gòu)看對(duì)象操作的設(shè)置 “售貨員銷(xiāo)售商品”操作應(yīng)該放在哪里?,45,7.5 接口的概念及用途,早期的面向?qū)ο蠓椒ú](méi)有把接口作為正式的OO概念 和系統(tǒng)成分,只是用來(lái)解釋OO概念 “操作是對(duì)象(類(lèi))對(duì)外提供的訪(fǎng)問(wèn)接口” 20世紀(jì)90年代中后期,接口才作為一種系統(tǒng)成分出現(xiàn)在OOPL中,并且被UML作為一種模型元素 UML對(duì)接口的定義及解釋?zhuān)?“接口(interface)是一種類(lèi)目

22、(classifier) ,它表示對(duì)一組緊湊的公共特征和職責(zé)的聲明。一個(gè)接口說(shuō)明了一個(gè)合約;實(shí)現(xiàn)接口的任何類(lèi)目的實(shí)例必須履行這個(gè)合約。” “一個(gè)給定的類(lèi)目可以實(shí)現(xiàn)多個(gè)接口,而一個(gè)接口可以由多個(gè)不同的類(lèi)目來(lái)實(shí)現(xiàn)?!?46,為什么引入接口的概念,47,接口(interface) 是由一組操作所形成的一個(gè)集合,它由一個(gè)名字和代表其中每個(gè)操作的特征標(biāo)記構(gòu)成。 特征標(biāo)記(signature) 代表了一個(gè)操作,但并不具體地定義操作的實(shí)現(xiàn) 特征標(biāo)記 := (:,:):,interface 接口名稱(chēng) 操作1() 操作n(),表示法(詳細(xì)方式):,48,接口與類(lèi)的關(guān)系 接口由某些類(lèi)實(shí)現(xiàn)(提供),被另外某些類(lèi)使用

23、(需要) 前者與接口的關(guān)系稱(chēng)為實(shí)現(xiàn)(realization) 后者與接口的關(guān)系稱(chēng)為使用(use),interface 銷(xiāo)售 查詢(xún)() 售出(),售貨員,商品,使用,實(shí)現(xiàn),同一個(gè)接口 對(duì)實(shí)現(xiàn)者而言是供接口(provided interface) 對(duì)使用者而言是需接口(required interface),49,表示法(簡(jiǎn)略方式): 托球-托座,使用者,提供者,提供者的供接口(托球) 使用者的需接口(托座),50,在一個(gè)類(lèi)上可以畫(huà)出它所有的供接口和需接口,類(lèi),供接口,需接口,一個(gè)接口可以由多個(gè)類(lèi)使用,它也可以由多個(gè)類(lèi)實(shí)現(xiàn),類(lèi)B,類(lèi)D,類(lèi)A,類(lèi)E,類(lèi)C,多個(gè)類(lèi)可以共同使用同一個(gè)接口 正如對(duì)象的一個(gè)

24、操作可以被多個(gè)對(duì)象調(diào)用,多個(gè)類(lèi)都可以分別實(shí)現(xiàn)同一個(gè)接口 這里表示它們可以 相互替換,51,接口與類(lèi)的區(qū)別 類(lèi)既有屬性又有操作; 接口只是聲明了一組操作,沒(méi)有屬性。 在一個(gè)類(lèi)中定義了一個(gè)操作,就要在這個(gè)類(lèi)中真正地實(shí)現(xiàn)它; 接口中的操作只是一個(gè)聲明,不需要在接口中加以實(shí)現(xiàn)。 類(lèi)可以創(chuàng)建對(duì)象實(shí)例; 接口則沒(méi)有任何實(shí)例。,引入接口概念的好處 在接口的使用者和提供者之間建立了一種靈活的銜接機(jī)制,有利于對(duì)類(lèi)、構(gòu)件等軟件成分進(jìn)行靈活的組裝和復(fù)用。 將操作的聲明與實(shí)現(xiàn)相分離,隔離了接口的使用者和提供者的相互影響。使用者只需關(guān)注接口的聲明,不必關(guān)心它的實(shí)現(xiàn);提供者不必關(guān)心哪些類(lèi)將使用這個(gè)接口,只是根據(jù)接口的聲明

25、中所承諾的功能來(lái)實(shí)現(xiàn)它,并且可以有多種不同的實(shí)現(xiàn)。,接口概念對(duì)描述構(gòu)件之間的關(guān)系具有更重要的意義 教材第9章將做進(jìn)一步介紹,52,接口與多繼承的比較 接口果真能部分地解決多繼承問(wèn)題嗎?,interface 接口 A 操作A-1() 操作A-n(),interface 接口 B 操作B-1() 操作B-m(),類(lèi) C ,操作A-1() 操作A-n() 操作B-1() 操作B-m(),53,對(duì)象之間的四種關(guān)系 1一般-特殊關(guān)系 又稱(chēng)繼承關(guān)系,反映事物的分類(lèi)。由這種關(guān)系可以形成一般-特殊結(jié)構(gòu)。 2整體-部分關(guān)系即聚合關(guān)系。反映事物的構(gòu)成。由這種關(guān)系可以形成整體-部分結(jié)構(gòu)。 3關(guān)聯(lián)關(guān)系對(duì)象實(shí)例集合(類(lèi)

26、)上的一個(gè)關(guān)系,其中的元素提供了被開(kāi)發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。 4消息關(guān)系 對(duì)象之間的動(dòng)態(tài)聯(lián)系,即一個(gè)對(duì)象在執(zhí)行其操作時(shí),請(qǐng)求其他對(duì)象為它執(zhí)行某個(gè)操作,或者向其他對(duì)象傳送某些信息。反映了事物之間的行為依賴(lài)關(guān)系。,這些關(guān)系形成了類(lèi)圖的關(guān)系層,第8章定義對(duì)象間的關(guān)系,54,概念同義詞 和 近義詞 繼承(inheritance)是描述一般類(lèi)和特殊類(lèi)之間關(guān)系的最傳統(tǒng)、最經(jīng)典的術(shù)語(yǔ)。有時(shí)作為動(dòng)詞或形容詞出現(xiàn)。 一般-特殊(generalization-specialization)含義最準(zhǔn)確,而且不容易產(chǎn)生誤解,恰切地反映了一般類(lèi)(概念)和特殊類(lèi)(概念)之間的相對(duì)(二元)關(guān)系;也用于描述結(jié)構(gòu),

27、即一般-特殊結(jié)構(gòu)。缺點(diǎn)是書(shū)寫(xiě)和閱讀比較累贅。 泛化(generalization)取“一般-特殊” 的一半,是UML的做法。比較簡(jiǎn)練,但是只反映了問(wèn)題的一方面。作為關(guān)系的名稱(chēng)尚可,說(shuō)結(jié)構(gòu)是一個(gè)“泛化”則很勉強(qiáng)。 分類(lèi)(classification)接近人類(lèi)日常的語(yǔ)言習(xí)慣, 體現(xiàn)了類(lèi)的層次劃分,也作為結(jié)構(gòu)的名稱(chēng)。在許多的場(chǎng)合被作為一種原則。 本書(shū)主要采用“一般-特殊”這個(gè)術(shù)語(yǔ),8.1一般-特殊結(jié)構(gòu),相關(guān)概念:一般類(lèi)、特殊類(lèi)、繼承、多繼承、多態(tài) 語(yǔ)義:“is a kind of ”,55,一般-特殊關(guān)系(繼承關(guān)系)是類(lèi)之間的一種二元關(guān)系 是一種基本的模型元素; 由這種關(guān)系所形成的結(jié)構(gòu)是一般-特殊結(jié)

28、構(gòu) 是一種復(fù)合的模型成分。,人員,股東,職員,顧客,股東職員,例:,這是1個(gè)一般-特殊結(jié)構(gòu) 包含5個(gè)一般特殊關(guān)系,56,定義1:如果類(lèi)A具有類(lèi)B的全部屬性和全部操作,而且具有自己特有的某些屬性或操作,則A叫做B的特殊類(lèi),B叫做A的一般類(lèi)。一般類(lèi)與特殊類(lèi)又稱(chēng)父類(lèi)與子類(lèi)。,定義2:如果類(lèi)A的全部對(duì)象都是類(lèi)B的對(duì)象,而且類(lèi)B中存在不屬于類(lèi)A的對(duì)象,則A是B的特殊類(lèi),B是A的一般類(lèi)。 書(shū)中證明,以上兩種定義是等價(jià)的,一般類(lèi)和特殊類(lèi)的兩個(gè)定義,57,表示法,一般類(lèi),特殊類(lèi),特殊類(lèi),集中式,一般類(lèi),特殊類(lèi),特殊類(lèi),分散式,58,如何發(fā)現(xiàn)一般-特殊結(jié)構(gòu),(1)學(xué)習(xí)當(dāng)前領(lǐng)域的分類(lèi)學(xué)知識(shí) (2)按常識(shí)考慮事物的

29、分類(lèi) (3)根據(jù)一般類(lèi)和特殊類(lèi)的兩種定義 (4)考察屬性與操作的適應(yīng)范圍,59,(5)考慮領(lǐng)域范圍內(nèi)的復(fù)用,現(xiàn)鈔收款機(jī) A B C D E F X Y Z,60,(1)問(wèn)題域是否需要這樣的分類(lèi)?(例:書(shū)線(xiàn)裝書(shū)) (2)系統(tǒng)責(zé)任是否需要這樣的分類(lèi)?(例:職員本市職員) (3)是否符合分類(lèi)學(xué)的常識(shí)?(用“is a kind of ”來(lái)衡量),審查與調(diào)整,(4)是否真正的繼承了一些屬性或操作?,61,一般-特殊結(jié)構(gòu)的簡(jiǎn)化 (1)取消沒(méi)有特殊性的特殊類(lèi),運(yùn)輸工具 發(fā)動(dòng)機(jī) 載重量 速度 ,飛機(jī) 飛行高度 自動(dòng)導(dǎo)航 ,汽車(chē),運(yùn)輸 ,62,(2)增加屬性簡(jiǎn)化一般特殊結(jié)構(gòu),人員 ,男 人 ,女 人 ,中國(guó)人

30、,美國(guó)人 ,日本人 ,63,(3)取消用途單一的一般類(lèi),減少繼承層次 一般類(lèi)存在的理由: * 有兩個(gè)或兩個(gè)上以上的特殊類(lèi) * 需要用它創(chuàng)建對(duì)象實(shí)例 * 有助于軟件復(fù)用,64,多繼承:允許一個(gè)特殊類(lèi)具有一個(gè)以上一般類(lèi)的繼承模式,65,多態(tài):,多態(tài)是指同一個(gè)命名可具有不同的語(yǔ)義。OO方法中,常指在一般類(lèi)中定義的屬性或操作被特殊類(lèi)繼承之后,可以具有不同的數(shù)據(jù)類(lèi)型或表現(xiàn)出不同的行為。,66,概念: 聚合(aggregation),組合(composition) 整體-部分(whole-part ) 整體對(duì)象,部分對(duì)象 語(yǔ)義:“a part of”或“has a” 聚合關(guān)系描述了對(duì)象實(shí)例之間的構(gòu)成情況,

31、然而它的定義卻是在類(lèi)的抽象層次給出的。 從集合論的觀(guān)點(diǎn)看聚合關(guān)系 整體-部分關(guān)系(聚合關(guān)系)是兩個(gè)類(lèi)之間的二元關(guān)系,其中一個(gè)類(lèi)的某些對(duì)象是另一個(gè)類(lèi)的某些對(duì)象的組成部分。 整體-部分結(jié)構(gòu)是把若干具有聚合關(guān)系的類(lèi)組織在一起所形成的結(jié)構(gòu)。它是一個(gè)以類(lèi)為結(jié)點(diǎn),以聚合關(guān)系為邊的連通有向圖。,8.2 整體-部分結(jié)構(gòu),一種基本的模型元素,由若干聚合關(guān)系形成的復(fù)合模型成分,67,可以 正確 有問(wèn)題,若類(lèi) A 的對(duì)象 a 是類(lèi) B 對(duì)象 b 的一個(gè)組成部分 判斷以下幾種說(shuō)法正確與否: “對(duì)象 b 和對(duì)象 a 之間具有聚合關(guān)系” “類(lèi) B 和類(lèi) A 之間具有聚合關(guān)系” “類(lèi) A 是類(lèi) B 的一個(gè)組成部分”,組合(

32、composition)是聚合關(guān)系的一種特殊情況,它表明整體對(duì)于部分的強(qiáng)擁有關(guān)系,即整體與部分之間具有緊密、固定的組成關(guān)系。 UML把聚合定義為關(guān)聯(lián)的一種特殊情況 而組合關(guān)系是聚合關(guān)系的特殊情況,68,數(shù)量,數(shù)量,數(shù)量,數(shù)量,整體對(duì)象類(lèi),部分對(duì)象類(lèi),整體對(duì)象類(lèi),部分對(duì)象類(lèi),表示法,在連接符兩端通過(guò)數(shù)字或者符號(hào)給出關(guān)系雙方對(duì)象實(shí)例的數(shù)量約束,稱(chēng)為多重性(multiplicity) 確定的整數(shù) 給出確定的數(shù)量 例如: 1,2 下界上界 給出一個(gè)范圍 例如: 01 ,14 * 表示多個(gè),數(shù)量不確定 下界* 表示多個(gè),下界確定 例如 0* , 1* 多重性有以下3種情況: 一對(duì)一,一對(duì)多,多對(duì)多,69

33、,如何發(fā)現(xiàn)整體-部分結(jié)構(gòu) 基本策略 考察問(wèn)題域中各種具有構(gòu)成關(guān)系的事物,(1)物理上的整體事物和它的組成部分 例:機(jī)器、設(shè)備和它的零部件 (2)組織機(jī)構(gòu)和它的下級(jí)組織及部門(mén) 例:公司與子公司、部門(mén) (3)團(tuán)體(組織)與成員 例:公司與職員 (4)一種事物在空間上包容其它事物 例:生產(chǎn)車(chē)間與機(jī)器 (5)抽象事物的整體與部分 例:學(xué)科與分支學(xué)科、法律與法律條款 (6)具體事物和它的某個(gè)抽象方面 例:人員與身份、履歷,70,審查與篩選,(1)是否屬于問(wèn)題域? 例:公司職員與家庭 (2)是不是系統(tǒng)責(zé)任的需要? 例:?jiǎn)T工與工會(huì) (3)部分對(duì)象是否有一個(gè)以上的屬性? 例:汽車(chē)與車(chē)輪(規(guī)格) (4)是否有明

34、顯的整體-部分關(guān)系? 例:學(xué)生與課程,71,整體-部分結(jié)構(gòu)的高級(jí)應(yīng)用技巧,(1)簡(jiǎn)化對(duì)象的定義, ,飛 機(jī),有關(guān)發(fā)動(dòng)機(jī)的屬性與操作,有關(guān)駕駛室的屬性與操作,72,(2)支持軟件復(fù)用,起重機(jī),送料車(chē),機(jī)床,鉆床,刨床,車(chē)床,73,(3)表示數(shù)量不定的組成部分,訂 單 編號(hào) 賣(mài)方 買(mǎi)方 總金額 成交日期 ,一個(gè)訂單可以包含一項(xiàng)到多達(dá)幾十項(xiàng)商品,提問(wèn): 能否不要訂單行,直接用商品作為訂單的部分對(duì)象?,74,(4)表示動(dòng)態(tài)變化的對(duì)象特征,人員,營(yíng)業(yè)員,會(huì)計(jì)師,經(jīng)理,問(wèn)題:對(duì)象的屬性與操作定義在系統(tǒng)運(yùn)行中動(dòng)態(tài)變化,例如:,不理想的解決辦法: 刪除、重建 Shlaer/ Mellor的子類(lèi)型遷移 “動(dòng)態(tài)對(duì)

35、象”,75,“三友”對(duì)問(wèn)題的描述及解決方法 “大多數(shù)面向?qū)ο蟮木幊陶Z(yǔ)言是靜態(tài)類(lèi)型化的,這意味著在創(chuàng)建對(duì)象時(shí)就限定了對(duì)象的類(lèi)型。但是隨著時(shí)間的推移對(duì)象還可能扮演不同的角色?!?例子:候選者,雇員,退休者,總之都是圍繞著繼承想主意,沒(méi)有運(yùn)用聚合。,76,從上述例子得到的啟示: 整體-部分結(jié)構(gòu)有很強(qiáng)的表達(dá)能力 運(yùn)用OO方法的基本概念可以自然而有效地解決許多在其他方法中用擴(kuò)充概念解決的問(wèn)題 加強(qiáng)對(duì)基本概念的運(yùn)用,不要輕易創(chuàng)造新的擴(kuò)充概念,person,01,01,01,1,1,1,用聚合概念解決:,CandidateRole,EmployeeRole,RetireeRole,77,用一般特殊結(jié)構(gòu),兩種

36、結(jié)構(gòu)的變通,汽 車(chē),制冷設(shè)備,冷藏車(chē),解釋?zhuān)?繼承和聚合都是使一類(lèi)對(duì)象獲得另一類(lèi)對(duì)象的特征,只是觀(guān)察問(wèn)題的角度不同。,78,概念: 關(guān)聯(lián)(association)是兩個(gè)或者多個(gè)類(lèi)上的一個(gè)關(guān)系(即這些類(lèi)的對(duì)象實(shí)例集合的笛卡兒積的一個(gè)子集合),其中的元素提供了被開(kāi)發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。 二元關(guān)聯(lián)(binary association) n元關(guān)聯(lián)(n-ary association) 關(guān)聯(lián)的實(shí)例有序?qū)?或 n元組,又稱(chēng)鏈(link) 關(guān)聯(lián)是這些有序?qū)?或 n元組的集合 關(guān)聯(lián)位于類(lèi)的抽象層次,鏈位于對(duì)象的抽象層次,8.3 關(guān)聯(lián),提問(wèn):一個(gè)n元關(guān)聯(lián)中所涉及的類(lèi)的數(shù)量是否可以小于n?,79,

37、二元關(guān)聯(lián)的表示法,類(lèi) A,名稱(chēng),類(lèi) B,數(shù)量,數(shù)量,角色,角色,80,二元關(guān)聯(lián)的實(shí)現(xiàn)(一對(duì)一和一對(duì)多),編程語(yǔ)言:在程序中用兩個(gè)類(lèi)分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類(lèi);以數(shù)量約束為“1”的類(lèi)的對(duì)象實(shí)例為目標(biāo),在關(guān)聯(lián)另一端的類(lèi)中設(shè)置一個(gè)指向該目標(biāo)的指針或者對(duì)象標(biāo)識(shí)(源類(lèi)的屬性)。,教 師,1,授課,課 程,*,81,二元關(guān)聯(lián)的實(shí)現(xiàn)(多對(duì)多),問(wèn)題:任何一端的一個(gè)對(duì)象實(shí)例的要和另一端多個(gè)對(duì)象實(shí)例發(fā)生關(guān)聯(lián),而且數(shù)量不確定。實(shí)現(xiàn)時(shí)不知道該設(shè)立多少個(gè)指針(或者對(duì)象標(biāo)識(shí)、外鍵)才能夠用。,課 程,學(xué) 生,*,*,82,運(yùn)用簡(jiǎn)單的概念及表示法解決各種復(fù)雜的關(guān)聯(lián)問(wèn)題,教師,學(xué)生,1,*,指導(dǎo)論文,(1)帶有屬性和操作的關(guān)聯(lián),

38、有某些信息需要描述,OMT(及UML)的概念擴(kuò)充關(guān)聯(lián)類(lèi)(association class),問(wèn)題:增加了概念的復(fù)雜性,缺乏編程語(yǔ)言支持,83,換一種思路考慮問(wèn)題: 兩類(lèi)對(duì)象之間的關(guān)聯(lián)帶有某些復(fù)雜的信息,說(shuō)明它們之間存在著某種事物(盡管可能是抽象事物)。 用普通的對(duì)象概念來(lái)表示這種事物,簡(jiǎn)化關(guān)聯(lián),減少概念,并加強(qiáng)與OOPL的對(duì)應(yīng)。,教師,學(xué)生,1,*,指導(dǎo)論文,論文題目 答辯時(shí)間 成績(jī),例1,84,城市之間有航線(xiàn),城 市,有航線(xiàn) 距離 每周班次,*,*,其他例子,85,復(fù)雜關(guān)聯(lián)表示法的轉(zhuǎn)換,m,n,類(lèi) A,類(lèi) B,關(guān)聯(lián)類(lèi) 屬性 操作,86,(2)n元關(guān)聯(lián),OMT的三元關(guān)聯(lián)及其表示法,問(wèn)題: 編

39、程語(yǔ)言不能直接支持 可推廣到n元關(guān)聯(lián),是否要?jiǎng)?chuàng)造更多的符號(hào)? 多重性表示的困難(詳后),*,*,*,87,在理論上,n元關(guān)聯(lián)是由若干n元組形成的集合,本質(zhì)上也是一個(gè)類(lèi)是由每個(gè)n元組作為對(duì)象實(shí)例的類(lèi),從實(shí)現(xiàn)的角度看, 用類(lèi)實(shí)現(xiàn)n元關(guān)聯(lián)是最自然的選擇 例如:用一個(gè)數(shù)據(jù)庫(kù)表存放n元關(guān)聯(lián)的全部n元組,88,在模型中,把n元關(guān)聯(lián)定義為一個(gè)類(lèi) 并定義它與原有的各個(gè)類(lèi)之間的關(guān)系都是二元關(guān)聯(lián),類(lèi)2,類(lèi)n,類(lèi)1,類(lèi)3,n元關(guān)聯(lián),89,項(xiàng) 目,語(yǔ) 言,人 員,*,?,*,是 1 還是 * ?,n元關(guān)聯(lián)多重性表示的困難和解決辦法,90,例:課程實(shí)習(xí)中每?jī)擅麑W(xué)生在一臺(tái)設(shè)備上合作完成一個(gè)題目 1)若系統(tǒng)要求記錄和查閱哪

40、兩名學(xué)生是合作者 建立學(xué)生類(lèi)到它自身的關(guān)聯(lián)(如同城市之間有航線(xiàn)) 是一個(gè)二元關(guān)聯(lián),其中學(xué)生類(lèi)在關(guān)聯(lián)中出現(xiàn)了兩次 2)如果還要記錄每組學(xué)生的實(shí)習(xí)題目和使用的設(shè)備 建立學(xué)生、題目、設(shè)備三個(gè)類(lèi)之間的4元關(guān)聯(lián) 學(xué)生類(lèi)在這個(gè)關(guān)聯(lián)中出現(xiàn)了兩次,(3)一個(gè)類(lèi)在一個(gè)關(guān)聯(lián)中多次出現(xiàn),91,假如該系統(tǒng)的多重性要求是: 每?jī)擅麑W(xué)生在一臺(tái)設(shè)備上合作完成一個(gè)題目; 一個(gè)題目可以供多組學(xué)生實(shí)習(xí),可以在不同的設(shè)備上完成; 一臺(tái)設(shè)備可以供多組學(xué)生使用,可以做不同的題目。,92,關(guān)聯(lián)端點(diǎn)的復(fù)雜情況 關(guān)聯(lián)端點(diǎn):關(guān)聯(lián)的連接線(xiàn)與類(lèi)符號(hào)相銜接的點(diǎn) 修飾:在端點(diǎn)附近標(biāo)注符號(hào)或者文字,或者畫(huà)成不同的形狀,多重性(multiplicity)

41、 有序(ordered) ordered 限定符(qualifier) 詳后 導(dǎo)航性(navigability) 聚合標(biāo)志(aggregation indicator) 角色名(rolename) 接口說(shuō)明(interface specifier) 角色名:接口說(shuō)明 可變性(changeability) frozen ,addOnly 可見(jiàn)性(visibility)。 “+”、“#”或者“-”,93,“限定符是關(guān)聯(lián)的一種屬性,它的值劃定了跨過(guò)一個(gè)關(guān)聯(lián)與一個(gè)對(duì)象相關(guān)的對(duì)象集合?!?用限定符修飾的關(guān)聯(lián)稱(chēng)為受限關(guān)聯(lián)(qualified association),UML對(duì)限定符的解釋,類(lèi) A,限定符,

42、類(lèi) B,*,01,表示法,94,限定符的例子及其簡(jiǎn)單解決方案,95,關(guān)聯(lián)端點(diǎn)的修飾在UML2的變化,(1)取消了接口說(shuō)明和可變性?xún)煞N修飾 (2)新增兩種圖形方式的修飾 :表示不可導(dǎo)航 :表示擁有權(quán) (3)增加了花括號(hào)內(nèi)的特性串(property string) subsets 子集合 redefines 重定義 union 合并 ordered 有序 nonunique 不唯一 sequence,seq 序列,96,如何建立關(guān)聯(lián) 1根據(jù)問(wèn)題域和系統(tǒng)責(zé)任發(fā)現(xiàn)所需要的關(guān)聯(lián) 哪些類(lèi)的對(duì)象實(shí)例之間存在著對(duì)用戶(hù)業(yè)務(wù)有意義的關(guān)系? 問(wèn)題域中實(shí)際事物之間有哪些值得注意的關(guān)系? 這種信息是否需要通過(guò)有序?qū)Γɑ?/p>

43、者n元組)來(lái)體現(xiàn)? 這些信息是否需要在系統(tǒng)中進(jìn)行保存、管理或維護(hù)? 系統(tǒng)是否需要查閱和使用由這種關(guān)系所體現(xiàn)的信息?,97,2關(guān)聯(lián)的復(fù)雜情況處理 對(duì)關(guān)聯(lián)屬性和操作的處理 對(duì)n元關(guān)聯(lián)的處理 避免一個(gè)類(lèi)在關(guān)聯(lián)中多次出現(xiàn) 多對(duì)多關(guān)聯(lián)的處理,供貨商,客戶(hù),*,*,多對(duì)多關(guān)聯(lián)的處理,98,3為關(guān)聯(lián)端點(diǎn)添加修飾 分析關(guān)聯(lián)的多重性 給出關(guān)聯(lián)名或角色名 識(shí)別聚合種類(lèi) 其他修飾 導(dǎo)航性、特性串等根據(jù)實(shí)際情況決定是否采用 限定符用簡(jiǎn)單的類(lèi)和關(guān)聯(lián)的概念解決 4在類(lèi)中設(shè)立實(shí)現(xiàn)關(guān)聯(lián)的屬性,99,5關(guān)聯(lián)定位,系統(tǒng)管理員,1,計(jì)算機(jī),服務(wù)器,客戶(hù)機(jī),用 戶(hù),*,操作,使用,1,*,100,6.4消息,1、什么是消息 (mes

44、sage) 現(xiàn)實(shí)生活中人或其他事物之間傳遞的信息,例如: 人與人之間的對(duì)話(huà)、通信、發(fā)通知、留言 交通信號(hào)燈對(duì)車(chē)輛和行人發(fā)出的信號(hào) 人發(fā)給設(shè)備的遙控信號(hào)等 軟件系統(tǒng)中進(jìn)程或軟件成分之間傳送的信息 控制信息 例如一次函數(shù)調(diào)用,或喚醒一個(gè)進(jìn)程 數(shù)據(jù)信息 例如傳送一個(gè)數(shù)據(jù)文件 面向?qū)ο蟮南到y(tǒng)中(按嚴(yán)格封裝的要求)消息是對(duì)象之間在行為上的唯一聯(lián)系方式 消息是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求 (狹義) 消息是對(duì)象之間在一次交互中所傳送的信息(廣義) 消息有發(fā)送者和接收者,遵守共同約定的語(yǔ)法和語(yǔ)義,101,每個(gè)消息都是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求 最常見(jiàn)的是函數(shù)調(diào)用 消息都是同步的。 接收者執(zhí)行消息所請(qǐng)求的服務(wù)。 發(fā)送者等待消

45、息處理完畢再繼續(xù)執(zhí)行。 每個(gè)消息只有唯一的接收者。,順序系統(tǒng)中的消息,102,并發(fā)系統(tǒng)中的消息,控制流內(nèi)部的消息與順序系統(tǒng)相同 控制流之間的消息情況復(fù)雜得多 消息有多種用途 服務(wù)請(qǐng)求,傳送數(shù)據(jù),發(fā)送通知,傳遞控制信號(hào) 消息有同步與異步之分 同步消息(synchronous message) 異步消息(asynchronous message) 接收者對(duì)消息有不同響應(yīng)方式 創(chuàng)建控制流 ,立即響應(yīng),延遲響應(yīng),不響應(yīng) 發(fā)送者對(duì)消息處理結(jié)果有不同期待方式 等待回應(yīng),事后查看結(jié)果,不等待不查看 消息的接收者可能不唯一 定向消息(directed message) 廣播消息(broadcast messa

46、ge),103,消息對(duì)面向?qū)ο蠼5囊饬x 消息體現(xiàn)了對(duì)象之間的行為依賴(lài)關(guān)系,是實(shí)現(xiàn)對(duì)象之間的動(dòng)態(tài)聯(lián)系,使系統(tǒng)成為一個(gè)能運(yùn)行的整體,并使各個(gè)部分能夠協(xié)調(diào)工作的關(guān)鍵因素。 在順序系統(tǒng)中 消息體現(xiàn)了過(guò)程抽象的原則 一個(gè)對(duì)象的操作通過(guò)消息調(diào)用其他對(duì)象的操作 在OO模型中通過(guò)消息把對(duì)象操作貫穿在一起 系統(tǒng)實(shí)現(xiàn)后這些操作將在一個(gè)控制流中順序地執(zhí)行 在并發(fā)系統(tǒng)中 控制流內(nèi)部的消息 使系統(tǒng)中的每個(gè)控制流呈現(xiàn)出清晰的脈絡(luò) 控制流之間的消息 體現(xiàn)了控制流之間的通信關(guān)系,104,OO模型需要表示消息的哪些信息 ?(按重要性排序) (1)對(duì)象之間是否存在著某種消息? (2)這種消息是控制流內(nèi)部的還是控制流之間的? (

47、3)每一種消息是從發(fā)送者的哪個(gè)操作發(fā)出的?是由接收者的哪個(gè)操作響應(yīng)和處理的? (4)消息是同步的還是異步的? (5)發(fā)送者是否等待消息的處理結(jié)果?,105,以往不同的OOA&D方法有不同的處理方式 例如: Coad/ Yourdon方法 在類(lèi)圖中表示消息 Booch方法只在實(shí)例級(jí)的模型圖(對(duì)象圖和交互圖)中表示消息,UML的處理方式: 不在類(lèi)圖中表示消息,只在協(xié)作圖和順序圖中表示 理由:把類(lèi)圖定義為靜態(tài)結(jié)構(gòu)圖,不表示動(dòng)態(tài)信息 問(wèn)題: 抽象級(jí)別問(wèn)題 局部與全局問(wèn)題 實(shí)際上類(lèi)圖中仍然包含動(dòng)態(tài)信息 操作,調(diào)用(call)依賴(lài),要不要在類(lèi)圖中表示消息,106,UML對(duì)各種箭頭的用法,同步消息(順序圖、

48、協(xié)作圖),實(shí)線(xiàn)封閉箭頭,依賴(lài)(類(lèi)圖、包圖、用況圖、構(gòu)件圖) 從消息接收者的操作返回(順序圖),虛線(xiàn)開(kāi)放箭頭,關(guān)聯(lián)的導(dǎo)航性(類(lèi)圖) 異步消息(順序圖),實(shí)線(xiàn)開(kāi)放箭頭,用 途,圖形符號(hào),箭頭種類(lèi),用什么符號(hào)表示消息,借用依賴(lài)關(guān)系表示類(lèi)圖中的消息,call,send,控制流內(nèi)部的消息,控制流之間的消息,107,A,C,D,E,F,call,call,call,send,B,call,call,例子:,108,如何建立的消息(控制流內(nèi)部) 策略“操作模擬”和“執(zhí)行路線(xiàn)追蹤” (1)人為地模擬當(dāng)前對(duì)象操作的執(zhí)行 考慮:需要其它對(duì)象(或本對(duì)象)提供什么服務(wù) (2)判斷該消息是否屬于同一個(gè)控制流: 二者應(yīng)該

49、順序地執(zhí)行還是并發(fā)地執(zhí)行? 是否引起控制流的切換? 接收者是否只有通過(guò)當(dāng)前消息的觸發(fā)才能執(zhí)行? (3)向接收者畫(huà)出消息連接線(xiàn),填寫(xiě)模型規(guī)約 上述工作進(jìn)行到當(dāng)前的操作模擬執(zhí)行完畢 (4)沿著控制流內(nèi)部的每一種消息追蹤到接收該消息的對(duì)象操作,重復(fù)進(jìn)行以上的工作,直到已發(fā)現(xiàn)的全部消息都經(jīng)歷一遍。 針對(duì)每個(gè)主動(dòng)類(lèi)的每個(gè)主動(dòng)操作進(jìn)行上述模擬與追蹤 檢查系統(tǒng)中每個(gè)操作是否都被經(jīng)歷過(guò) 發(fā)現(xiàn)遺漏的消息或多余的操作,109,建立控制流之間消息 對(duì)每個(gè)控制流考慮以下問(wèn)題: (1)它在執(zhí)行時(shí),是否需要請(qǐng)求其他控制流中的對(duì)象為它提供某種服務(wù)? (2)它在執(zhí)行時(shí)是否要向其他控制流中的對(duì)象提供或索取某些數(shù)據(jù)? (3)它在

50、執(zhí)行時(shí)是否將產(chǎn)生某些可影響其他控制流執(zhí)行的事件? (4)各個(gè)控制流的并發(fā)執(zhí)行,是否需要相互傳遞一些同步控制信號(hào)? (5)一個(gè)控制流將在何種條件下中止執(zhí)行?在它中止之后將在何種條件下被喚醒?由哪個(gè)控制流喚醒? 從上述各個(gè)角度發(fā)現(xiàn)控制流之間的消息 在相應(yīng)的類(lèi)之間畫(huà)出消息連接線(xiàn),110,8.5 關(guān)于依賴(lài)關(guān)系,什么是依賴(lài)(dependency) 在以往的OO方法中,只有Firesmith方法用到這個(gè)概念,其大意是:“客戶(hù)/服務(wù)者(client/server)關(guān)系,表示客戶(hù)對(duì)服務(wù)者的依賴(lài)。”列舉的情況包括: 消息傳送其中客戶(hù)發(fā)送消息給服務(wù)者; 聚合其中聚合體(客戶(hù))的定義依賴(lài)它的構(gòu)成部分(服務(wù)者); 繼

51、承其中派生類(lèi)(客戶(hù))依賴(lài)它的基類(lèi)(服務(wù)者)以繼承其特征。 結(jié)論:在Firesmith方法中,依賴(lài)并不是對(duì)象之間的一種基本關(guān)系,而是為了指出在消息、聚合、繼承等基本關(guān)系中哪個(gè)模型成分是客戶(hù)(依賴(lài)者),哪個(gè)模型成分是服務(wù)者(被依賴(lài)者)所采用的一個(gè)概括性的術(shù)語(yǔ)。,111,UML1.4對(duì)依賴(lài)的定義和解釋 “依賴(lài):兩個(gè)建模元素之間的一種關(guān)系,其中一個(gè)建模元素(獨(dú)立元素)的一個(gè)改變將影響到另一個(gè)建模元素(依賴(lài)元素)?!?“依賴(lài)是除了關(guān)聯(lián)、泛化、流以及元關(guān)系之外的關(guān)系的方便術(shù)語(yǔ)?!?“依賴(lài)表明一個(gè)或者一組元素的實(shí)現(xiàn)或者功能需要另外一個(gè)或者一組元素出現(xiàn)?!?“依賴(lài)指出了兩個(gè)模型元素(或者兩組模型元素)之間的語(yǔ)

52、義關(guān)系。它指的是這些模型元素本身,而不需要一組實(shí)例來(lái)說(shuō)明其含義。它指出這樣一種情況:目標(biāo)元素的一個(gè)變化可能需要依賴(lài)中的源元素發(fā)生變化。” Booch等UML用戶(hù)指南的解釋 “兩個(gè)事物之間的語(yǔ)義關(guān)系,其中一個(gè)事物(獨(dú)立事物)的改變將影響到另一個(gè)事物(依賴(lài)事物)?!?112,UML2對(duì)依賴(lài)關(guān)系的新闡述 “依賴(lài)表明模型元素之間的供方/客方(supplier /client)關(guān)系,其中供方的修改可能影響到客方元素。依賴(lài)意味著,如果沒(méi)有供方,客方的語(yǔ)義就是不完整的。依賴(lài)在一個(gè)模型中出現(xiàn)并不含有任何運(yùn)行時(shí)的語(yǔ)義,它完全是以參與這種關(guān)系的模型元素的名義而不是以其實(shí)例的名義給出的?!?“依賴(lài)是這樣一個(gè)關(guān)系,它

53、表明一個(gè)或者一組模型元素的詳細(xì)說(shuō)明或者實(shí)現(xiàn)需要另外一些模型元素。這意味著,依賴(lài)元素的完整語(yǔ)義在語(yǔ)義和結(jié)構(gòu)上都依賴(lài)這些供方元素的定義?!?認(rèn)識(shí): 依賴(lài)著眼于表達(dá)紙面上的模型元素之間的關(guān)系,而不是這些元素所描述的客觀(guān)事物在問(wèn)題域中的固有關(guān)系。 依賴(lài)基本上不能視為一種面向?qū)ο蟮母拍睢?113,Dependency,Abstraction,Permission,Usage,Binding,UML1的依賴(lài)關(guān)系,derive refine realize trace,call create instantiate responsibility send,access friend import,依賴(lài)所指的

54、并不是單獨(dú)的一種關(guān)系,而是包含了許多情況,114,關(guān)鍵詞,依賴(lài)的表示法以及其他外觀(guān)類(lèi)似的表示,作為依賴(lài)關(guān)系標(biāo)準(zhǔn)衍型的關(guān)鍵詞 - instantiate create call derive refine responsibility send trace,用于依賴(lài)但未明確稱(chēng)為標(biāo)準(zhǔn)衍型的關(guān)鍵詞 - abstraction realize substitute permit use,附加于虛線(xiàn)開(kāi)放箭頭但不稱(chēng)為依賴(lài)關(guān)系的關(guān)鍵詞 - access apply bind extend import include manifest occurrence represents,各種標(biāo)準(zhǔn)衍型和關(guān)鍵詞的含義,

55、見(jiàn)教材表8.1和表8.2,115,依賴(lài)關(guān)系對(duì)面向?qū)ο蠼5淖饔?繼承、聚合、關(guān)聯(lián)、消息這四種關(guān)系中都已經(jīng)蘊(yùn)涵了依賴(lài)的含義,不需要再用依賴(lài)關(guān)系再做重復(fù)的表示 除了上述關(guān)系之外,在OO建模中沒(méi)有多少重要的信息必須用依賴(lài)關(guān)系表達(dá),告戒:避免建立語(yǔ)義含糊不清的依賴(lài)關(guān)系,更要避免用這些含糊不清的依賴(lài)關(guān)系代替含義明確的OO關(guān)系。 建立一種依賴(lài)關(guān)系,就要具體地指出它是一種什么依賴(lài)。,116,歷史上OO方法采用其他模型圖的三種不同情況 攙雜了其他方法 OMT 對(duì)象模型+動(dòng)態(tài)模型+功能模型 解決不同階段的問(wèn)題 OOSE 需求模型+健壯模型+設(shè)計(jì)模型 以面向?qū)ο蠓椒楹诵?,以其他模型圖作為補(bǔ)充 Booch方法 基

56、本模型+補(bǔ)充模型 Coad/Yourdon 類(lèi)圖+流程圖 UML的狀況和發(fā)展趨勢(shì) 收集了大量的模型圖 ,從9種發(fā)展到13種 從不同的視角對(duì)復(fù)雜系統(tǒng)建模 各種圖向著健全和復(fù)雜的方向發(fā)展,9.1 類(lèi)圖與其他模型圖之間的關(guān)系,第9章 建立輔助模型,117,在本書(shū)的面向?qū)ο蠼7椒ㄖ?以類(lèi)圖作為主要模型基本模型 用況圖作為需求模型 其他模型圖作為輔助模型,118,UML2中的各種圖,圖,結(jié)構(gòu)圖,行為圖,交互圖,類(lèi)圖,構(gòu)件圖,對(duì)象圖,活動(dòng)圖,用況圖,狀態(tài)機(jī)圖,部署圖,順序圖,通訊圖,組合結(jié)構(gòu)圖,包圖,交互概覽圖,定時(shí)圖,支持用戶(hù)從不同的視角進(jìn)行系統(tǒng)建模,119,類(lèi)圖:基本模型,是面向?qū)ο蟮慕W钪匾哪?/p>

57、型,必不可少。 用況圖:需求模型,是開(kāi)展面向?qū)ο蠼5幕A(chǔ),提倡盡可能使用。 包圖:輔助模型,各種模型圖的組織機(jī)制,系統(tǒng)規(guī)模較大時(shí)使用。 順序圖:輔助模型,清晰地表示一組對(duì)象之間的交互,對(duì)類(lèi)圖起到補(bǔ)充作用。在交互情況較復(fù)雜時(shí)使用。 活動(dòng)圖:輔助模型,可描述對(duì)象的操作流程,也可描述高層的行為。 狀態(tài)機(jī)圖:輔助模型,對(duì)于狀態(tài)與行為復(fù)雜的對(duì)象,可描述對(duì)象狀態(tài)及轉(zhuǎn)移,以便更準(zhǔn)確地定義對(duì)象的操作。 構(gòu)件圖,部署圖:輔助模型,在轉(zhuǎn)入實(shí)現(xiàn)階段之前,可以用它們表示如何組織構(gòu)件以及如何把軟件制品部署的各個(gè)結(jié)點(diǎn)(計(jì)算機(jī))上。 組合結(jié)構(gòu)圖、交互概覽圖、定時(shí)圖:都可以作為輔助模型,無(wú)強(qiáng)烈建議。 對(duì)象圖、通信圖:建議不

58、使用。,在本書(shū)的方法中各種UML模型圖的作用,120,9.2 包圖(package diagram),包(package)是一種將其他模型元素組織起來(lái),形成較大粒度的系統(tǒng)單位的通用機(jī)制。 基本思想: 從不同的粒度描述和觀(guān)察系統(tǒng)從宏觀(guān)到微觀(guān) G. Miller 的“72原則” 注意: 包是一種組織機(jī)制而不是一種基本模型元素 包可以嵌套 包中的模型元素應(yīng)具有某種意義的內(nèi)在聯(lián)系 包的劃分有一定的靈活性或隨意性,121,名稱(chēng),包的表示法,包的壓縮方式,包的展開(kāi)方式,內(nèi)容,名稱(chēng),122,包之間的關(guān)系及表示法,引入(import)是包之間的一種依賴(lài)關(guān)系,表明源包中的模型元素能夠直接引用目標(biāo)包中的模型元素。 原由名字空間(為了避免命名沖突) 以包為單位劃分名字空間,引用時(shí)給出路徑名 引入關(guān)系表明可以直接引用,Class1,P3

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論