面向?qū)ο蠓治雠c設(shè)計分析_第1頁
面向?qū)ο蠓治雠c設(shè)計分析_第2頁
面向?qū)ο蠓治雠c設(shè)計分析_第3頁
面向?qū)ο蠓治雠c設(shè)計分析_第4頁
面向?qū)ο蠓治雠c設(shè)計分析_第5頁
已閱讀5頁,還剩175頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

顧客選購的每種商品do

輸入商品編號;

if

此種商品多于一件then

輸入商品數(shù)量

endif;

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

if

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

call通知上貨

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

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

計算應找回款數(shù),打印付款數(shù)及找回款,應收款數(shù)計入賬冊。例現(xiàn)在是9頁\一共有180頁\編輯于星期五如何定義用況針對單個用況的描述策略:把自己當作參與者,與設(shè)想中的系統(tǒng)進行交互??紤]:交互的目的是什么?需要向系統(tǒng)輸入什么信息?希望由系統(tǒng)進行什么處理并從它得到何種結(jié)果?把上述交互過程描述出來。定義系統(tǒng)中所有的用況:(1)全面地了解和收集用戶所要求的各項系統(tǒng)功能,找出所有的參與者,了解與各項功能相關(guān)的業(yè)務(wù)流程;(2)把用戶提出的功能組織成適當?shù)膯挝?,每一項功能完成一項完整而相對獨立的工作;?)窮舉每一類參與者所使用的每一項系統(tǒng)功能,定義相應的用況;(4)檢查用戶對系統(tǒng)的各項功能需求是否都通過相應的用況做了描述。現(xiàn)在是10頁\一共有180頁\編輯于星期五參與者基用況?include??extend??include?用況基用況基用況被包含用況延伸用況用況5.5用況圖參與者參與者模型元素:參與者用況延伸包含泛化5.5用況圖現(xiàn)在是11頁\一共有180頁\編輯于星期五用況之間的關(guān)系——包含、延伸、泛化延伸包含問題:延伸與包含的相似性延伸的方向問題“條件”和“延伸點”問題“泛化”問題系統(tǒng)邊界問題PerformATMTransactionWithdrawDepositFunds泛化TransferFunds

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

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

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

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

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

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

聽取問題域?qū)<业囊娊忸I(lǐng)域?qū)<摇夹g(shù)人員、管理者、老職員和富有經(jīng)驗的工人等閱讀相關(guān)材料閱讀各種與問題域有關(guān)的材料,學習相關(guān)行業(yè)和領(lǐng)域的基本知識借鑒以往的系統(tǒng)查閱以往在該問題域中開發(fā)過的同類系統(tǒng)的分析文檔,吸取經(jīng)驗,發(fā)現(xiàn)可以復用的類現(xiàn)在是23頁\一共有180頁\編輯于星期五正確地運用抽象原則對什么進行抽象——問題域當前目標——系統(tǒng)責任忽略與系統(tǒng)責任無關(guān)的事物只注意與之有關(guān)的事物,抽象為系統(tǒng)中的對象

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

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

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

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

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

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

用什么屬性表示關(guān)聯(lián)和聚合?課程→任課教師,汽車→發(fā)動機現(xiàn)在是35頁\一共有180頁\編輯于星期五(2)審查與篩選

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

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

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

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

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

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

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

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

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

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

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

······股東股份

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

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

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

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

············現(xiàn)在是56頁\一共有180頁\編輯于星期五(5)考慮領(lǐng)域范圍內(nèi)的復用現(xiàn)鈔收款機

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

DEFZ領(lǐng)域構(gòu)件現(xiàn)在是57頁\一共有180頁\編輯于星期五(1)問題域是否需要這樣的分類?(例:書—線裝書)(2)系統(tǒng)責任是否需要這樣的分類?(例:職員—本市職員)(3)是否符合分類學的常識?(用“isakindof”來衡量)審查與調(diào)整(4)是否真正的繼承了一些屬性或操作?

飛機飛行高度

······自動導航

······?

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

······

飛機飛行高度

······自動導航

······汽車············運輸······現(xiàn)在是58頁\一共有180頁\編輯于星期五一般-特殊結(jié)構(gòu)的簡化(1)取消沒有特殊性的特殊類運輸工具發(fā)動機載重量速度

······

飛機飛行高度

······自動導航

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

······

飛機飛行高度

······自動導航

······運輸······現(xiàn)在是59頁\一共有180頁\編輯于星期五(2)增加屬性簡化一般-特殊結(jié)構(gòu)

人員············男人············女人············中國人············美國人············日本人············人員性別國籍··················現(xiàn)在是60頁\一共有180頁\編輯于星期五(3)取消用途單一的一般類,減少繼承層次一般類存在的理由:*有兩個或兩個上以上的特殊類*需要用它創(chuàng)建對象實例*有助于軟件復用設(shè)備型號生產(chǎn)廠······開啟關(guān)閉

雷達安裝地點

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

······雷達型號生產(chǎn)廠安裝地點

······開啟關(guān)閉監(jiān)控······電子設(shè)備激光打印機傳真機通訊設(shè)備設(shè)備電子設(shè)備計算機設(shè)備打印機民用通訊設(shè)備激光打印機傳真機現(xiàn)在是61頁\一共有180頁\編輯于星期五多繼承:允許一個特殊類具有一個以上一般類的繼承模式多繼承特殊類的內(nèi)部情況在職研究生姓名······學號班級專業(yè)······職稱專業(yè)······在職單位············來自“人員”類來自“研究生”類來自“教職工”類本類中顯式定義人員姓名············教職工職稱專業(yè)············研究生學號班級專業(yè)············在職研究生在職單位

