面向對象分析與設計分析2_第1頁
面向對象分析與設計分析2_第2頁
面向對象分析與設計分析2_第3頁
面向對象分析與設計分析2_第4頁
面向對象分析與設計分析2_第5頁
已閱讀5頁,還剩175頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章 建立需求模型——用況圖5.1需求分析和系統(tǒng)分析需求分析的確切含義是對用戶需求進行分析,旨在產生一份明確、規(guī)范的需求定義。OOA的主要內容是研究問題域中與需求有關的事物,把它們抽象為系統(tǒng)中的對象,建立類圖。確切地講,這些工作應該叫做系統(tǒng)分析,而不是嚴格意義上的需求分析。早期的OOA缺乏一個良好的基礎——對需求的規(guī)范描述。需求說明需求分析健壯分析需求模型分析模型分析過程Jacobson方法(OOSE)提出用況(usecase)概念,解決了對需求的描述問題,其分析過程如下:第一頁,共一百八十頁。問題域(抽象的來源)OOA模型(類圖)抽象OOA是將問題域中的事物抽象為系統(tǒng)中的對象系統(tǒng)責任(抽象的目標)抽象的目標是系統(tǒng)責任——需求用況的概念解決了對需求的描述問題需求模型(用況圖)第二頁,共一百八十頁。5.2基本思路問題的提出:在系統(tǒng)尚未存在時,如何描繪用戶需要一個什么樣的系統(tǒng)?如何規(guī)范地定義用戶需求?考慮問題的思路:把系統(tǒng)看作一個黑箱,看它對外部的客觀世界發(fā)揮什么作用,描述其外部可見的行為。系統(tǒng)是由一條邊界包圍起來的未知空間只通過有限的幾個接口與外部交互系統(tǒng)邊界以外是與系統(tǒng)進行交互的參與者把內外交互情況描述清楚,就確切地定義了系統(tǒng)的需求第三頁,共一百八十頁。系統(tǒng)邊界系統(tǒng)邊界:一個系統(tǒng)所包含的所有系統(tǒng)成分與系統(tǒng)以外各種事物的分界線。系統(tǒng):被開發(fā)的計算機軟硬件系統(tǒng),不是指現(xiàn)實系統(tǒng)。系統(tǒng)成分:在OOA和OOD中定義并且在編程時加以實現(xiàn)的系統(tǒng)元素——對象對象對象對象對象對象對象參與者(人員)參與者(設備)參與者(外系統(tǒng))參與者:在系統(tǒng)邊界以外,與系統(tǒng)進行交互的事物——人員、設備、外系統(tǒng)5.3系統(tǒng)邊界與參與者第四頁,共一百八十頁。現(xiàn)實世界中的事物與系統(tǒng)之間的關系——分四種情況(1)被抽象為系統(tǒng)中的對象汽車飛機獎杯鐘表起重機職員樓房天平(2)只作為系統(tǒng)外部的參與者與系統(tǒng)交互(4)與系統(tǒng)無關操作員(3)既是系統(tǒng)中的對象,本身又作為參與者與系統(tǒng)交互第五頁,共一百八十頁。人員——系統(tǒng)的直接使用者直接為系統(tǒng)服務的人員設備——與系統(tǒng)直接相聯(lián)的設備為系統(tǒng)提供信息在系統(tǒng)控制下運行不與系統(tǒng)相連的設備×計算機設備×外系統(tǒng)——上級系統(tǒng)子系統(tǒng)其它系統(tǒng)如何發(fā)現(xiàn)參與者——考慮人員、設備、外系統(tǒng)第六頁,共一百八十頁。什么是用況I.Jacobson:用況是通過使用系統(tǒng)功能的某些部分而使用系統(tǒng)的一種具體方式。每個用況包括一個由參與者發(fā)動的完整的事件過程。它詳細說明了參與者和系統(tǒng)之間發(fā)生的交互。因此,一個用況是一個由參與者和系統(tǒng)在一次對話中執(zhí)行的特定的相關事務序列。全部用況的集合則說明了所有可能存在的系統(tǒng)使用方式?!秾ο蠹夹g詞典》:1.對一個系統(tǒng)或者一個應用的一種單一的使用方式所進行的描述。2.關于單個參與者在與系統(tǒng)的對話中所執(zhí)行的處理的行為陳述序列。UML:對系統(tǒng)在與它的參與者交互時所能執(zhí)行的一組動作序列(包括其變體)的描述。???本書的定義:用況是對參與者使用系統(tǒng)的一項功能時所進行的交互過程的描述,其中包含由雙方交替執(zhí)行的一系列動作。5.4用況(usecase)第七頁,共一百八十頁。術語“usecase”的準確含義——使用情況是對一項系統(tǒng)功能使用情況的一般描述,它對于每一次使用都普遍適應,既不是應用實例,也不是舉例說明?!虼俗g為“用況”,而不是“用例”。幾點說明:(1)一個用況只描述參與者對單獨一項系統(tǒng)功能的使用情況;(2)通常是平鋪直敘的文字描述,UML也允許其他描述方式;(3)陳述參與者和系統(tǒng)在交互過程中雙方所做的事;(4)所描述的交互既可能由參與者發(fā)起也可能由系統(tǒng)發(fā)起;(5)描述彼此為對方直接地做什么事,不描述怎么做;(6)描述應力求準確,允許概括,但不要把雙方的行為混在一起;(7)一個用況可以由多種參與者分別參與或共同參與。第八頁,共一百八十頁。內容與書寫格式

:名稱行為陳述(分左右欄)調用語句控制語句括號或標號收款輸入開始本次收款的命令;

作好收款準備,應收款總數(shù)置為0,輸出提示信息;for

顧客選購的每種商品do

輸入商品編號;

if

此種商品多于一件then

輸入商品數(shù)量

endif;

檢索商品名稱及單價;貨架商品數(shù)減去售出數(shù);

if

貨架商品數(shù)低于下限then

call通知上貨

endif;計算本種商品總價并打印編號、名稱、數(shù)量、單價、總價;總價累加到應收款總數(shù);endfor;

打印應收款總數(shù);輸入顧客付款數(shù);

計算應找回款數(shù),打印付款數(shù)及找回款,應收款數(shù)計入賬冊。例第九頁,共一百八十頁。如何定義用況針對單個用況的描述策略:把自己當作參與者,與設想中的系統(tǒng)進行交互??紤]:交互的目的是什么?需要向系統(tǒng)輸入什么信息?希望由系統(tǒng)進行什么處理并從它得到何種結果?把上述交互過程描述出來。定義系統(tǒng)中所有的用況:(1)全面地了解和收集用戶所要求的各項系統(tǒng)功能,找出所有的參與者,了解與各項功能相關的業(yè)務流程;(2)把用戶提出的功能組織成適當?shù)膯挝唬恳豁椆δ芡瓿梢豁椡暾鄬Κ毩⒌墓ぷ?;?)窮舉每一類參與者所使用的每一項系統(tǒng)功能,定義相應的用況;(4)檢查用戶對系統(tǒng)的各項功能需求是否都通過相應的用況做了描述。第十頁,共一百八十頁。參與者基用況?include??extend??include?用況基用況基用況被包含用況延伸用況用況5.5用況圖參與者參與者模型元素:參與者用況延伸包含泛化5.5用況圖第十一頁,共一百八十頁。用況之間的關系——包含、延伸、泛化延伸包含問題:延伸與包含的相似性延伸的方向問題“條件”和“延伸點”問題“泛化”問題系統(tǒng)邊界問題PerformATMTransactionWithdrawDepositFunds泛化TransferFunds

第十二頁,共一百八十頁。用況的兩種復雜情況1、兩個(或多個)參與者共享一個用況不同種類的參與者可能都要使用某一項系統(tǒng)功能,因此它們可能共享同一個用況例:系統(tǒng)維護登錄系統(tǒng)管理員普通用戶第十三頁,共一百八十頁。2、一個用況的執(zhí)行,可能需要兩個(甚至多個)參與者同時與系統(tǒng)交互。例:網(wǎng)上購物網(wǎng)上購物客戶供貨商第十四頁,共一百八十頁。用況圖的開發(fā)過程確定系統(tǒng)邊界發(fā)現(xiàn)參與者定義用況建立用況之間的關系確定參與者和用況之間的關系繪制用況圖使用用況圖的幾條建議最重要的工作是對用況的描述不要過分深入地描述系統(tǒng)內部的行為細節(jié)運用最主要概念,加強用況內容的描述不要陷入延伸與包含、延伸點、泛化等問題的爭論和辨別了解用況的局限性——主要作用是描述功能需求5.6開發(fā)過程與建議第十五頁,共一百八十頁。概念:對象(object)是系統(tǒng)中用來描述客觀事物的一個實體,它是構成系統(tǒng)的一個基本單位,由一組屬性和施加于這組屬性的一組操作構成。類(class)是具有相同屬性和操作的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,它由一個類名、一組屬性和一組操作構成。

類和對象的關系——集合與成員,對象是類的實例在一般-特殊結構中,特殊類的對象實例在邏輯上也都是其一般類的對象實例。不直接創(chuàng)建對象實例的類稱為抽象類(abstractclass)

學生本科生研究生例:第6章發(fā)現(xiàn)對象,定義對象類6.1對象和類的概念及其運用第十六頁,共一百八十頁。主動對象(activeobject)——至少有一個操作不需要接收消息就能主動執(zhí)行的對象用于描述具有主動行為的事物主動對象的類叫做主動類(activeclass)被動對象(passiveobject)

——每個操作都必須在消息的驅動下才能執(zhí)行的對象第十七頁,共一百八十頁。類的語義OO方法中的類在不同的語境下有兩種不同的語義:1.一個類代表由它的全部對象實例所構成的群體日常語言表達中的例子:“公司里有管理人員、技術人員和市場人員”“馬路上汽車很多”在OO模型中:每個類都是由它的全部對象實例所構成的集合類代表了它的全部對象實例。2.一個類代表屬于該類的任意一個對象實例從大量的個體中抽象出一個概念,再運用這個概念時就可以代表其中的任何一個個體,例如:

“學生有一個學號,屬于一個班級,要上課”

在OO系統(tǒng)模型中定義了一個類,它就可以代表它的任何一個對象實例,例如:汽車與發(fā)動機之間的聚合關系,表示任何一輛汽車都有一臺發(fā)動機,任何一臺發(fā)動機都可以裝在0—1輛汽車上第十八頁,共一百八十頁。在類的抽象層次建模理由:(1)充分性:模型中一個類描述了它的全部對象實例(2)必要性:個別對象實例不能代表其他對象實例(3)符合人類的思維方式:在概念層次上表達描述事物規(guī)律(4)與OOPL保持良好的對應(5)避免建模概念復雜化(6)消除抽象層次的混亂第十九頁,共一百八十頁。如何運用類和對象的概念從對象出發(fā)認識問題域將問題域中的事物抽象為對象;將具有共同特征的對象抽象為類用類以及它們之間的關系構成整個系統(tǒng)模型;歸納演繹在模型中用類表示屬于該類的任何對象在類的規(guī)約中說明這個類將創(chuàng)建那些對象實例在程序中用類定義它的全部對象編程時靜態(tài)聲明類的對象運行時動態(tài)創(chuàng)建類的對象第二十頁,共一百八十頁。類名壓縮方式類名屬性名:類型名······操作名()······展開方式主動類《active》類名············衍型(stereotype)用關鍵字或者用圖標表示類名············UML2主動類表示法《主動》類名············6.2表示法在模型中用類符號來表示一個類它代表了屬于該類的全部對象實例第二十一頁,共一百八十頁。對象名:類名壓縮方式屬性名=值······UML的對象表示法:細節(jié)方式對象名:類名匿名對象:類名壓縮方式屬性名=值······細節(jié)方式:類名用所謂“匿名對象”代表類的任何一個對象實例,然而這恰恰是類的作用。第二十二頁,共一百八十頁。6.3發(fā)現(xiàn)對象研究問題域親臨現(xiàn)場深入調查研究直接觀察并向用戶及相關的業(yè)務人員進行調查和交流,考察問題域中各種各樣的事物、它們的特征及相互關系

聽取問題域專家的見解領域專家——包括技術人員、管理者、老職員和富有經(jīng)驗的工人等閱讀相關材料閱讀各種與問題域有關的材料,學習相關行業(yè)和領域的基本知識借鑒以往的系統(tǒng)查閱以往在該問題域中開發(fā)過的同類系統(tǒng)的分析文檔,吸取經(jīng)驗,發(fā)現(xiàn)可以復用的類第二十三頁,共一百八十頁。正確地運用抽象原則對什么進行抽象——問題域當前目標——系統(tǒng)責任忽略與系統(tǒng)責任無關的事物只注意與之有關的事物,抽象為系統(tǒng)中的對象

例如:學校的教師、學生、教務員和警衛(wèi)忽略與系統(tǒng)責任無關的事物特征只注意與之有關的特征,抽象為對象的屬性或操作

例如:教師的專業(yè)、職稱和身高、體重正確地提煉對象例如:對書的不同抽象在圖書館管理系統(tǒng)中以一本書作為一個對象實例在書店管理系統(tǒng)中以一種書作為一個對象實例第二十四頁,共一百八十頁。由系統(tǒng)管理或使用其信息,或者在系統(tǒng)中呈現(xiàn)某些行為的各類人員由系統(tǒng)管理或使用其信息,或者在系統(tǒng)中呈現(xiàn)某些行為的各類組織由系統(tǒng)進行管理的各種物品其他策略與啟發(fā)(1)考慮問題域:抽象事物事件文件結構人員組織物品設備由系統(tǒng)進行管理或控制,或者在系統(tǒng)中呈現(xiàn)某些行為的各種設備例如:課程、計劃、交易、賬戶需要長期記憶的事件例如:銀行的取款、存款,保險公司的索賠,車輛管理中的駕駛違章泛指各種表格、檔案、證件、票據(jù)等文件例如:業(yè)務報表,人事檔案,身份證,合同,商品訂單等注意三個問題:非基礎數(shù)據(jù),同一事物的重復描述,多種事物信息組合從結構得到啟發(fā),聯(lián)想到新的對象其他一切有助于發(fā)現(xiàn)對象的事物第二十五頁,共一百八十頁。(2)考慮系統(tǒng)邊界:考察在系統(tǒng)邊界以外與系統(tǒng)交互的各類參與者考慮通過那些對象處理這些參與者的交互人員設備外系統(tǒng)(3)考慮系統(tǒng)責任:

檢查每一項功能需求是否已有相應的對象提供,發(fā)現(xiàn)遺漏的對象第二十六頁,共一百八十頁。審查與篩選(1)舍棄無用的對象通過屬性判斷:是否通過屬性記錄了某些有用的信息?通過操作判斷:是否通過操作提供了某些有用的功能?二者都不是——無用第二十七頁,共一百八十頁。(2)對象的精簡只有一個屬性的對象班級…………班主任姓名11班級班主任姓名…………只有一個操作的對象輸出設備…………格式轉換器文件格式轉換輸出設備……文件格式轉換……?call?第二十八頁,共一百八十頁。(3)與實現(xiàn)條件有關的對象例如:與圖形用戶界面(GUI)數(shù)據(jù)管理系統(tǒng)硬件及操作系統(tǒng)有關的對象——推遲到OOD考慮第二十九頁,共一百八十頁。6.4對象分類(1)將對象抽象為類,用類表示它的全部對象(2)審查和調整類的屬性或操作不適合該類的全部對象實例例:“汽車”類的“乘客限量”屬性——進一步劃分特殊類屬性及操作相同的類經(jīng)過抽象,差別很大的事物可能只保留相同的特征——考慮能否合并為一個類屬性及操作相似的類——考慮能否提升出一個一般類同一事物的重復描述例:“職員”和“工作證”——取消其中一個第三十頁,共一百八十頁。(3)類的命名類的名字應適合該類(及其特殊類)的全部對象實例反映個體而不是群體使用名詞或帶定語的名詞避免市井俚語和無意義的符號使用問題域通用的詞匯使用便于交流的語言文字可以用本地文字和英文雙重命名第三十一頁,共一百八十頁。屬性(attribute)是用來描述對象靜態(tài)特征的一個數(shù)據(jù)項。實例屬性(instanceattribute)和類屬性(classattribute)的區(qū)別例如:儀表類輸入電壓、功率及各種規(guī)定的質量指標——類屬性編號、出廠日期、精度等實際性能參數(shù)——實例屬性第7章定義對象的屬性和操作7.1屬性和操作第三十二頁,共一百八十頁。操作(operation)是用來描述對象動態(tài)特征(行為)的一個動作序列。近義詞:方法(method),服務(service)

被動操作(passiveoperation):只有接收到消息才能執(zhí)行的操作

編程語言中的函數(shù)、過程等被動成分主動操作(activeoperation):不需要接收消息就能主動執(zhí)行的操作編程語言中的進程、線程等主動成分

第三十三頁,共一百八十頁。實現(xiàn)級細節(jié)方式分析級細節(jié)方式7.2屬性和操作的表示法類名屬性名:類型名=值······操作名(參數(shù)表):返回類型······類名屬性名:類型名······操作名()······用衍型表示主動操作?主動?類名······操作名()······?主動?操作名()類名······操作名()······?主動?操作名()······操作名()······?主動?操作名()第三十四頁,共一百八十頁。7.3定義屬性(1)策略與啟發(fā)按常識這個對象應該有哪些屬性?人→姓名、地址、出生年月在當前的問題域中,對象應該有哪些屬性?商品→條形碼根據(jù)系統(tǒng)責任,這個對象應具有哪些屬性?乘客→手機號碼建立這個對象是為了保存和管理哪些信息?物資→型號、規(guī)格、庫存量為實現(xiàn)操作的功能,需要增設哪些屬性?傳感器(信號采集功能)→時間間隔是否需要增加描述對象狀態(tài)的屬性?設備→狀態(tài)

用什么屬性表示關聯(lián)和聚合?課程→任課教師,汽車→發(fā)動機第三十五頁,共一百八十頁。(2)審查與篩選

是否體現(xiàn)了以系統(tǒng)責任為目標的抽象

例:書→重量? 是否描述對象本身的特征

例:課程→電話號碼? 是否可通過繼承得到? 是否可從其他屬性直接導出?(3)推遲到OOD考慮的問題

規(guī)范化問題 對象標識 性能問題(4)屬性的命名與定位

命名:原則與類的命名相同 定位:針對所描述的對象適合類(及其子類)的全部對象實例第三十六頁,共一百八十頁。(1)對象行為分類系統(tǒng)行為例:創(chuàng)建、刪除、復制、轉存對象自身的行為——算法簡單的操作例:讀、寫屬性值對象自身的行為——算法復雜的操作計算或監(jiān)控7.4定義操作第三十七頁,共一百八十頁??紤]系統(tǒng)責任有哪些功能要求在本對象提供?考慮問題域對象在問題域對應的事物有哪些行為?分析對象狀態(tài)對象狀態(tài)的轉換是由哪些操作引起的?追蹤操作的執(zhí)行路線模擬操作的執(zhí)行,并在整個系統(tǒng)中跟蹤(2)策略與啟發(fā)第三十八頁,共一百八十頁。審查對象的每個操作是否真正有用是否直接提供系統(tǒng)責任所要求的某項功能?或者響應其它操作的請求間接地完成這種功能的某些局部操作?調整——取消無用的操作審查操作是不是高內聚的一個操作應該只完成一項單一的、完整的功能調整——拆分或合并(3)審查與調整第三十九頁,共一百八十頁??紤]問題域對象行為是被引發(fā)的,還是主動呈現(xiàn)的?(4)認識對象的主動行為操作執(zhí)行路線逆向追蹤與參與者直接交互的對象操作第四十頁,共一百八十頁。問題:分析階段為什么要給出操作流程?關于OOA/OOD分工的兩種不同觀點(5)操作過程描述——可采用流程圖或活動圖yesno動作陳述框,在框內填寫要執(zhí)行的動作。條件判斷框,給出一個判斷條件。轉接,用于連接各個框,表示它們之間的轉接關系。入口/出口標記,指出操作的開始或結束。流程圖:活動圖:在流程圖基礎上進行了一些擴展,有更強的描述能力(第9章介紹)第四十一頁,共一百八十頁。命名:動詞或動賓結構定位:與實際事物一致例:售貨員——售貨,商品——售出在一般-特殊結構中的位置——適合類的全部對象實例(6)操作的命名和定位商品售出從主語-謂語-賓語結構看對象操作的設置“售貨員銷售商品”——操作應該放在哪里?售貨員售貨?call?第四十二頁,共一百八十頁。7.5接口的概念及用途早期的面向對象方法并沒有把接口作為正式的OO概念和系統(tǒng)成分,只是用來解釋OO概念“操作是對象(類)對外提供的訪問接口”20世紀90年代中后期,接口才作為一種系統(tǒng)成分出現(xiàn)在OOPL中,并且被UML作為一種模型元素UML對接口的定義及解釋:“接口(interface)是一種類目(classifier),它表示對一組緊湊的公共特征和職責的聲明。一個接口說明了一個合約;實現(xiàn)接口的任何類目的實例必須履行這個合約。”“一個給定的類目可以實現(xiàn)多個接口,而一個接口可以由多個不同的類目來實現(xiàn)。”