······

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

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

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

,1‥*多重性有以下3種情況:一對一,一對多,多對多照相機1‥*0‥10‥1鏡頭機身1現(xiàn)在是66頁\一共有180頁\編輯于星期五如何發(fā)現(xiàn)整體-部分結(jié)構(gòu)基本策略——考察問題域中各種具有構(gòu)成關(guān)系的事物(1)物理上的整體事物和它的組成部分

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

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

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

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

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

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

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

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

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

……教師學生1指導畢業(yè)論文11寫作例1現(xiàn)在是81頁\一共有180頁\編輯于星期五城市之間有航線城市有航線距離每周班次**1公司個人工作薪水*公司與個人其他例子城市之間存在航線對象城市航線距離每周班次*2公司個人工作薪水公司與個人之間存在工作對象1*11現(xiàn)在是82頁\一共有180頁\編輯于星期五復雜關(guān)聯(lián)表示法的轉(zhuǎn)換

mn類A類B關(guān)聯(lián)類屬性操作類A類B類C屬性操作11mn現(xiàn)在是83頁\一共有180頁\編輯于星期五(2)n元關(guān)聯(lián)OMT的三元關(guān)聯(lián)及其表示法問題:編程語言不能直接支持可推廣到n元關(guān)聯(lián),是否要創(chuàng)造更多的符號?多重性表示的困難(詳后)項目語言人員增設(shè)對象類表示多元關(guān)聯(lián)*項目名承擔者語言

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

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

題目設(shè)備學生學生????題目設(shè)備學生**???現(xiàn)在是89頁\一共有180頁\編輯于星期五關(guān)聯(lián)端點的復雜情況關(guān)聯(lián)端點:關(guān)聯(lián)的連接線與類符號相銜接的點修飾:在端點附近標注符號或者文字,或者畫成不同的形狀多重性(multiplicity)√

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

角色名(rolename)

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

{subsets}子集合{redefines}重定義{union}合并{ordered}有序{nonunique}不唯一{sequence},{seq}序列現(xiàn)在是93頁\一共有180頁\編輯于星期五如何建立關(guān)聯(lián)1.根據(jù)問題域和系統(tǒng)責任發(fā)現(xiàn)所需要的關(guān)聯(lián)

哪些類的對象實例之間存在著對用戶業(yè)務(wù)有意義的關(guān)系?·問題域中實際事物之間有哪些值得注意的關(guān)系?·這種信息是否需要通過有序?qū)Γɑ蛘遪元組)來體現(xiàn)?·這些信息是否需要在系統(tǒng)中進行保存、管理或維護?·系統(tǒng)是否需要查閱和使用由這種關(guān)系所體現(xiàn)的信息?現(xiàn)在是94頁\一共有180頁\編輯于星期五2.關(guān)聯(lián)的復雜情況處理·對關(guān)聯(lián)屬性和操作的處理

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

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

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

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

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

現(xiàn)在是100頁\一共有180頁\編輯于星期五消息對面向?qū)ο蠼5囊饬x消息體現(xiàn)了對象之間的行為依賴關(guān)系,是實現(xiàn)對象之間的動態(tài)聯(lián)系,使系統(tǒng)成為一個能運行的整體,并使各個部分能夠協(xié)調(diào)工作的關(guān)鍵因素。在順序系統(tǒng)中消息體現(xiàn)了過程抽象的原則一個對象的操作通過消息調(diào)用其他對象的操作在OO模型中通過消息把對象操作貫穿在一起系統(tǒng)實現(xiàn)后這些操作將在一個控制流中順序地執(zhí)行在并發(fā)系統(tǒng)中控制流內(nèi)部的消息使系統(tǒng)中的每個控制流呈現(xiàn)出清晰的脈絡(luò)控制流之間的消息體現(xiàn)了控制流之間的通信關(guān)系現(xiàn)在是101頁\一共有180頁\編輯于星期五OO模型需要表示消息的哪些信息?(按重要性排序)

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

緩沖區(qū)存數(shù)據(jù)取數(shù)據(jù)掛起喚醒生產(chǎn)者消費者?call??call??send?現(xiàn)在是105頁\一共有180頁\編輯于星期五如何建立的消息(控制流內(nèi)部) 策略——“操作模擬”和“執(zhí)行路線追蹤”(1)人為地模擬當前對象操作的執(zhí)行考慮:需要其它對象(或本對象)提供什么服務(wù)(2)判斷該消息是否屬于同一個控制流:

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

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

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

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

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

內(nèi)容名稱

教師學生一個包的例子課程管理教務(wù)管理現(xiàn)在是119頁\一共有180頁\編輯于星期五包之間的關(guān)系及表示法引入(import)是包之間的一種依賴關(guān)系,表明源包中的模型元素能夠直接引用目標包中的模型元素。原由——名字空間(為了避免命名沖突)以包為單位劃分名字空間,引用時給出路徑名引入關(guān)系表明可以直接引用

Class1P3Class2Class3P2?import??import?P1P4訪問(access)關(guān)系與引入關(guān)系類似,二者之間的差別:UML1:目標包的元素是否可以被引入源包的其他包引入UML2:目標包(或目標元素)的可見性不同采用不同的關(guān)系P5?access??import?現(xiàn)在是120頁\一共有180頁\編輯于星期五

Class1P1Class2

Class1P2Class3

溫馨提示

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

評論

0/150

提交評論