第四十三頁,共一百八十頁。為什么引入接口的概念售貨員商品采購員?call??call?針對不同的應用場合組織對象的操作售貨員商品銷售采購員采購把與銷售有關的操作組織成銷售接口把與采購有關的操作組織成采購接口可替換(例如根據(jù)銷售策略的變化開發(fā)一個新的商品類)接口提供了更靈活的銜接機制第四十四頁,共一百八十頁。接口(interface)是由一組操作所形成的一個集合,它由一個名字和代表其中每個操作的特征標記構成。特征標記(signature)代表了一個操作,但并不具體地定義操作的實現(xiàn)特征標記::=<操作名>([<參數(shù)>:<類型>]{,<參數(shù)>:<類型>})[:<返回類型>]?interface?接口名稱操作1()……操作n()表示法(詳細方式):第四十五頁,共一百八十頁。接口與類的關系接口由某些類實現(xiàn)(提供),被另外某些類使用(需要)前者與接口的關系稱為實現(xiàn)(realization)后者與接口的關系稱為使用(use)?interface?銷售查詢()售出()售貨員商品使用實現(xiàn)同一個接口對實現(xiàn)者而言是供接口(providedinterface)對使用者而言是需接口(requiredinterface)第四十六頁,共一百八十頁。表示法(簡略方式):——托球-托座使用者提供者提供者的供接口(托球)使用者的需接口(托座)售貨員商品銷售例:?interface?銷售查詢()售出()售貨員商品第四十七頁,共一百八十頁。在一個類上可以畫出它所有的供接口和需接口類供接口需接口一個接口可以由多個類使用,它也可以由多個類實現(xiàn)類B類D類A類E類C多個類可以共同使用同一個接口正如對象的一個操作可以被多個對象調用多個類都可以分別實現(xiàn)同一個接口這里表示它們可以相互替換第四十八頁,共一百八十頁。接口與類的區(qū)別類既有屬性又有操作;接口只是聲明了一組操作,沒有屬性。在一個類中定義了一個操作,就要在這個類中真正地實現(xiàn)它;接口中的操作只是一個聲明,不需要在接口中加以實現(xiàn)。類可以創(chuàng)建對象實例;接口則沒有任何實例。引入接口概念的好處在接口的使用者和提供者之間建立了一種靈活的銜接機制,有利于對類、構件等軟件成分進行靈活的組裝和復用。將操作的聲明與實現(xiàn)相分離,隔離了接口的使用者和提供者的相互影響。使用者只需關注接口的聲明,不必關心它的實現(xiàn);提供者不必關心哪些類將使用這個接口,只是根據(jù)接口的聲明中所承諾的功能來實現(xiàn)它,并且可以有多種不同的實現(xiàn)。接口既可用于類圖,也可用于構件圖,對后者更為重要——教材第9章將做進一步介紹第四十九頁,共一百八十頁。接口與多繼承的比較接口果真能部分地解決多繼承問題嗎??interface?接口A操作A-1()……操作A-n()?interface?接口B操作B-1()……操作B-m()類C…………類E……操作A-1()……操作A-n()操作B-1()……操作B-m()類D……操作A-1()……操作A-n()操作B-1()……操作B-m()類A操作A-1()……操作A-n()類B操作B-1()……操作B-m()類C…………操作A-1()……操作A-n()操作B-1()……操作B-m()類E…………類D…………第五十頁,共一百八十頁。對象之間的四種關系1.一般-特殊關系

——又稱繼承關系,反映事物的分類。由這種關系可以形成一般-特殊結構。2.整體-部分關系——即聚合關系。反映事物的構成。由這種關系可以形成整體-部分結構。3.關聯(lián)關系——對象實例集合(類)上的一個關系,其中的元素提供了被開發(fā)系統(tǒng)的應用領域中一組有意義的信息。4.消息關系

——對象之間的動態(tài)聯(lián)系,即一個對象在執(zhí)行其操作時,請求其他對象為它執(zhí)行某個操作,或者向其他對象傳送某些信息。反映了事物之間的行為依賴關系。這些關系形成了類圖的關系層第8章 定義對象間的關系第五十一頁,共一百八十頁。概念及術語——同義詞和

近義詞繼承(inheritance)是描述一般類和特殊類之間關系的最傳統(tǒng)、最經(jīng)典的術語。有時作為動詞或形容詞出現(xiàn)。一般-特殊(generalization-specialization)含義最準確,而且不容易產生誤解,恰切地反映了一般類(概念)和特殊類(概念)之間的相對關系;也用于描述結構,即一般-特殊結構。缺點是書寫和閱讀比較累贅。泛化(generalization)取“一般-特殊”的一半,是UML的做法。比較簡練,但是只反映了問題的一方面。作為關系的名稱尚可,說結構是一個“泛化”則很勉強。分類(classification)接近人類日常的語言習慣,體現(xiàn)了類的層次劃分,也作為結構的名稱。在許多的場合被作為一種原則。本書主要采用“一般-特殊”這個術語8.1 一般-特殊結構相關概念:一般類、特殊類、繼承、多繼承、多態(tài)語義:“isakindof”第五十二頁,共一百八十頁。一般-特殊關系(繼承關系)是類之間的一種二元關系——是一種基本的模型元素;由這種關系所形成的結構是一般-特殊結構——是一種復合的模型成分。人員股東職員顧客股東職員例:這是1個一般-特殊結構

包含5個一般-特殊關系第五十三頁,共一百八十頁。特殊類一般類的特征一般類特殊類的特征只要有這些特征必須有這些特征對象實例集合特征集合理解一般類與特殊類之間的關系定義1:如果類A具有類B的全部屬性和全部操作,而且具有自己特有的某些屬性或操作,則A叫做B的特殊類,B叫做A的一般類。一般類與特殊類又稱父類與子類。定義2:如果類A的全部對象都是類B的對象,而且類B中存在不屬于類A的對象,則A是B的特殊類,B是A的一般類?!獣凶C明,以上兩種定義是等價的一般類和特殊類的兩個定義第五十四頁,共一百八十頁。表示法一般類特殊類特殊類集中式一般類特殊類特殊類分散式第五十五頁,共一百八十頁。如何發(fā)現(xiàn)一般-特殊結構(1)學習當前領域的分類學知識(2)按常識考慮事物的分類(3)根據(jù)一般類和特殊類的兩種定義(4)考察屬性與操作的適應范圍?公司人員姓名身份證號股份工資

············?公司人員姓名身份證號

······股東股份

············職員工資··················股東姓名身份證號股份

············職員姓名身份證號工資

············股東股份············職員工資

············?公司人員姓名身份證號

············第五十六頁,共一百八十頁。(5)考慮領域范圍內的復用現(xiàn)鈔收款機

ABCDEFXYZ收款機ABCXY現(xiàn)鈔收款機

DEFZ領域構件第五十七頁,共一百八十頁。(1)問題域是否需要這樣的分類?(例:書—線裝書)(2)系統(tǒng)責任是否需要這樣的分類?(例:職員—本市職員)(3)是否符合分類學的常識?(用“isakindof”來衡量)審查與調整(4)是否真正的繼承了一些屬性或操作?

飛機飛行高度

······自動導航

······?

汽車發(fā)動機載重量速度······運輸······運輸工具發(fā)動機載重量速度

······

飛機飛行高度

······自動導航

······汽車············運輸······第五十八頁,共一百八十頁。一般-特殊結構的簡化(1)取消沒有特殊性的特殊類運輸工具發(fā)動機載重量速度

······

飛機飛行高度

······自動導航

······汽車運輸······運輸工具發(fā)動機載重量速度

······

飛機飛行高度

······自動導航

······運輸······第五十九頁,共一百八十頁。(2)增加屬性簡化一般-特殊結構

人員············男人············女人············中國人············美國人············日本人············人員性別國籍··················第六十頁,共一百八十頁。(3)取消用途單一的一般類,減少繼承層次一般類存在的理由:*有兩個或兩個上以上的特殊類*需要用它創(chuàng)建對象實例*有助于軟件復用設備型號生產廠······開啟關閉

雷達安裝地點

······監(jiān)控

······雷達型號生產廠安裝地點

······開啟關閉監(jiān)控······電子設備激光打印機傳真機通訊設備設備電子設備計算機設備打印機民用通訊設備激光打印機傳真機第六十一頁,共一百八十頁。多繼承:允許一個特殊類具有一個以上一般類的繼承模式多繼承特殊類的內部情況在職研究生姓名······學號班級專業(yè)······職稱專業(yè)······在職單位············來自“人員”類來自“研究生”類來自“教職工”類本類中顯式定義人員姓名············教職工職稱專業(yè)············研究生學號班級專業(yè)············在職研究生在職單位

······

······例:命名沖突第六十二頁,共一百八十頁。多態(tài):多態(tài)是指同一個命名可具有不同的語義。OO方法中,常指在一般類中定義的屬性或操作被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。多邊形邊數(shù)頂點數(shù)據(jù)繪圖XY矩形邊數(shù)*頂點數(shù)據(jù)*繪圖正多邊形*頂點數(shù)據(jù)*繪圖例:第六十三頁,共一百八十頁。概念:聚合(aggregation),組合(composition)整體-部分(whole-part)整體對象,部分對象語義:“apartof”或“hasa”聚合關系描述了對象實例之間的構成情況,然而它的定義卻是在類的抽象層次給出的?!獜募险摰挠^點看聚合關系整體-部分關系(聚合關系)是兩個類之間的二元關系,其中一個類的某些對象是另一個類的某些對象的組成部分。整體-部分結構是把若干具有聚合關系的類組織在一起所形成的結構。它是一個以類為結點,以聚合關系為邊的連通有向圖。8.2整體-部分結構一種基本的模型元素由若干聚合關系形成的復合模型成分第六十四頁,共一百八十頁?!梢浴_——有問題若類A的對象a是類B對象b的一個組成部分——判斷以下幾種說法正確與否:“對象b和對象a之間具有聚合關系”“類B和類A之間具有聚合關系”“類A是類B的一個組成部分”組合(composition)是聚合關系的一種特殊情況,它表明整體對于部分的強擁有關系,即整體與部分之間具有緊密、固定的組成關系。UML把聚合定義為關聯(lián)的一種特殊情況而組合關系是聚合關系的特殊情況第六十五頁,共一百八十頁。數(shù)量數(shù)量數(shù)量數(shù)量整體對象類部分對象類整體對象類部分對象類表示法在連接符兩端通過數(shù)字或者符號給出關系雙方對象實例的數(shù)量約束,稱為多重性(multiplicity)

確定的整數(shù)——給出確定的數(shù)量——例如:1,2下界‥上界——給出一個范圍——例如:0‥1,1‥4

*——表示多個,數(shù)量不確定下界‥*——表示多個,下界確定——例如0‥*

,1‥*多重性有以下3種情況:一對一,一對多,多對多照相機1‥*0‥10‥1鏡頭機身1第六十六頁,共一百八十頁。如何發(fā)現(xiàn)整體-部分結構基本策略——考察問題域中各種具有構成關系的事物(1)物理上的整體事物和它的組成部分

例:機器、設備和它的零部件(2)組織機構和它的下級組織及部門

例:公司與子公司、部門(3)團體(組織)與成員

例:公司與職員(4)一種事物在空間上包容其它事物

例:生產車間與機器(5)抽象事物的整體與部分

例:學科與分支學科、法律與法律條款(6)具體事物和它的某個抽象方面

例:人員與身份、履歷第六十七頁,共一百八十頁。審查與篩選(1)是否屬于問題域?例:公司職員與家庭(2)是不是系統(tǒng)責任的需要?例:員工與工會(3)部分對象是否有一個以上的屬性?例:汽車與車輪(規(guī)格)(4)是否有明顯的整體-部分關系?例:學生與課程第六十八頁,共一百八十頁。整體-部分結構的高級應用技巧(1)簡化對象的定義○○○△△△□□□□●●▲▲■■飛機有關發(fā)動機的屬性與操作有關駕駛室的屬性與操作111‥41飛機○○○●●發(fā)動機△△△▲▲駕駛室□□□□■■第六十九頁,共一百八十頁。(2)支持軟件復用起重機送料車機床鉆床刨床車床電動機0‥110‥110‥11第七十頁,共一百八十頁。(3)表示數(shù)量不定的組成部分訂單編號賣方買方總金額成交日期…………訂單行商品編號訂購數(shù)量成交價金額…………1‥*1商品商品編號商品名稱單價廠商…………1*一個訂單可以包含一項到多達幾十項商品提問:能否不要訂單行,直接用商品作為訂單的部分對象?第七十一頁,共一百八十頁。(4)表示動態(tài)變化的對象特征人員營業(yè)員會計師經(jīng)理問題:對象的屬性與操作定義在系統(tǒng)運行中動態(tài)變化,例如:不理想的解決辦法:刪除、重建Shlaer/Mellor的子類型遷移“動態(tài)對象”會計師身份經(jīng)理身份營業(yè)員身份人員身份1m或人員營業(yè)員身份0‥1會計師身份0‥10‥1111解:經(jīng)理身份第七十二頁,共一百八十頁。“三友”對問題的描述及解決方法“大多數(shù)面向對象的編程語言是靜態(tài)類型化的,這意味著在創(chuàng)建對象時就限定了對象的類型。但是隨著時間的推移對象還可能扮演不同的角色?!崩樱汉蜻x者,雇員,退休者person?type?candidate?type?employee?type?retiree“對象在其生命期內動態(tài)地獲得或者丟棄類型”1999年第一版person?dynamic?candidate?dynamic?employee?dynamic?retiree2005年第二版總之都是圍繞著繼承想主意,沒有運用聚合。第七十三頁,共一百八十頁。從上述例子得到的啟示:整體-部分結構有很強的表達能力運用OO方法的基本概念可以自然而有效地解決許多在其他方法中用擴充概念解決的問題加強對基本概念的運用,不要輕易創(chuàng)造新的擴充概念person0‥10‥10‥1111用聚合概念解決:CandidateRoleEmployeeRoleRetireeRole第七十四頁,共一百八十頁。用一般-特殊結構兩種結構的變通汽車制冷設備冷藏車解釋:繼承和聚合都是使一類對象獲得另一類對象的特征,只是觀察問題的角度不同。兩種結構同用汽車冷藏車制冷設備冷藏車汽車制冷設備用整體-部分結構第七十五頁,共一百八十頁。概念:關聯(lián)(association)是兩個或者多個類上的一個關系(即這些類的對象實例集合的笛卡兒積的一個子集合),其中的元素提供了被開發(fā)系統(tǒng)的應用領域中一組有意義的信息。二元關聯(lián)(binaryassociation)n元關聯(lián)(n-aryassociation)關聯(lián)的實例——有序對或n元組,又稱鏈(link)關聯(lián)是這些有序對或n元組的集合關聯(lián)位于類的抽象層次,鏈位于對象的抽象層次8.3關聯(lián)提問:一個n元關聯(lián)中所涉及的類的數(shù)量是否可以小于n?第七十六頁,共一百八十頁。二元關聯(lián)的表示法城市**有航線(d)城市之間有航線教師學生1*指導論文教師為學生指導論文例子類A名稱類B數(shù)量數(shù)量角色角色111***多重性的表示一對一:一對多:多對多:數(shù)量約束固定數(shù)值:例如1數(shù)值范圍:例如0‥1符號:*表示多個0‥*=*1‥*表示1到多個第七十七頁,共一百八十頁。二元關聯(lián)的實現(xiàn)(一對一和一對多)編程語言:在程序中用兩個類分別實現(xiàn)關聯(lián)兩端的類;以數(shù)量約束為“1”的類的對象實例為目標,在關聯(lián)另一端的類中設置一個指向該目標的指針或者對象標識(源類的屬性)。教師1授課課程*主講教師誰?關系數(shù)據(jù)庫:用兩個數(shù)據(jù)庫表分別實現(xiàn)關聯(lián)兩端的類;以數(shù)量約束為“1”的類對應的表的元組為目標,在關聯(lián)另一端的類對應的表中設置一個指向該目標的外鍵(目標的主鍵)。教師課程第七十八頁,共一百八十頁。二元關聯(lián)的實現(xiàn)(多對多)問題:任何一端的一個對象實例的要和另一端多個對象實例發(fā)生關聯(lián),而且數(shù)量不確定。實現(xiàn)時不知道該設立多少個指針(或者對象標識、外鍵)才能夠用。

課程學生**編程語言:用兩個類分別實現(xiàn)關聯(lián)兩端的類,同時用另外一個類來實現(xiàn)它們之間的關聯(lián)。實現(xiàn)關聯(lián)的類含有兩個屬性,分別是指向兩端的類的對象實例的指針或者對象標識。

增加一個類關系數(shù)據(jù)庫:用兩個數(shù)據(jù)庫表分別實現(xiàn)關聯(lián)兩端的類,同時用另外一個數(shù)據(jù)庫表來實現(xiàn)它們之間的關聯(lián)。實現(xiàn)關聯(lián)的數(shù)據(jù)庫表含有兩個屬性,它們分別是指向兩端的表的元組的外鍵。課程課程-學生學生第七十九頁,共一百八十頁。運用簡單的概念及表示法解決各種復雜的關聯(lián)問題教師學生1*指導論文(1)帶有屬性和操作的關聯(lián)有某些信息需要描述OMT(及UML)的概念擴充關聯(lián)類(associationclass)

類1類2屬性……操作……例子教師學生1*指導論文論文題目答辯時間成績問題:增加了概念的復雜性,缺乏編程語言支持第八十頁,共一百八十頁。換一種思路考慮問題:兩類對象之間的關聯(lián)帶有某些復雜的信息,說明它們之間存在著某種事物(盡管可能是抽象事物)。用普通的對象概念來表示這種事物,簡化關聯(lián),減少概念,并加強與OOPL的對應。教師學生1*指導論文論文題目答辯時間成績*論文題目答辯時間成績

……教師學生1指導畢業(yè)論文11寫作例1第八十一頁,共一百八十頁。城市之間有航線城市有航線距離每周班次**1公司個人工作薪水*公司與個人其他例子城市之間存在航線對象城市航線距離每周班次*2公司個人工作薪水公司與個人之間存在工作對象1*11第八十二頁,共一百八十頁。復雜關聯(lián)表示法的轉換

mn類A類B關聯(lián)類屬性操作類A類B類C屬性操作11mn第八十三頁,共一百八十頁。(2)n元關聯(lián)OMT的三元關聯(lián)及其表示法問題:編程語言不能直接支持可推廣到n元關聯(lián),是否要創(chuàng)造更多的符號?多重性表示的困難(詳后)項目語言人員增設對象類表示多元關聯(lián)*項目名承擔者語言

……項目語言1任務1*人員*1***第八十四頁,共一百八十頁。在理論上,n元關聯(lián)是由若干n元組形成的集合,本質上也是一個類——是由每個n元組作為對象實例的類從實現(xiàn)的角度看,用類實現(xiàn)n元關聯(lián)是最自然的選擇例如:用一個數(shù)據(jù)庫表存放n元關聯(lián)的全部n元組外鍵1外鍵2外鍵3……外鍵n……表1表2表3表nn個表:類2類n類1類3……n個類:N元關聯(lián)第八十五頁,共一百八十頁。在模型中,把n元關聯(lián)定義為一個類并定義它與原有的各個類之間的關系——都是二元關聯(lián)類2……類n類1類3n元關聯(lián)類2……類n類1類3新增類第八十六頁,共一百八十頁。項目語言人員*?*是1還是*?1項目語言任務人員11***1*1項目語言任務人員11***n元關聯(lián)多重性表示的困難和解決辦法第八十七頁,共一百八十頁。例:課程實習中每兩名學生在一臺設備上合作完成一個題目1)若系統(tǒng)要求記錄和查閱哪兩名學生是合作者建立學生類到它自身的關聯(lián)(如同城市之間有航線)是一個二元關聯(lián),其中學生類在關聯(lián)中出現(xiàn)了兩次

2)如果還要記錄每組學生的實習題目和使用的設備建立學生、題目、設備三個類之間的4元關聯(lián)學生類在這個關聯(lián)中出現(xiàn)了兩次(3)一個類在一個關聯(lián)中多次出現(xiàn)第八十八頁,共一百八十頁。111**1題目設備學生學生實習11211**1題目設備學生實習假如該系統(tǒng)的多重性要求是:每兩名學生在一臺設備上合作完成一個題目;一個題目可以供多組學生實習,可以在不同的設備上完成;一臺設備可以供多組學生使用,可以做不同的題目。

題目設備學生學生????題目設備學生**???第八十九頁,共一百八十頁。關聯(lián)端點的復雜情況關聯(lián)端點:關聯(lián)的連接線與類符號相銜接的點修飾:在端點附近標注符號或者文字,或者畫成不同的形狀多重性(multiplicity)√

有序(ordered){ordered}限定符(qualifier)詳后導航性(navigability)聚合標志(aggregationindicator)√

角色名(rolename)

接口說明(interfacespecifier)角色名:接口說明可變性(changeability){frozen},{addOnly}可見性(visibility)?!?”、“#”或者“-”第九十頁,共一百八十頁?!跋薅ǚ顷P聯(lián)的一種屬性,它的值劃定了跨過一個關聯(lián)與一個對象相關的對象集合。”用限定符修飾的關聯(lián)稱為受限關聯(lián)(qualifiedassociation)UML對限定符的解釋類A限定符類B*0‥1表示法第九十一頁,共一百八十頁。BankaccountNoPerson*0‥1Chessboardrank:Rankfile:FileSquare11Chessboard164Squarerank:intfile:intBankAccountPerson*1*1訂單產品訂單行Amount:Number0‥1WorkDeskjobID:intReturnedItem*0‥1訂單訂單行Amount:Number*1產品*1限定符的例子及其簡單解決方案WorkDeskjobReturnedItem*1*1第九十二頁,共一百八十頁。關聯(lián)端點的修飾在UML2的變化(1)取消了接口說明和可變性兩種修飾(2)新增兩種圖形方式的修飾╳:表示不可導航●:表示擁有權(3)增加了花括號內的特性串(propertystring)

{subsets}子集合{redefines}重定義{union}合并{ordered}有序{nonunique}不唯一{sequence},{seq}序列第九十三頁,共一百八十頁。如何建立關聯(lián)1.根據(jù)問題域和系統(tǒng)責任發(fā)現(xiàn)所需要的關聯(lián)

哪些類的對象實例之間存在著對用戶業(yè)務有意義的關系?·問題域中實際事物之間有哪些值得注意的關系?·這種信息是否需要通過有序對(或者n元組)來體現(xiàn)?·這些信息是否需要在系統(tǒng)中進行保存、管理或維護?·系統(tǒng)是否需要查閱和使用由這種關系所體現(xiàn)的信息?第九十四頁,共一百八十頁。2.關聯(lián)的復雜情況處理·對關聯(lián)屬性和操作的處理

·對n元關聯(lián)的處理·避免一個類在關聯(lián)中多次出現(xiàn)

·多對多關聯(lián)的處理

供貨商客戶**多對多關聯(lián)的處理供需合同賣方買方…….**11第九十五頁,共一百八十頁。3.為關聯(lián)端點添加修飾·分析關聯(lián)的多重性·給出關聯(lián)名或角色名·識別聚合種類·其他修飾導航性、特性串等——根據(jù)實際情況決定是否采用限定符——用簡單的類和關聯(lián)的概念解決4.在類中設立實現(xiàn)關聯(lián)的屬性第九十六頁,共一百八十頁。5.關聯(lián)定位系統(tǒng)管理員1計算機服務器客戶機用戶*操作使用1*第九十七頁,共一百八十頁。6.4 消息1、什么是消息(message)

現(xiàn)實生活中——人或其他事物之間傳遞的信息,例如:人與人之間的對話、通信、發(fā)通知、留言交通信號燈對車輛和行人發(fā)出的信號人發(fā)給設備的遙控信號等……軟件系統(tǒng)中——進程或軟件成分之間傳送的信息控制信息例如一次函數(shù)調用,或喚醒一個進程數(shù)據(jù)信息例如傳送一個數(shù)據(jù)文件面向對象的系統(tǒng)中——(按嚴格封裝的要求)消息是對象之間在行為上的唯一聯(lián)系方式消息是向對象發(fā)出的服務請求(狹義)消息是對象之間在一次交互中所傳送的信息(廣義)消息有發(fā)送者和接收者,遵守共同約定的語法和語義第九十八頁,共一百八十頁?!っ總€消息都是向對象發(fā)出的服務請求最常見的是函數(shù)調用·消息都是同步的?!そ邮照邎?zhí)行消息所請求的服務?!ぐl(fā)送者等待消息處理完畢再繼續(xù)執(zhí)行?!っ總€消息只有唯一的接收者。順序系統(tǒng)中的消息第九十九頁,共一百八十頁。并發(fā)系統(tǒng)中的消息控制流內部的消息——與順序系統(tǒng)相同控制流之間的消息——情況復雜得多·消息有多種用途服務請求,傳送數(shù)據(jù),發(fā)送通知,傳遞控制信號……·消息有同步與異步之分同步消息(synchronousmessage)異步消息(asynchronousmessage)

·接收者對消息有不同響應方式創(chuàng)建控制流,立即響應,延遲響應,不響應·發(fā)送者對消息處理結果有不同期待方式等待回應,事后查看結果,不等待不查看·消息的接收者可能不唯一定向消息(directedmessage)廣播消息(broadcastmessage)

第一百頁,共一百八十頁。消息對面向對象建模的意義消息體現(xiàn)了對象之間的行為依賴關系,是實現(xiàn)對象之間的動態(tài)聯(lián)系,使系統(tǒng)成為一個能運行的整體,并使各個部分能夠協(xié)調工作的關鍵因素。在順序系統(tǒng)中消息體現(xiàn)了過程抽象的原則一個對象的操作通過消息調用其他對象的操作在OO模型中通過消息把對象操作貫穿在一起系統(tǒng)實現(xiàn)后這些操作將在一個控制流中順序地執(zhí)行在并發(fā)系統(tǒng)中控制流內部的消息使系統(tǒng)中的每個控制流呈現(xiàn)出清晰的脈絡控制流之間的消息體現(xiàn)了控制流之間的通信關系第一百零一頁,共一百八十頁。OO模型需要表示消息的哪些信息?(按重要性排序)

(1)對象之間是否存在著某種消息?(2)這種消息是控制流內部的還是控制流之間的?(3)每一種消息是從發(fā)送者的哪個操作發(fā)出的?是由接收者的哪個操作響應和處理的?(4)消息是同步的還是異步的?(5)發(fā)送者是否等待消息的處理結果?第一百零二頁,共一百八十頁。以往不同的OOA&D方法有不同的處理方式例如:Coad/Yourdon方法——在類圖中表示消息Booch方法——只在實例級的模型圖(對象圖和交互圖)中表示消息UML的處理方式:不在類圖中表示消息,只在協(xié)作圖和順序圖中表示理由:把類圖定義為靜態(tài)結構圖,不表示動態(tài)信息問題:抽象級別問題局部與全局問題實際上類圖中仍然包含動態(tài)信息操作,調用(call)依賴要不要在類圖中表示消息第一百零三頁,共一百八十頁。UML對各種箭頭的用法同步消息(順序圖、協(xié)作圖)實線封閉箭頭依賴(類圖、包圖、用況圖、構件圖)從消息接收者的操作返回(順序圖)虛線開放箭頭關聯(lián)的導航性(類圖)異步消息(順序圖)實線開放箭頭用途圖形符號箭頭種類用什么符號表示消息借用依賴關系表示類圖中的消息?call??send?控制流內部的消息控制流之間的消息第一百零四頁,共一百八十頁。ACDEF?call??call??call??send?B?call??call?例子:

緩沖區(qū)存數(shù)據(jù)取數(shù)據(jù)掛起喚醒生產者消費者?call??call??send?第一百零五頁,共一百八十頁。如何建立的消息(控制流內部) 策略——“操作模擬”和“執(zhí)行路線追蹤”(1)人為地模擬當前對象操作的執(zhí)行考慮:需要其它對象(或本對象)提供什么服務(2)判斷該消息是否屬于同一個控制流:

·二者應該順序地執(zhí)行還是并發(fā)地執(zhí)行?

·是否引起控制流的切換?

·接收者是否只有通過當前消息的觸發(fā)才能執(zhí)行?(3)向接收者畫出消息連接線,填寫模型規(guī)約上述工作進行到當前的操作模擬執(zhí)行完畢(4)沿著控制流內部的每一種消息追蹤到接收該消息的對象操作,重復進行以上的工作,直到已發(fā)現(xiàn)的全部消息都經(jīng)歷一遍。針對每個主動類的每個主動操作進行上述模擬與追蹤檢查系統(tǒng)中每個操作是否都被經(jīng)歷過發(fā)現(xiàn)遺漏的消息或多余的操作第一百零六頁,共一百八十頁。建立控制流之間消息對每個控制流考慮以下問題:(1)它在執(zhí)行時,是否需要請求其他控制流中的對象為它提供某種服務?(2)它在執(zhí)行時是否要向其他控制流中的對象提供或索取某些數(shù)據(jù)?(3)它在執(zhí)行時是否將產生某些可影響其他控制流執(zhí)行的事件?(4)各個控制流的并發(fā)執(zhí)行,是否需要相互傳遞一些同步控制信號?(5)一個控制流將在何種條件下中止執(zhí)行?在它中止之后將在何種條件下被喚醒?由哪個控制流喚醒?從上述各個角度發(fā)現(xiàn)控制流之間的消息在相應的類之間畫出消息連接線

第一百零七頁,共一百八十頁。8.5關于依賴關系什么是依賴(dependency)在以往的OO方法中,只有Firesmith方法用到這個概念,其大意是:“客戶/服務者(client/server)關系,表示客戶對服務者的依賴。”列舉的情況包括:消息傳送——其中客戶發(fā)送消息給服務者;聚合——其中聚合體(客戶)的定義依賴它的構成部分(服務者);繼承——其中派生類(客戶)依賴它的基類(服務者)以繼承其特征。結論:在Firesmith方法中,依賴并不是對象之間的一種基本關系,而是為了指出在消息、聚合、繼承等基本關系中哪個模型成分是客戶(依賴者),哪個模型成分是服務者(被依賴者)所采用的一個概括性的術語。第一百零八頁,共一百八十頁。UML1.4對依賴的定義和解釋“依賴:兩個建模元素之間的一種關系,其中一個建模元素(獨立元素)的一個改變將影響到另一個建模元素(依賴元素)。”“依賴是除了關聯(lián)、泛化、流以及元關系之外的關系的方便術語。”“依賴表明一個或者一組元素的實現(xiàn)或者功能需要另外一個或者一組元素出現(xiàn)。”“依賴指出了兩個模型元素(或者兩組模型元素)之間的語義關系。它指的是這些模型元素本身,而不需要一組實例來說明其含義。它指出這樣一種情況:目標元素的一個變化可能需要依賴中的源元素發(fā)生變化。”Booch等《UML用戶指南》的解釋“兩個事物之間的語義關系,其中一個事物(獨立事物)的改變將影響到另一個事物(依賴事物)。”第一百零九頁,共一百八十頁。UML2對依賴關系的新闡述“依賴表明模型元素之間的供方/客方(supplier/client)關系,其中供方的修改可能影響到客方元素。依賴意味著,如果沒有供方,客方的語義就是不完整的。依賴在一個模型中出現(xiàn)并不含有任何運行時的語義,它完全是以參與這種關系的模型元素的名義而不是以其實例的名義給出的。”“依賴是這樣一個關系,它表明一個或者一組模型元素的詳細說明或者實現(xiàn)需要另外一些模型元素。這意味著,依賴元素的完整語義在語義和結構上都依賴這些供方元素的定義?!闭J識:依賴著眼于表達紙面上的模型元素之間的關系,而不是這些元素所描述的客觀事物在問題域中的固有關系。依賴基本上不能視為一種面向對象的概念。第一百一十頁,共一百八十頁。DependencyAbstractionPermissionUsageBindingUML1的依賴關系?derive??refine??realize??trace??call??create??instantiate??responsibility??send??access??friend??import?DependencyAbstractionUsageRealizationSubstitutionUML2的依賴關系?derive??refine??trace??call??create??instantiate??responsibility??send?依賴所指的并不是單獨的一種關系,而是包含了許多情況第一百一十一頁,共一百八十頁。?關鍵詞?依賴的表示法以及其他外觀類似的表示作為依賴關系標準衍型的關鍵詞---------------------?instantiate??create??call??derive??refine??responsibility??send??trace?用于依賴但未明確稱為標準衍型的關鍵詞------------------?abstraction??realize??substitute??permit??use?附加于虛線開放箭頭但不稱為依賴關系的關鍵詞---------------------?access??apply??bind??extend??import??include??manifest??occurrence??represents?①②③各種標準衍型和關鍵詞的含義,見教材表8.1和表8.2第一百一十二頁,共一百八十頁。依賴關系對面向對象建模的作用繼承、聚合、關聯(lián)、消息這四種關系中都已經(jīng)蘊涵了依賴的含義,不需要再用依賴關系再做重復的表示除了上述關系之外,在OO建模中沒有多少重要的信息必須用依賴關系表達由于UML沒有在類圖中提供消息的表示法,可以借用依賴關系來表示類圖中的消息?call??send?控制流內部的消息控制流之間的消息告戒:避免建立語義含糊不清的依賴關系,更要避免用這些含糊不清的依賴關系代替含義明確的OO關系。建立一種依賴關系,就要具體地指出它是一種什么依賴。第一百一十三頁,共一百八十頁。歷史上OO方法采用其他模型圖的三種不同情況攙雜了其他方法OMT對象模型+動態(tài)模型+功能模型解決不同階段的問題OOSE需求模型+健壯模型+設計模型以面向對象方法為核心,以其他模型圖作為補充Booch方法基本模型+補充模型Coad/Yourdon類圖+流程圖UML的狀況和發(fā)展趨勢收集了大量的模型圖,從9種發(fā)展到13種從不同的視角對復雜系統(tǒng)建模各種圖向著健全和復雜的方向發(fā)展9.1類圖與其他模型圖之間的關系第9章建立輔助模型第一百一十四頁,共一百八十頁。在本書的面向對象建模方法中以類圖作為主要模型——基本模型用況圖作為需求模型其他模型圖作為輔助模型基本模型:類圖模型規(guī)約需求模型:用況圖輔助模型:包圖順序圖活動圖……對象層特征層關系層第一百一十五頁,共一百八十頁。UML2中的各種圖圖結構圖行為圖交互圖類圖構件圖對象圖活動圖用況圖狀態(tài)機圖部署圖順序圖通訊圖組合結構圖包圖交互概覽圖定時圖支持用戶從不同的視角進行系統(tǒng)建模第一百一十六頁,共一百八十頁。類圖:基本模型,是面向對象的建模最重要的模型,必不可少。用況圖:需求模型,是開展面向對象建模的基礎,提倡盡可能使用。包圖:輔助模型,各種模型圖的組織機制,系統(tǒng)規(guī)模較大時使用。順序圖:輔助模型,清晰地表示一組對象之間的交互,對類圖起到補充作用。在交互情況較復雜時使用?;顒訄D:輔助模型,可描述對象的操作流程,也可描述高層的行為。狀態(tài)機圖:輔助模型,對于狀態(tài)與行為復雜的對象,可描述對象狀態(tài)及轉移,以便更準確地定義對象的操作。構件圖,部署圖:輔助模型,在轉入實現(xiàn)階段之前,可以用它們表示如何組織構件以及如何把軟件制品部署的各個結點(計算機)上。組合結構圖、交互概覽圖、定時圖:都可以作為輔助模型,無強烈建議。對象圖、通信圖:建議不使用。在本書的方法中各種UML模型圖的作用第一百一十七頁,共一百八十頁。9.2包圖(package

diagram)包(package)是一種將其他模型元素組織起來,形成較大粒度的系統(tǒng)單位的通用機制?;舅枷耄簭牟煌牧6让枋龊陀^察系統(tǒng)——從宏觀到微觀G.Miller的“7±2原則”注意:包是一種組織機制而不是一種基本模型元素包可以嵌套包中的模型元素應具有某種意義的內在聯(lián)系包的劃分有一定的靈活性或隨意性第一百一十八頁,共一百八十頁。名稱包的表示法包的壓縮方式包的展開方式

內容名稱

教師學生一個包的例子課程管理教務管理第一百一十九頁,共一百八十頁。包之間的關系及表示法引入(import)是包之間的一種依賴關系,表明源包中的模型元素能夠直接引用目標包中的模型元素。原由——名字空間(為了避免命名沖突)以包為單位劃分名字空間,引用時給出路徑名引入關系表明可以直接引用

Class1P3Class2Class3P2?import??import?P1P4訪問(access)關系與引入關系類似,二者之間的差別:UML1:目標包的元素是否可以被引入源包的其他包引入UML2:目標包(或目標元素)的可見性不同采用不同的關系P5?access??import?第一百二十頁,共一百八十頁。

Class1P1Class2

Class1P2Class3?merge?合并(merge)是包之間的一個有向關系,表明目標包的概念定義被合并到源包中。在UML自身的定義中經(jīng)常被使用對大部分應用系統(tǒng)而言,這種層層追加的定義方式并不常見,也不值得提倡。包之間的其他關系泛化——沒有正式的定義,只在包圖的某些例子中出現(xiàn)依賴——不加任何關鍵詞的依賴關系,沒有確切的定義見講義節(jié)(其中第4條)的介紹第一百二十一頁,共一百八十頁。如何建立包圖1、將模型元素打包(類圖為例)根據(jù)類圖中的各種關系:一般-特殊結構整體-部分結構關聯(lián)消息其他關系根據(jù)問題域和用況:對象來源功能類別通信頻繁程度并發(fā)和分布情況包的內容交叉問題

教師課程管理學生課程

學籍管理學歷學位?副本?學生第一百二十二頁,共一百八十頁。2、包的命名一般-特殊結構中的根類整體-部分結構中的整體對象類其他:事物、功能、來源3、組織嵌套的包7±2原則將若干低層包合并為高層包將低層的包與零散模型元素組織到高層的包中

合并的依據(jù)參照將模型元素打包的考慮因素包之間內容是否有交叉包之間的關系是否緊密第一百二十三頁,共一百八十頁。A

Class1Class2Class3Class4Class5

BClass4Class5A

Class1BClass2Class3Class4Class5

Class1AClass2Class3

Class4BClass5Class6

CAB

Class1CClass2Class3Class5Class6Class44、減少包的嵌套層次第一百二十四頁,共一百八十頁。9.3順序圖(sequencediagram)順序圖是一種詳細地表示對象之間行為關系的圖。它按時間順序展現(xiàn)了一組相互協(xié)作的對象在完成一項功能時所執(zhí)行的操作,以及它們之間所傳送的消息,從而清晰地表示對象之間的行為關系以及操作和消息的時序關系。名稱的演變:UML之前交互圖UML1順序圖協(xié)作圖UML2順序圖通信圖定時圖交互概覽圖適應范圍:通常只適合表示一組相互協(xié)作的對象執(zhí)行一項功

溫馨提示

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

最新文檔

評論

0/150

提交評論