![面向?qū)ο蟮姆治雠c設(shè)計課件-分析篇_第1頁](http://file4.renrendoc.com/view/0d7880c6f969d863b1f66712d7bc66e8/0d7880c6f969d863b1f66712d7bc66e81.gif)
![面向?qū)ο蟮姆治雠c設(shè)計課件-分析篇_第2頁](http://file4.renrendoc.com/view/0d7880c6f969d863b1f66712d7bc66e8/0d7880c6f969d863b1f66712d7bc66e82.gif)
![面向?qū)ο蟮姆治雠c設(shè)計課件-分析篇_第3頁](http://file4.renrendoc.com/view/0d7880c6f969d863b1f66712d7bc66e8/0d7880c6f969d863b1f66712d7bc66e83.gif)
![面向?qū)ο蟮姆治雠c設(shè)計課件-分析篇_第4頁](http://file4.renrendoc.com/view/0d7880c6f969d863b1f66712d7bc66e8/0d7880c6f969d863b1f66712d7bc66e84.gif)
![面向?qū)ο蟮姆治雠c設(shè)計課件-分析篇_第5頁](http://file4.renrendoc.com/view/0d7880c6f969d863b1f66712d7bc66e8/0d7880c6f969d863b1f66712d7bc66e85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第二部分:分析篇北京大學(xué)信息科學(xué)技術(shù)學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計主講教師:邵維忠1第二部分:分析篇北京大學(xué)信息科學(xué)技術(shù)學(xué)院研究生課程主講教師:課件說明這組課件是本人多年來在北京大學(xué)講授“面向?qū)ο蟮姆治雠c設(shè)計”課程時制作的,隨著該領(lǐng)域理論與技術(shù)的發(fā)展而逐年改進(jìn)。目前的最新版本所適應(yīng)的教材是邵維忠、楊芙清合寫的著作《面向?qū)ο蟮姆治雠c設(shè)計》(清華大學(xué)出版社2013年1月)。為了促進(jìn)學(xué)術(shù)交流和資源共享,現(xiàn)將這套課件無償提供給國內(nèi)講授同類課程的教師和同行,歡迎他們在教學(xué)工作中使用或作為參考。課件共包括“基礎(chǔ)篇”、“分析篇”和“設(shè)計篇”三部分,是按照54學(xué)時研究生課程制作的,各位教師可根據(jù)自己的授課對象及教學(xué)計劃,對原課件進(jìn)行剪裁或重新組織。北京大學(xué)信息學(xué)院邵維忠電子信箱:wzshao@2013年7月2日2課件說明2第5章 建立需求模型——用況圖5.1需求分析和系統(tǒng)分析需求分析的確切含義是對用戶需求進(jìn)行分析,旨在產(chǎn)生一份明確、規(guī)范的需求定義。OOA的主要內(nèi)容是研究問題域中與需求有關(guān)的事物,把它們抽象為系統(tǒng)中的對象,建立類圖。確切地講,這些工作應(yīng)該叫做系統(tǒng)分析,而不是嚴(yán)格意義上的需求分析。早期的OOA缺乏一個良好的基礎(chǔ)——對需求的規(guī)范描述。需求說明需求分析健壯分析需求模型分析模型分析過程Jacobson方法(OOSE)提出用況(usecase)概念,解決了對需求的描述問題,其分析過程如下:3第5章 建立需求模型——用況圖5.1需求分析和系統(tǒng)分析需求問題域(抽象的來源)OOA模型(類圖)抽象OOA是將問題域中的事物抽象為系統(tǒng)中的對象系統(tǒng)責(zé)任(抽象的目標(biāo))抽象的目標(biāo)是系統(tǒng)責(zé)任——需求用況的概念解決了對需求的描述問題需求模型(用況圖)4問題域抽象OOA是將問題域中的事物抽象為系統(tǒng)中的對象系統(tǒng)責(zé)任5.2基本思路問題的提出:在系統(tǒng)尚未存在時,如何描繪用戶需要一個什么樣的系統(tǒng)?如何規(guī)范地定義用戶需求?考慮問題的思路:把系統(tǒng)看作一個黑箱,看它對外部的客觀世界發(fā)揮什么作用,描述其外部可見的行為。系統(tǒng)是由一條邊界包圍起來的未知空間只通過有限的幾個接口與外部交互系統(tǒng)邊界以外是與系統(tǒng)進(jìn)行交互的參與者把內(nèi)外交互情況描述清楚,就確切地定義了系統(tǒng)的需求55.2基本思路系統(tǒng)是由一條邊界包圍起來的未知空間只通過有限系統(tǒng)邊界系統(tǒng)邊界:一個系統(tǒng)所包含的所有系統(tǒng)成分與系統(tǒng)以外各種事物的分界線。系統(tǒng):被開發(fā)的計算機(jī)軟硬件系統(tǒng),不是指現(xiàn)實(shí)系統(tǒng)。系統(tǒng)成分:在OOA和OOD中定義并且在編程時加以實(shí)現(xiàn)的系統(tǒng)元素——對象對象對象對象對象對象對象參與者(人員)參與者(設(shè)備)參與者(外系統(tǒng))參與者:在系統(tǒng)邊界以外,與系統(tǒng)進(jìn)行交互的事物——人員、設(shè)備、外系統(tǒng)5.3系統(tǒng)邊界與參與者6系統(tǒng)邊界系統(tǒng)邊界:一個系統(tǒng)所包含的所有系統(tǒng)成分與系統(tǒng)以外各種系統(tǒng)邊界:一個系統(tǒng)所包含的所有系統(tǒng)成分與系統(tǒng)以外各種事物的分界線。5.3系統(tǒng)邊界與參與者責(zé)任的邊界,不是物理的邊界系統(tǒng)的范圍有多大與開發(fā)者的責(zé)任有關(guān)7系統(tǒng)邊界:一個系統(tǒng)所包含的所有系統(tǒng)成分與系統(tǒng)以外各種事物的分參與者:在系統(tǒng)邊界以外,與系統(tǒng)進(jìn)行交互的事物——人員、設(shè)備、外系統(tǒng)5.3系統(tǒng)邊界與參與者建模參與者的原則是為角色建模
參與者表示在與系統(tǒng)交互當(dāng)中對象的特定側(cè)面,同一參與者可以表示不同類的對象。如果對象的行為有不同側(cè)面的話,就可以被綁定到多個參與者上。示例
盡管許多不同的個人都使用自動售貨機(jī),但他們的行為卻可以用參與者客戶和維修技師來概括。對象Mary、Frank和Paul可能都是自動售貨機(jī)的客戶,同時Paul也可能是自動售貨機(jī)的維修技師8參與者:在系統(tǒng)邊界以外,與系統(tǒng)進(jìn)行交互的事物——人員、設(shè)備、現(xiàn)實(shí)世界中的事物與系統(tǒng)之間的關(guān)系——分四種情況(1)被抽象為系統(tǒng)中的對象汽車飛機(jī)獎杯鐘表起重機(jī)職員樓房天平(2)只作為系統(tǒng)外部的參與者與系統(tǒng)交互(4)與系統(tǒng)無關(guān)操作員(3)既是系統(tǒng)中的對象,本身又作為參與者與系統(tǒng)交互9現(xiàn)實(shí)世界中的事物與系統(tǒng)之間的關(guān)系——分四種情況(1)被抽象為人員——系統(tǒng)的直接使用者直接為系統(tǒng)服務(wù)的人員設(shè)備——與系統(tǒng)直接相聯(lián)的設(shè)備為系統(tǒng)提供信息在系統(tǒng)控制下運(yùn)行不與系統(tǒng)相連的設(shè)備×計算機(jī)設(shè)備×外系統(tǒng)——上級系統(tǒng)子系統(tǒng)其它系統(tǒng)如何發(fā)現(xiàn)參與者——考慮人員、設(shè)備、外系統(tǒng)10人員——如何發(fā)現(xiàn)參與者101、對于銀行存取款業(yè)務(wù)來說,下面列出的人員、設(shè)備與系統(tǒng)哪些是系統(tǒng)參與者?哪些是系統(tǒng)內(nèi)的對象?儲戶、柜員、大堂經(jīng)理、業(yè)務(wù)經(jīng)理、密碼器、打印機(jī)、攝像設(shè)備、ATM機(jī)、維修技師、2、為下圖界定系統(tǒng)邊界,指出系統(tǒng)的參與者。練習(xí):111、對于銀行存取款業(yè)務(wù)來說,下面列出的人員、設(shè)備與系統(tǒng)哪些是什么是用況I.Jacobson:用況是通過使用系統(tǒng)功能的某些部分而使用系統(tǒng)的一種具體方式。每個用況包括一個由參與者發(fā)動的完整的事件過程。它詳細(xì)說明了參與者和系統(tǒng)之間發(fā)生的交互。因此,一個用況是一個由參與者和系統(tǒng)在一次對話中執(zhí)行的特定的相關(guān)事務(wù)序列。全部用況的集合則說明了所有可能存在的系統(tǒng)使用方式。《對象技術(shù)詞典》:1.對一個系統(tǒng)或者一個應(yīng)用的一種單一的使用方式所進(jìn)行的描述。2.關(guān)于單個參與者在與系統(tǒng)的對話中所執(zhí)行的處理的行為陳述序列。UML:對系統(tǒng)在與它的參與者交互時所能執(zhí)行的一組動作序列(包括其變體)的描述。???本書的定義:用況是對參與者使用系統(tǒng)的一項功能時所進(jìn)行的交互過程的描述,其中包含由雙方交替執(zhí)行的一系列動作。5.4用況(usecase)12什么是用況???本書的定義:5.4用況(usecase)術(shù)語“usecase”的準(zhǔn)確含義——使用情況是對一項系統(tǒng)功能使用情況的一般描述,它對于每一次使用都普遍適應(yīng),既不是應(yīng)用實(shí)例,也不是舉例說明?!虼俗g為“用況”,而不是“用例”。幾點(diǎn)說明:(1)一個用況只描述參與者對單獨(dú)一項系統(tǒng)功能的使用情況;(2)通常是平鋪直敘的文字描述,UML也允許其他描述方式;(3)陳述參與者和系統(tǒng)在交互過程中雙方所做的事;(4)所描述的交互既可能由參與者發(fā)起也可能由系統(tǒng)發(fā)起;(5)描述彼此為對方直接地做什么事,不描述怎么做;(6)描述應(yīng)力求準(zhǔn)確,允許概括,但不要把雙方的行為混在一起;(7)一個用況可以由多種參與者分別參與或共同參與。13術(shù)語“usecase”的準(zhǔn)確含義——使用情況13識別用況的關(guān)注點(diǎn):(1)用況是用來探索需求的14識別用況的關(guān)注點(diǎn):(1)用況是用來探索需求的14識別用況的關(guān)注點(diǎn):(2)用況是給系統(tǒng)外部的參與者(人而非系統(tǒng))看的用人好懂的語言描述、用況要從參與者的角度命名15識別用況的關(guān)注點(diǎn):(2)用況是給系統(tǒng)外部的參與者(人而非系統(tǒng)識別用況的關(guān)注點(diǎn):(3)用況的含義是使用的情況,是人的使用情況,是對系統(tǒng)外的人有用的用況描述的功能是外部可見的行為、是對人來說有價值的行為、一個用況體現(xiàn)的是一項人可用的功能16識別用況的關(guān)注點(diǎn):(3)用況的含義是使用的情況,是人的使用情立足開發(fā)者的視角系統(tǒng)要求用戶輸入合法的密碼系統(tǒng)能夠接受用戶錄入取款金額系統(tǒng)能夠從帳戶中扣除取款金額系統(tǒng)允許選擇“打印或不打印收據(jù)”系統(tǒng)能夠顯示交易結(jié)束信息立足用戶視角用戶插入ATM卡系統(tǒng)要求輸入密碼用戶輸入密碼系統(tǒng)驗(yàn)證密碼正確系統(tǒng)提示用戶輸入取款金額用戶輸入取款金額并確認(rèn)系統(tǒng)驗(yàn)證取款金額合法系統(tǒng)從帳戶中扣除取款金額系統(tǒng)詢問用戶是否打印收據(jù)用戶要求不打印收據(jù)系統(tǒng)顯示“交易結(jié)束”,退卡(4)一個用況描述的功能是參與者與系統(tǒng)共同完成的識別用況的關(guān)注點(diǎn):描述用況時從參與者和系統(tǒng)兩個角度進(jìn)行、只寫外部可見的、不寫內(nèi)部的處理細(xì)節(jié)17立足用戶視角(4)一個用況描述的功能是參與者與系統(tǒng)共同完成的內(nèi)容與書寫格式
:名稱行為陳述(分左右欄)調(diào)用語句控制語句括號或標(biāo)號收款輸入開始本次收款的命令;
作好收款準(zhǔn)備,應(yīng)收款總數(shù)置為0,輸出提示信息;for顧客選購的每種商品do輸入商品編號;
if此種商品多于一件then輸入商品數(shù)量
endif;
檢索商品名稱及單價;貨架商品數(shù)減去售出數(shù);if貨架商品數(shù)低于下限thencall通知上貨endif;計算本種商品總價并打印編號、名稱、數(shù)量、單價、總價;總價累加到應(yīng)收款總數(shù);endfor;
打印應(yīng)收款總數(shù);輸入顧客付款數(shù);
計算應(yīng)找回款數(shù),打印付款數(shù)及找回款,應(yīng)收款數(shù)計入賬冊。例18內(nèi)容與書寫格式:例18用況描述的三個特點(diǎn):(1)明顯地區(qū)分參與者的行為和系統(tǒng)的行為;(2)通過調(diào)用語句明確地表示一個用況對另一個用況的引用;(3)引入控制語句、括號等結(jié)構(gòu)化成分,更利于表達(dá)復(fù)雜的用況內(nèi)容。收款輸入開始本次收款的命令;
作好收款準(zhǔn)備,應(yīng)收款總數(shù)置為0,輸出提示信息;for顧客選購的每種商品do輸入商品編號;
if此種商品多于一件then輸入商品數(shù)量
endif;
檢索商品名稱及單價;貨架商品數(shù)減去售出數(shù);if貨架商品數(shù)低于下限thencall通知上貨endif;計算本種商品總價并打印編號、名稱、數(shù)量、單價、總價;總價累加到應(yīng)收款總數(shù);endfor;
打印應(yīng)收款總數(shù);輸入顧客付款數(shù);
計算應(yīng)找回款數(shù),打印付款數(shù)及找回款,應(yīng)收款數(shù)計入賬冊。例19用況描述的三個特點(diǎn):例19如何定義用況針對單個用況的描述策略:把自己當(dāng)作參與者,與設(shè)想中的系統(tǒng)進(jìn)行交互??紤]:交互的目的是什么?需要向系統(tǒng)輸入什么信息?希望由系統(tǒng)進(jìn)行什么處理并從它得到何種結(jié)果?把上述交互過程描述出來。定義系統(tǒng)中所有的用況:(1)全面地了解和收集用戶所要求的各項系統(tǒng)功能,找出所有的參與者,了解與各項功能相關(guān)的業(yè)務(wù)流程;(2)把用戶提出的功能組織成適當(dāng)?shù)膯挝?,每一項功能完成一項完整而相對?dú)立的工作;(3)窮舉每一類參與者所使用的每一項系統(tǒng)功能,定義相應(yīng)的用況;(4)檢查用戶對系統(tǒng)的各項功能需求是否都通過相應(yīng)的用況做了描述。20如何定義用況針對單個用況的描述策略:20參與者基用況?include??extend??include?用況基用況基用況被包含用況延伸用況用況5.5用況圖參與者參與者模型元素:參與者用況延伸包含泛化5.5用況圖21參與者基用況?include??extend??in用況之間的關(guān)系——包含、延伸、泛化包含22用況之間的關(guān)系包含22包含關(guān)系(include)包含關(guān)系將一個用況合并到另一個用況的行為序列中。
位于兩個用況之間的包含關(guān)系意味著基用況顯式地在其指定位置將另一個用況包含進(jìn)來,使其成為自己的行為的一部分被包含的用況就像是子程序——它表示那些必須要重復(fù)描述的行為。
包含關(guān)系可用于提取共用的用況在具有包含關(guān)系的兩個用況中,被包含的那個用況不能單獨(dú)存在,它只能以實(shí)例的形式存在于包含它的用況之中23包含關(guān)系(include)包含關(guān)系將一個用況合并到另一個用況用況之間的關(guān)系——包含、延伸、泛化延伸24用況之間的關(guān)系延伸24擴(kuò)展關(guān)系給用況添加增量細(xì)節(jié)。
兩個用況之間的擴(kuò)展關(guān)系,代表基用例可以隱式地包含另一個用況作為其行為的一部分,包含的位置間接地由另一個用況(擴(kuò)展用況)確定。
與包含的區(qū)別
基用況可以獨(dú)立于擴(kuò)展用況單獨(dú)存在。當(dāng)一個用況有多個子流程時,可以用擴(kuò)展關(guān)系對其進(jìn)行擴(kuò)展,使得此基用況的不同子流程能在不同的情形下以擴(kuò)展用況的形式被激活。延伸關(guān)系(extend,擴(kuò)展)25延伸關(guān)系(extend,擴(kuò)展)25注意的問題1、擴(kuò)展用例經(jīng)常也是片段,它不能作為行為序列單獨(dú)出現(xiàn)。2、基用例在缺少任何擴(kuò)展用例的情況下也必須是合法用例。3、擴(kuò)展用例要確定在基用例行為序列中的插入位置。4、在多數(shù)情況下,擴(kuò)展關(guān)系有一個附加條件,只有當(dāng)控制到達(dá)插入位置時條件為真,才會發(fā)生擴(kuò)展行為。用況關(guān)系-包含和延伸26注意的問題用況關(guān)系-包含和延伸26用況之間的關(guān)系——包含、延伸、泛化PerformATMTransactionWithdrawDepositFunds泛化TransferFunds
27用況之間的關(guān)系PerformATMDeposit泛化Tra用況的兩種復(fù)雜情況1、兩個(或多個)參與者共享一個用況不同種類的參與者可能都要使用某一項系統(tǒng)功能,因此它們可能共享同一個用況例:系統(tǒng)維護(hù)登錄系統(tǒng)管理員普通用戶28用況的兩種復(fù)雜情況例:系統(tǒng)維護(hù)登錄系統(tǒng)管理員普通用戶282、一個用況的執(zhí)行,可能需要兩個(甚至多個)參與者同時與系統(tǒng)交互。例:網(wǎng)上購物網(wǎng)上購物客戶供貨商292、一個用況的執(zhí)行,可能需要兩個(甚至多個)參與者同時與系統(tǒng)用況圖的開發(fā)過程確定系統(tǒng)邊界:與外部事物的界限發(fā)現(xiàn)參與者:所有與系統(tǒng)直接交互的人、設(shè)備、外系統(tǒng)定義用況:定義用況、描述用況建立用況之間的關(guān)系:包含、延伸、泛化確定參與者和用況之間的關(guān)系:直線連接繪制用況圖:正確使用圖符使用用況圖的幾條建議最重要的工作是對用況的描述不要過分深入地描述系統(tǒng)內(nèi)部的行為細(xì)節(jié)運(yùn)用最主要概念,加強(qiáng)用況內(nèi)容的描述不要陷入延伸與包含、延伸點(diǎn)、泛化等問題的爭論和辨別了解用況的局限性——主要作用是描述功能需求5.6開發(fā)過程與建議30用況圖的開發(fā)過程使用用況圖的幾條建議5.6開發(fā)過程與建議3練習(xí):1、下面給出了兩組用況圖,分別說明哪張用況圖更合理,為什么?(1)(2)2、根據(jù)你對自動存取款機(jī)的使用經(jīng)驗(yàn),構(gòu)建自動存取款機(jī)的用況圖,描述其中的每一個用況。要求:(1)小組式建模(5-6人)(2)角色分工(3)電子版提交31練習(xí):1、下面給出了兩組用況圖,分別說明哪張用況圖更合理,為概念:對象(object)是系統(tǒng)中用來描述客觀事物的一個實(shí)體,它是構(gòu)成系統(tǒng)的一個基本單位,由一組屬性和施加于這組屬性的一組操作構(gòu)成。類(class)是具有相同屬性和操作的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,它由一個類名、一組屬性和一組操作構(gòu)成。
類和對象的關(guān)系——集合與成員,對象是類的實(shí)例在一般-特殊結(jié)構(gòu)中,特殊類的對象實(shí)例在邏輯上也都是其一般類的對象實(shí)例。不直接創(chuàng)建對象實(shí)例的類稱為抽象類(abstractclass)
學(xué)生本科生研究生例:第6章發(fā)現(xiàn)對象,定義對象類6.1對象和類的概念及其運(yùn)用32概念:在一般-特殊結(jié)構(gòu)中,特殊類的對象實(shí)例在邏輯上也都是其一主動對象(activeobject)——至少有一個操作不需要接收消息就能主動執(zhí)行的對象用于描述具有主動行為的事物主動對象的類叫做主動類(activeclass)被動對象(passiveobject)——每個操作都必須在消息的驅(qū)動下才能執(zhí)行的對象主動操作(activeoperation)
——主動對象中至少有一個不需要接收消息就能主動執(zhí)行的操作。(用于定義進(jìn)程或線程的程序單位)被動對象的操作:函數(shù)、過程、例程等3333類的語義OO方法中的類在不同的語境下有兩種不同的語義:1.一個類代表由它的全部對象實(shí)例所構(gòu)成的群體日常語言表達(dá)中的例子:“公司里有管理人員、技術(shù)人員和市場人員”“馬路上汽車很多”在OO模型中:每個類都是由它的全部對象實(shí)例所構(gòu)成的集合類代表了它的全部對象實(shí)例。2.一個類代表屬于該類的任意一個對象實(shí)例從大量的個體中抽象出一個概念,再運(yùn)用這個概念時就可以代表其中的任何一個個體,例如:
“學(xué)生有一個學(xué)號,屬于一個班級,要上課”
在OO系統(tǒng)模型中定義了一個類,它就可以代表它的任何一個對象實(shí)例,例如:汽車與發(fā)動機(jī)之間的聚合關(guān)系,表示任何一輛汽車都有一臺發(fā)動機(jī),任何一臺發(fā)動機(jī)都可以裝在0—1輛汽車上34類的語義OO方法中的類在不同的語境下有兩種不同的語義:2.在類的抽象層次建模對象是現(xiàn)實(shí)中存在的,是面向?qū)ο蠓椒ㄖ械暮诵母拍?,但是面向?qū)ο笙到y(tǒng)建模時,要在類的抽象層次上建立系統(tǒng)模型。哈利波特、金秀賢、孫儷、朱亞文。。。。。。35在類的抽象層次建模對象是現(xiàn)實(shí)中存在的,是面向?qū)ο蠓椒ㄔ陬惖某橄髮哟谓@碛桑海?)充分性:模型中一個類描述了它的全部對象實(shí)例(2)必要性:個別對象實(shí)例不能代表其他對象實(shí)例(3)符合人類的思維方式:在概念層次上表達(dá)描述事物規(guī)律(4)與OOPL保持良好的對應(yīng)(5)避免建模概念復(fù)雜化(6)消除抽象層次上的混亂36在類的抽象層次建模理由:36如何運(yùn)用類和對象的概念從對象出發(fā)認(rèn)識問題域?qū)栴}域中的事物抽象為對象;將具有共同特征的對象抽象為類用類以及它們之間的關(guān)系構(gòu)成整個系統(tǒng)模型;歸納演繹在模型中用類表示屬于該類的任何對象在類的規(guī)約中說明這個類將創(chuàng)建哪些對象實(shí)例在程序中用類定義它的全部對象編程時靜態(tài)聲明類的對象運(yùn)行時動態(tài)創(chuàng)建類的對象明星資訊系統(tǒng)開發(fā)37如何運(yùn)用類和對象的概念從對象出發(fā)認(rèn)識問題域歸納演繹在模型中用類名壓縮方式類名屬性名:類型名······操作名()······展開方式主動類《active》類名············衍型(stereotype)用關(guān)鍵字或者用圖標(biāo)表示類名············UML2主動類表示法《主動》類名············6.2表示法在模型中用類符號來表示一個類它代表了屬于該類的全部對象實(shí)例38類名壓縮方式類名屬性名:類型名操作名()展開方式主動類《對象名:類名壓縮方式屬性名=值······UML的對象表示法:細(xì)節(jié)方式對象名:類名匿名對象:類名壓縮方式屬性名=值······細(xì)節(jié)方式:類名用所謂“匿名對象”代表類的任何一個對象實(shí)例,然而這恰恰是類的作用。39對象名:類名壓縮方式屬性名=值UML的對象表示法:細(xì)節(jié)方式對6.3發(fā)現(xiàn)對象研究問題域親臨現(xiàn)場深入調(diào)查研究直接觀察并向用戶及相關(guān)的業(yè)務(wù)人員進(jìn)行調(diào)查和交流,考察問題域中各種各樣的事物、它們的特征及相互關(guān)系
聽取問題域?qū)<业囊娊忸I(lǐng)域?qū)<摇夹g(shù)人員、管理者、老職員和富有經(jīng)驗(yàn)的工人等閱讀相關(guān)材料閱讀各種與問題域有關(guān)的材料,學(xué)習(xí)相關(guān)行業(yè)和領(lǐng)域的基本知識借鑒以往的系統(tǒng)查閱以往在該問題域中開發(fā)過的同類系統(tǒng)的分析文檔,吸取經(jīng)驗(yàn),發(fā)現(xiàn)可以復(fù)用的類406.3發(fā)現(xiàn)對象研究問題域40正確地運(yùn)用抽象原則對什么進(jìn)行抽象——問題域當(dāng)前目標(biāo)——系統(tǒng)責(zé)任忽略與系統(tǒng)責(zé)任無關(guān)的事物只注意與之有關(guān)的事物,抽象為系統(tǒng)中的對象
例如:學(xué)校的教師、學(xué)生、教務(wù)員和警衛(wèi)忽略與系統(tǒng)責(zé)任無關(guān)的事物特征只注意與之有關(guān)的特征,抽象為對象的屬性或操作
例如:教師的專業(yè)、職稱和身高、體重判斷事物是否與系統(tǒng)責(zé)任有關(guān):一是看該事物是否為系統(tǒng)提供了一些有用的信息,或者說它是否需要系統(tǒng)為它保存和管理某些信息;二是看它是否向系統(tǒng)提供了某些服務(wù),或者說它是否需要系統(tǒng)描述它的某些行為。41正確地運(yùn)用抽象原則忽略與系統(tǒng)責(zé)任無關(guān)的事物判斷事物是否與系統(tǒng)正確地運(yùn)用抽象原則對什么進(jìn)行抽象——問題域當(dāng)前目標(biāo)——系統(tǒng)責(zé)任總體原則:(1)為了盡可能全面地發(fā)現(xiàn)系統(tǒng)所需要的對象,分析員應(yīng)該把握“先松后緊”的原則,寧可多余,不可遺漏。(2)對發(fā)現(xiàn)的對象進(jìn)行篩查,去掉不必要的,進(jìn)行必要的調(diào)整與合并。正確地提煉對象例如:對書的不同抽象在圖書館管理系統(tǒng)中以一本書作為一個對象實(shí)例在書店管理系統(tǒng)中以一種書作為一個對象實(shí)例42正確地運(yùn)用抽象原則總體原則:正確地提煉對象42由系統(tǒng)管理或使用其信息,或者在系統(tǒng)中呈現(xiàn)某些行為的各類人員由系統(tǒng)管理或使用其信息,或者在系統(tǒng)中呈現(xiàn)某些行為的各類組織由系統(tǒng)進(jìn)行管理的各種物品其他策略與啟發(fā)(1)考慮問題域:抽象事物事件文件結(jié)構(gòu)人員組織物品設(shè)備在系統(tǒng)中運(yùn)行并提供某些功能的設(shè)備,強(qiáng)調(diào)動態(tài)特征例如:課程、生產(chǎn)計劃、交易、賬戶需要長期記憶的事件例如:銀行的取款、存款;考慮信息的復(fù)雜程度,例如:保險公司的索賠,車輛管理中的駕駛違章泛指各種表格、檔案、證件、票據(jù)等文件例如:業(yè)務(wù)報表,人事檔案,身份證,合同,商品訂單等注意三個問題:非基礎(chǔ)數(shù)據(jù),同一事物的重復(fù)描述,多種事物信息組合從結(jié)構(gòu)得到啟發(fā),聯(lián)想到新的對象:一般-特殊結(jié)構(gòu)、整體部分結(jié)構(gòu)其他一切有助于發(fā)現(xiàn)對象的事物43由系統(tǒng)管理或使用其信息,或者在系統(tǒng)中呈現(xiàn)某些行為的各類人員由(2)考慮系統(tǒng)邊界:考察在系統(tǒng)邊界以外與系統(tǒng)交互的各類參與者考慮通過那些對象處理這些參與者的交互人員設(shè)備外系統(tǒng)(3)考慮系統(tǒng)責(zé)任:
檢查每一項功能需求是否已有相應(yīng)的對象提供,發(fā)現(xiàn)遺漏的對象兩個角度:
一個存儲人與設(shè)備的相關(guān)信息一個是處理人與設(shè)備與系統(tǒng)之間的交互一個角度:
系統(tǒng)邊界,在系統(tǒng)中設(shè)立一個對象,處理與外系統(tǒng)的接口44(2)考慮系統(tǒng)邊界:(3)考慮系統(tǒng)責(zé)任:兩個角度:一個角度:審查與篩選(1)舍棄無用的對象通過屬性判斷:是否通過屬性記錄了某些有用的信息?通過操作判斷:是否通過操作提供了某些有用的功能?二者都不是——無用問題的關(guān)鍵是:設(shè)立這個對象的動機(jī)
是為了通過其屬性提供一些有用的信息?還是通過其操作提供一些有用的功能?或者二者兼而有之?45審查與篩選(1)舍棄無用的對象問題的關(guān)鍵是:設(shè)立這個對象的動(2)對象的精簡只有一個屬性的對象班級…………班主任姓名11班級班主任姓名…………只有一個操作的對象輸出設(shè)備…………格式轉(zhuǎn)換器文件格式轉(zhuǎn)換輸出設(shè)備……文件格式轉(zhuǎn)換……?call?46(2)對象的精簡班級班主任11班級只有一個操作的對象輸出設(shè)備(3)與實(shí)現(xiàn)條件有關(guān)的對象例如:與圖形用戶界面(GUI)數(shù)據(jù)管理系統(tǒng)硬件及操作系統(tǒng)有關(guān)的對象——推遲到OOD考慮是否設(shè)立某個窗口對象來處理人機(jī)交互?是否設(shè)立一個進(jìn)程調(diào)度對象來負(fù)責(zé)業(yè)務(wù)進(jìn)程的調(diào)度?是否設(shè)立一個數(shù)據(jù)存儲對象來負(fù)責(zé)對象數(shù)據(jù)的持久存儲?47(3)與實(shí)現(xiàn)條件有關(guān)的對象是否設(shè)立某個窗口對象來處理人機(jī)交互6.4對象分類(1)將對象抽象為類,用類表示它的全部對象從對象到類的抽象過程,中間并沒有一個明顯的分界線,這種抽象過程常常是在無形中發(fā)生的。(2)審查和調(diào)整類的屬性或操作不適合該類的全部對象實(shí)例例:“汽車”類的“乘客限量”屬性——進(jìn)一步劃分特殊類屬性及操作相同的類經(jīng)過抽象,差別很大的事物可能只保留相同的特征——考慮能否合并為一個類(服裝和計算機(jī))屬性及操作相似的類——考慮能否提升出一個一般類(轎車和貨車、機(jī)床和抽風(fēng)機(jī))同一事物的重復(fù)描述例:“職員”和“工作證”——取消其中一個486.4對象分類(1)將對象抽象為類,用類表示它的全部對象4(3)類的命名類的名字應(yīng)適合該類(及其特殊類)的全部對象實(shí)例
汽車、摩托車、馬車反映個體而不是群體(學(xué)生、學(xué)生們)使用名詞或帶定語的名詞避免市井俚語和無意義的符號使用問題域通用的詞匯使用便于交流的語言文字可以用本地文字和英文雙重命名49(3)類的命名49練習(xí):1、對于谷倉和馬匹來說,在什么情況下他們應(yīng)該抽象為一個類?在什么情況下他們應(yīng)該抽象為兩個類?2、建模一個教學(xué)系統(tǒng),系統(tǒng)應(yīng)該包括哪些系統(tǒng)責(zé)任時,學(xué)生、學(xué)院、教師、樹會被抽象為該系統(tǒng)中的對象?50練習(xí):1、對于谷倉和馬匹來說,在什么情況下他們應(yīng)該抽象為一個基本共識
對象的屬性和操作描述了對象的內(nèi)部特征對象的屬性和操作是對象分類的根本依據(jù)由于不同的OOPL對封裝原則的體現(xiàn)各有不同,而OOA應(yīng)該適合不同的語言,因此,在策略上不單純以嚴(yán)格封裝的OOPL為背景第7章定義對象的屬性和操作7.1屬性和操作51基本共識第7章定義對象的屬性和操作7.1屬性和操
屬性(attribute)是用來描述對象靜態(tài)特征的一個數(shù)據(jù)項。實(shí)例屬性(instanceattribute)和類屬性(classattribute)的區(qū)別實(shí)例屬性是每個對象實(shí)例各自擁有的屬性,它描述了各個對象實(shí)例自身的特征。類屬性是一個類的全部對象實(shí)例共同擁有的屬性,它的值被這個類的全部對象實(shí)例所共享。例如:儀表類輸入電壓、功率及各種規(guī)定的質(zhì)量指標(biāo)——類屬性編號、出廠日期、精度等實(shí)際性能參數(shù)——實(shí)例屬性第7章定義對象的屬性和操作7.1屬性和操作52第7章定義對象的屬性和操作7.1屬性和操
第7章定義對象的屬性和操作7.1屬性和操作53第7章定義對象的屬性和操作7.1屬性和操操作(operation)是用來描述對象動態(tài)特征(行為)的一個動作序列。近義詞:方法(method),服務(wù)(service)
被動操作(passiveoperation):只有接收到消息才能執(zhí)行的操作
編程語言中的函數(shù)、過程等被動成分主動操作(activeoperation):不需要接收消息就能主動執(zhí)行的操作編程語言中的進(jìn)程、線程等主動成分
54操作(operation)是用來描述對象動態(tài)特征(行為)的一實(shí)現(xiàn)級細(xì)節(jié)方式分析級細(xì)節(jié)方式7.2屬性和操作的表示法類名屬性名:類型名=值······操作名(參數(shù)表):返回類型······類名屬性名:類型名······操作名()······用衍型表示主動操作?主動?類名······操作名()······?主動?操作名()類名······操作名()······?主動?操作名()······操作名()······?主動?操作名()55實(shí)現(xiàn)級細(xì)節(jié)方式分析級細(xì)節(jié)方式7.2屬性和操作的表示法類名7.3定義屬性(1)策略與啟發(fā)按常識這個對象應(yīng)該有哪些屬性?人→姓名、地址、出生年月在當(dāng)前的問題域中,對象應(yīng)該有哪些屬性?超級市場:商品→條形碼根據(jù)系統(tǒng)責(zé)任,這個對象應(yīng)具有哪些屬性?
航空訂票系統(tǒng)中的短信通知功能:乘客→手機(jī)號碼建立這個對象是為了保存和管理哪些信息?商場管理系統(tǒng):商品→規(guī)格、庫存量為實(shí)現(xiàn)操作的功能,需要增設(shè)哪些屬性?實(shí)時監(jiān)控系統(tǒng):傳感器(信號采集功能)→時間間隔(報警功能)→臨界值是否需要增加描述對象狀態(tài)的屬性?設(shè)備(關(guān)閉、待命、運(yùn)行、故障)→狀態(tài)用什么屬性表示關(guān)聯(lián)和聚合?課程→任課教師,汽車→發(fā)動機(jī)567.3定義屬性(1)策略與啟發(fā)56(2)審查與篩選
是否體現(xiàn)了以系統(tǒng)責(zé)任為目標(biāo)的抽象
例:書→重量? 是否描述了對象本身的特征
例:課程→教師的電話號碼? 是否可通過繼承得到?
例:員工→姓名全職員工→姓名? 是否可從其他屬性直接導(dǎo)出?例:人→出生年月、年齡7.3定義屬性57(2)審查與篩選7.3定義屬性57(4)屬性的命名與定位
命名:原則與類的命名相同----名詞或帶定語的名詞,規(guī)范的、問題域通用的詞匯,不使用無意義的字符和數(shù)字 定位:針對所描述的對象適合類(及其子類)的全部對象實(shí)例7.3定義屬性(3)推遲到OOD考慮的問題
規(guī)范化問題
OOA階段不要針對RDBMS的要求進(jìn)行規(guī)范化,即使已經(jīng)決定要采用RDBMS,其規(guī)范化程度的高低也要根據(jù)所采用的硬件與系統(tǒng)軟件性能做出權(quán)衡。 對象標(biāo)識
用什么作為對象在系統(tǒng)中的唯一標(biāo)識與實(shí)現(xiàn)技術(shù)有關(guān)。 性能問題
時空開銷問題的解決可能需要增設(shè)一些屬性58(4)屬性的命名與定位7.3定義屬性(3)推遲到OOD考慮(1)對象行為分類系統(tǒng)行為----在OOA階段一般不必為之定義相應(yīng)的操作例:創(chuàng)建、刪除、復(fù)制、轉(zhuǎn)存原因:一是從概念上講,此類行為并不是對象自身所具有的,而是它所在的系統(tǒng)施加于它的.二是在實(shí)現(xiàn)時編程語言往往為這些系統(tǒng)行為提供了統(tǒng)一的支持,如果實(shí)現(xiàn)條件缺乏某些支持,應(yīng)該在OOD階段補(bǔ)流相應(yīng)的操作,而不是在OOA中定義.7.4定義操作59(1)對象行為分類7.4定義操作59(1)對象行為分類對象自身的行為——封裝原則引起的附加行為(算法簡單的操作)在OOA階段不必考慮。例:讀、寫屬性值原因:一是此類操作本質(zhì)上并不是對客觀事物固有行為的抽象,而是由嚴(yán)格封裝的原則所引起的,它們對刻畫事物的固有行為無太大作用二是系統(tǒng)的實(shí)現(xiàn)未必采用嚴(yán)格封裝的原則三是把如此簡單而大量的操作放在對象中,OOA模型將變得臃腫而瑣碎。7.4定義操作60(1)對象行為分類7.4定義操作60(1)對象行為分類對象自身的行為——算法復(fù)雜的操作
在OOA中需要重點(diǎn)考慮。例:計算或監(jiān)控7.4定義操作61(1)對象行為分類7.4定義操作61考慮系統(tǒng)責(zé)任有哪些功能要求在本對象提供?例:File類中的操作有print()考慮問題域?qū)ο笤趩栴}域?qū)?yīng)的事物有哪些行為?例:實(shí)時監(jiān)控系統(tǒng)中的操作有warn()分析對象狀態(tài)----畫狀態(tài)機(jī)圖對象狀態(tài)的轉(zhuǎn)換是由哪些操作引起的?例:圖書館借閱系統(tǒng)中的操作有borrow()追蹤操作的執(zhí)行路徑----畫時序圖模擬操作的執(zhí)行,并在整個系統(tǒng)中跟蹤(3)策略與啟發(fā)62考慮系統(tǒng)責(zé)任(3)策略與啟發(fā)62審查對象的每個操作是否真正有用是否直接提供系統(tǒng)責(zé)任所要求的某項功能?或者響應(yīng)其它操作的請求間接地完成這種功能的某些局部操作?
調(diào)整——取消無用的操作審查操作是不是高內(nèi)聚的一個操作應(yīng)該只完成一項單一的、完整的功能
調(diào)整——拆分或合并(3)審查與調(diào)整63審查對象的每個操作是否真正有用(3)審查與調(diào)整63考慮問題域?qū)ο笮袨槭潜灰l(fā)的,還是主動呈現(xiàn)的?(4)認(rèn)識對象的主動行為操作執(zhí)行路徑的逆向追蹤
按消息傳遞的相反方向追蹤,直到發(fā)現(xiàn)某個操作不被任何其他對象所請求與參與者直接交互的對象操作
這些對象最有可能成為主動對象64考慮問題域(4)認(rèn)識對象的主動行為操作執(zhí)行路徑的逆向追蹤與參問題:分析階段為什么要給出操作流程?關(guān)于OOA/OOD分工的兩種不同觀點(diǎn)(5)操作過程描述——可采用流程圖或活動圖yesno動作陳述框,在框內(nèi)填寫要執(zhí)行的動作。條件判斷框,給出一個判斷條件。轉(zhuǎn)接,用于連接各個框,表示它們之間的轉(zhuǎn)接關(guān)系。入口/出口標(biāo)記,指出操作的開始或結(jié)束。流程圖:活動圖:在流程圖基礎(chǔ)上進(jìn)行了一些擴(kuò)展,有更強(qiáng)的描述能力(第9章介紹)65問題:分析階段為什么要給出操作流程?(5)操作過程描述yes命名:動詞或動賓結(jié)構(gòu)定位:需要一定的技巧與實(shí)際事物一致例:售貨員——售貨,商品——售出在一般-特殊結(jié)構(gòu)中的位置——適合類的全部對象實(shí)例(6)操作的命名和定位商品售出從主語-謂語-賓語結(jié)構(gòu)看對象操作的設(shè)置“售貨員銷售商品”——操作應(yīng)該放在哪里?售貨員售貨?call?66命名:動詞或動賓結(jié)構(gòu)(6)操作的命名和定位商品從主語-謂語-7.5接口的概念及用途早期的面向?qū)ο蠓椒ú]有把接口作為正式的OO概念和系統(tǒng)成分,只是用來解釋OO概念“操作是對象(類)對外提供的訪問接口”20世紀(jì)90年代中后期,接口才作為一種系統(tǒng)成分出現(xiàn)在OOPL中,并且被UML作為一種模型元素UML對接口的定義及解釋:“接口(interface)是一種類目(classifier),它表示對一組緊湊的公共特征和職責(zé)的聲明。一個接口說明了一個合約;實(shí)現(xiàn)接口的任何類目的實(shí)例必須履行這個合約?!薄耙粋€給定的類目可以實(shí)現(xiàn)多個接口,而一個接口可以由多個不同的類目來實(shí)現(xiàn)?!?/p>
677.5接口的概念及用途早期的面向?qū)ο蠓椒ú]有把接口作為正為什么引入接口的概念售貨員商品采購員?call??call?針對不同的應(yīng)用場合組織對象的操作售貨員商品銷售采購員采購把與銷售有關(guān)的操作組織成銷售接口把與采購有關(guān)的操作組織成采購接口可替換(例如根據(jù)銷售策略的變化開發(fā)一個新的商品類)接口提供了更靈活的銜接機(jī)制68為什么引入接口的概念售貨員商品采購員?call??call?接口(interface)是由一組操作所形成的一個集合,它由一個名字和代表其中每個操作的特征標(biāo)記構(gòu)成。特征標(biāo)記(signature)代表了一個操作,但并不具體地定義操作的實(shí)現(xiàn)特征標(biāo)記::=<操作名>([<參數(shù)>:<類型>]{,<參數(shù)>:<類型>})[:<返回類型>]?interface?接口名稱操作1()……操作n()表示法(詳細(xì)方式):69接口(interface)?interface?表示法(詳細(xì)接口與類的關(guān)系接口由某些類實(shí)現(xiàn)(提供),被另外某些類使用(需要)前者與接口的關(guān)系稱為實(shí)現(xiàn)(realization)后者與接口的關(guān)系稱為使用(use)?interface?銷售查詢()售出()售貨員商品使用實(shí)現(xiàn)同一個接口對實(shí)現(xiàn)者而言是供接口(providedinterface)對使用者而言是需接口(requiredinterface)70接口與類的關(guān)系?interface?售貨員商品使用實(shí)現(xiàn)同一個表示法(簡略方式):——托球-托座使用者提供者提供者的供接口(托球)使用者的需接口(托座)售貨員商品銷售例:?interface?銷售查詢()售出()售貨員商品71表示法(簡略方式):提供者的供接口(托球)售貨員商品銷售例:在一個類上可以畫出它所有的供接口和需接口類供接口需接口一個接口可以由多個類使用,它也可以由多個類實(shí)現(xiàn)類B類D類A類E類C多個類可以共同使用同一個接口正如對象的一個操作可以被多個對象調(diào)用多個類都可以分別實(shí)現(xiàn)同一個接口這里表示它們可以相互替換72在一個類上可以畫出它所有的供接口和需接口類供接口需接口一個接接口與類的區(qū)別類既有屬性又有操作;接口只是聲明了一組操作,沒有屬性。在一個類中定義了一個操作,就要在這個類中真正地實(shí)現(xiàn)它;接口中的操作只是一個聲明,不需要在接口中加以實(shí)現(xiàn)。類可以創(chuàng)建對象實(shí)例;接口則沒有任何實(shí)例。引入接口概念的好處在接口的使用者和提供者之間建立了一種靈活的銜接機(jī)制,有利于對類、構(gòu)件等軟件成分進(jìn)行靈活的組裝和復(fù)用。將操作的聲明與實(shí)現(xiàn)相分離,隔離了接口的使用者和提供者的相互影響。使用者只需關(guān)注接口的聲明,不必關(guān)心它的實(shí)現(xiàn);提供者不必關(guān)心哪些類將使用這個接口,只是根據(jù)接口的聲明中所承諾的功能來實(shí)現(xiàn)它,并且可以有多種不同的實(shí)現(xiàn)。接口概念對描述構(gòu)件之間的關(guān)系具有更重要的意義——教材第9章將做進(jìn)一步介紹73接口與類的區(qū)別引入接口概念的好處接口概念對描述構(gòu)件之間的關(guān)系接口與多繼承的比較接口果真能部分地解決多繼承問題嗎??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…………74接口與多繼承的比較?interface??interface練習(xí):1、在圖書借閱系統(tǒng)中,讀者可以借閱圖書,借閱操作由圖書管理員完成,說明借閱操作應(yīng)放置在哪一個類中?為什么?2、在圖書借閱系統(tǒng)中,圖書對象的創(chuàng)建操作是否需要在OOA階段進(jìn)行定義?為什么?3、用一個實(shí)際的例子描述主動對象的UML2標(biāo)準(zhǔn)表示法。4、基于自動存取款機(jī)系統(tǒng)需求模型,完成OOA階段類模型的構(gòu)建,用UML標(biāo)準(zhǔn)表示法進(jìn)行描述。(1)從問題域、系統(tǒng)邊界、系統(tǒng)責(zé)任三個方面初步發(fā)現(xiàn)系統(tǒng)對象;(2)對已發(fā)現(xiàn)的對象進(jìn)行審查和篩選;(3)將對象抽象為類;(4)初步確定類中的屬性和操作。75練習(xí):1、在圖書借閱系統(tǒng)中,讀者可以借閱圖書,借閱操作由圖書對象之間的四種關(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)系——對象實(shí)例集合(類)上的一個關(guān)系,其中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。4.消息關(guān)系——對象之間的動態(tài)聯(lián)系,即一個對象在執(zhí)行其操作時,請求其他對象為它執(zhí)行某個操作,或者向其他對象傳送某些信息。反映了事物之間的行為依賴關(guān)系。這些關(guān)系形成了類圖的關(guān)系層第8章 定義對象間的關(guān)系76對象之間的四種關(guān)系這些關(guān)系形成了類圖的關(guān)系層第8章 定義對象概念——同義詞和
近義詞繼承(inheritance)是描述一般類和特殊類之間關(guān)系的最傳統(tǒng)、最經(jīng)典的術(shù)語。有時作為動詞或形容詞出現(xiàn)。一般-特殊(generalization-specialization)含義最準(zhǔn)確,而且不容易產(chǎn)生誤解,恰切地反映了一般類(概念)和特殊類(概念)之間的相對(二元)關(guān)系;也用于描述結(jié)構(gòu),即一般-特殊結(jié)構(gòu)。缺點(diǎn)是書寫和閱讀比較累贅。泛化(generalization)取“一般-特殊”的一半,是UML的做法。比較簡練,但是只反映了問題的一方面。作為關(guān)系的名稱尚可,說結(jié)構(gòu)是一個“泛化”則很勉強(qiáng)。分類(classification)接近人類日常的語言習(xí)慣,體現(xiàn)了類的層次劃分,也作為結(jié)構(gòu)的名稱。在許多的場合被作為一種原則。本書主要采用“一般-特殊”這個術(shù)語8.1 一般-特殊結(jié)構(gòu)相關(guān)概念:一般類、特殊類、繼承、多繼承、多態(tài)語義:“isakindof”77概念——同義詞和近義詞8.1 一般-特殊結(jié)構(gòu)相關(guān)概念:一一般-特殊關(guān)系(繼承關(guān)系)是類之間的一種二元關(guān)系——是一種基本的模型元素;由這種關(guān)系所形成的結(jié)構(gòu)是一般-特殊結(jié)構(gòu)——是一種復(fù)合的模型成分。人員股東職員顧客股東職員例:這是1個一般-特殊結(jié)構(gòu)
包含5個一般特殊關(guān)系78一般-特殊關(guān)系(繼承關(guān)系)是類之間的一種二元關(guān)系人員股東職員特殊類一般類的特征一般類特殊類的特征只要有這些特征必須有這些特征對象實(shí)例集合特征集合理解一般類與特殊類之間的關(guān)系定義1:如果類A具有類B的全部屬性和全部操作,而且具有自己特有的某些屬性或操作,則A叫做B的特殊類,B叫做A的一般類。一般類與特殊類又稱父類與子類。定義2:如果類A的全部對象都是類B的對象,而且類B中存在不屬于類A的對象,則A是B的特殊類,B是A的一般類。——書中證明,以上兩種定義是等價的一般類和特殊類的兩個定義79特殊類一般類的特征一般類特殊類的特征只要有這些特征必須有這些表示法
*對繼承的屬性或操作重新定義×拒絕繼承多態(tài)性的表示符號一般類特殊類特殊類集中式一般類特殊類特殊類分散式人員股東職員顧客股東職員例:80表示法*對繼承的屬性或操作重新定義多態(tài)性的表示符號如何發(fā)現(xiàn)一般-特殊結(jié)構(gòu)(1)學(xué)習(xí)當(dāng)前領(lǐng)域的分類學(xué)知識(2)按常識考慮事物的分類(3)根據(jù)一般類和特殊類的兩種定義(4)考察屬性與操作的適應(yīng)范圍?公司人員姓名身份證號股份工資············?公司人員姓名身份證號······股東股份············職員工資··················股東姓名身份證號股份············職員姓名身份證號工資············股東股份············職員工資············?公司人員姓名身份證號············81如何發(fā)現(xiàn)一般-特殊結(jié)構(gòu)(1)學(xué)習(xí)當(dāng)前領(lǐng)域的分類學(xué)知識?公司人(5)考慮領(lǐng)域范圍內(nèi)的復(fù)用現(xiàn)鈔收款機(jī)ABCDEFXYZ收款機(jī)ABCXY現(xiàn)鈔收款機(jī)DEFZ領(lǐng)域構(gòu)件82(5)考慮領(lǐng)域范圍內(nèi)的復(fù)用現(xiàn)鈔收款機(jī)收款機(jī)現(xiàn)鈔收款機(jī)領(lǐng)域構(gòu)件(1)問題域是否需要這樣的分類?(例:書—線裝書)(2)系統(tǒng)責(zé)任是否需要這樣的分類?(例:職員—本市職員)(3)是否符合分類學(xué)的常識?(用“isakindof”來衡量)審查與調(diào)整(4)是否真正地繼承了一些屬性或操作?(航標(biāo)船—船)飛機(jī)飛行高度······自動導(dǎo)航······?汽車發(fā)動機(jī)載重量速度······運(yùn)輸······運(yùn)輸工具發(fā)動機(jī)載重量速度······飛機(jī)飛行高度······自動導(dǎo)航······汽車············運(yùn)輸······83(1)問題域是否需要這樣的分類?(例:書—線裝書)審查與調(diào)整一般-特殊結(jié)構(gòu)的簡化(1)取消沒有特殊性的特殊類運(yùn)輸工具發(fā)動機(jī)載重量速度······飛機(jī)飛行高度······自動導(dǎo)航······汽車運(yùn)輸······運(yùn)輸工具發(fā)動機(jī)載重量速度······飛機(jī)飛行高度······自動導(dǎo)航······運(yùn)輸······提問:這種簡化帶來的問題是什么?84一般-特殊結(jié)構(gòu)的簡化運(yùn)輸工具飛機(jī)汽車運(yùn)輸運(yùn)輸工具飛機(jī)(2)增加屬性簡化一般-特殊結(jié)構(gòu)人員············男人············女人············中國人············美國人············日本人············人員性別國籍··················85(2)增加屬性簡化一般-特殊結(jié)構(gòu)人員男人女人中國人美國(3)取消用途單一的一般類,減少繼承層次一般類存在的理由:*有兩個或兩個上以上的特殊類*需要用它創(chuàng)建對象實(shí)例*有助于軟件復(fù)用設(shè)備型號生產(chǎn)廠······開啟關(guān)閉雷達(dá)安裝地點(diǎn)······監(jiān)控······雷達(dá)型號生產(chǎn)廠安裝地點(diǎn)······開啟關(guān)閉監(jiān)控······電子設(shè)備激光打印機(jī)傳真機(jī)通訊設(shè)備設(shè)備電子設(shè)備計算機(jī)設(shè)備打印機(jī)民用通訊設(shè)備激光打印機(jī)傳真機(jī)86(3)取消用途單一的一般類,減少繼承層次設(shè)備雷達(dá)雷達(dá)電多繼承:允許一個特殊類具有一個以上一般類的繼承模式多繼承特殊類的內(nèi)部情況在職研究生姓名······學(xué)號班級專業(yè)······職稱專業(yè)······在職單位············來自“人員”類來自“研究生”類來自“教職工”類本類中顯式定義人員姓名············教職工職稱專業(yè)············研究生學(xué)號班級專業(yè)············在職研究生在職單位············例:命名沖突重復(fù)繼承87多繼承:允許一個特殊類具有一個以上一般類的繼承模式多繼承特殊多態(tài):多態(tài)是指同一個命名可具有不同的語義。OO方法中,常指在一般類中定義的屬性或操作被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。多邊形邊數(shù)頂點(diǎn)數(shù)據(jù)繪圖XY矩形邊數(shù)*頂點(diǎn)數(shù)據(jù)*繪圖正多邊形*頂點(diǎn)數(shù)據(jù)*繪圖例:88多態(tài):多態(tài)是指同一個命名可具有不同的語義。OO方法中,常指在概念:聚合(aggregation),組合(composition)整體-部分(whole-part)整體對象,部分對象語義:“apartof”或“hasa”聚合關(guān)系描述了對象實(shí)例之間的構(gòu)成情況,然而它的定義卻是在類的抽象層次給出的?!獜募险摰挠^點(diǎn)看聚合關(guān)系整體-部分關(guān)系(聚合關(guān)系)是兩個類之間的二元關(guān)系,其中一個類的某些對象是另一個類的某些對象的組成部分。整體-部分結(jié)構(gòu)是把若干具有聚合關(guān)系的類組織在一起所形成的結(jié)構(gòu)。它是一個以類為結(jié)點(diǎn),以聚合關(guān)系為邊的連通有向圖。8.2整體-部分結(jié)構(gòu)一種基本的模型元素由若干聚合關(guān)系形成的復(fù)合模型成分89概念:8.2整體-部分結(jié)構(gòu)一種基本的模型元素由若干聚合關(guān)系組合(composition)是聚合關(guān)系的一種特殊情況,它表明整體對于部分的強(qiáng)擁有關(guān)系,即整體與部分之間具有緊密、固定的組成關(guān)系。UML把聚合定義為關(guān)聯(lián)的一種特殊情況而組合關(guān)系是聚合關(guān)系的特殊情況90組合(composition)是聚合關(guān)系的一種特殊情況,它表數(shù)量數(shù)量數(shù)量數(shù)量整體對象類部分對象類整體對象類部分對象類表示法在連接符兩端通過數(shù)字或者符號給出關(guān)系雙方對象實(shí)例的數(shù)量約束,稱為多重性(multiplicity)
確定的整數(shù)——給出確定的數(shù)量——例如:1,2下界‥上界——給出一個范圍——例如:0‥1,1‥4
*——表示多個,數(shù)量不確定下界‥*——表示多個,下界確定——例如0‥*,1‥*多重性有以下3種情況:一對一,一對多,多對多照相機(jī)1‥*0‥10‥1鏡頭機(jī)身191數(shù)量數(shù)量數(shù)量數(shù)量整體對象類部分對象類整體對象類部分對象類表示如何發(fā)現(xiàn)整體-部分結(jié)構(gòu)基本策略——考察問題域中各種具有構(gòu)成關(guān)系的事物(1)物理上的整體事物和它的組成部分
例:機(jī)器、設(shè)備和它的零部件(2)組織機(jī)構(gòu)和它的下級組織及部門
例:公司與子公司、部門(3)團(tuán)體(組織)與成員
例:公司與職員(4)一種事物在空間上包容其它事物
例:生產(chǎn)車間與機(jī)器(5)抽象事物的整體與部分
例:學(xué)科與分支學(xué)科、法律與法律條款(6)具體事物和它的某個抽象方面
例:人員與身份、履歷92如何發(fā)現(xiàn)整體-部分結(jié)構(gòu)(1)物理上的整體事物和它的組成部分9審查與篩選(1)是否屬于問題域?例:公司職員與家庭(2)是不是系統(tǒng)責(zé)任的需要?例:員工與工會、救護(hù)車與急救設(shè)備(3)部分對象是否有一個以上的屬性?例:汽車與車輪(規(guī)格)(4)是否有明顯的整體-部分關(guān)系?例:學(xué)生與課程93審查與篩選(1)是否屬于問題域?93整體-部分結(jié)構(gòu)的高級應(yīng)用技巧(1)簡化對象的定義○○○△△△□□□□●●▲▲■■飛機(jī)有關(guān)發(fā)動機(jī)的屬性與操作有關(guān)駕駛室的屬性與操作111‥41飛機(jī)○○○●●發(fā)動機(jī)△△△▲▲駕駛室□□□□■■94整體-部分結(jié)構(gòu)的高級應(yīng)用技巧(1)簡化對象的定義○飛機(jī)有關(guān)(2)支持軟件復(fù)用起重機(jī)送料車機(jī)床鉆床刨床車床電動機(jī)0‥110‥110‥11發(fā)動機(jī)飛機(jī)三種情況:
第一種情況是系統(tǒng)中已經(jīng)定義了某個類,再定義的其他類具有該類的一些特征。第二種情況是系統(tǒng)中定義的幾個類都有某些共同的特征。第三種情況是系統(tǒng)中只有一個類,但該類中的某些特征具有某種獨(dú)立性,具有領(lǐng)域內(nèi)復(fù)用機(jī)會。95(2)支持軟件復(fù)用起重機(jī)送料車機(jī)床鉆床刨床車床電動機(jī)0‥11(3)表示數(shù)量不定的組成部分訂單編號賣方買方總金額成交日期…………訂單行商品編號訂購數(shù)量成交價金額…………1‥*1商品商品編號商品名稱單價廠商…………1*一個訂單可以包含一項到多達(dá)幾十項商品提問:能否不要訂單行,直接用商品作為訂單的部分對象?96(3)表示數(shù)量不定的組成部分訂單訂單行1‥*1商品1*一(4)表示動態(tài)變化的對象特征人員營業(yè)員會計師經(jīng)理問題:對象的屬性與操作定義在系統(tǒng)運(yùn)行中動態(tài)變化,例如:不理想的解決辦法:刪除、重建Shlaer/Mellor的子類型遷移“動態(tài)對象”不理想的原因:一是各個類的對象有一些共同的、不需要變化的屬性,隨著舊對象的刪除和新對象的建立,需要由系統(tǒng)用戶把舊對象中有用的信息重新錄入到新對象中,增加了用戶的負(fù)擔(dān)。二是讓對象反復(fù)地從一個類中刪除而加入另一個類,將為數(shù)據(jù)管理帶來困難。三是概念上不自然,一個對象僅僅因?yàn)橐恍┨卣靼l(fā)生了變化,就要讓它經(jīng)歷一番死而復(fù)生的陰陽輪回,顯得太小題大做。97(4)表示動態(tài)變化的對象特征人員營業(yè)員會計師經(jīng)理問題:對象的(4)表示動態(tài)變化的對象特征問題:對象的屬性與操作定義在系統(tǒng)運(yùn)行中動態(tài)變化,例如:會計師身份經(jīng)理身份營業(yè)員身份人員身份1m或人員營業(yè)員身份0‥1會計師身份0‥10‥1111解:經(jīng)理身份思考:自動存取款機(jī)系統(tǒng)是否存在這樣的問題?98(4)表示動態(tài)變化的對象特征問題:對象的屬性與操作定義在系統(tǒng)“三友”對問題的描述及解決方法“大多數(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年第二版總之都是圍繞著繼承想主意,沒有運(yùn)用聚合。99“三友”對問題的描述及解決方法person?type??ty從上述例子得到的啟示:整體-部分結(jié)構(gòu)有很強(qiáng)的表達(dá)能力運(yùn)用OO方法的基本概念可以自然而有效地解決許多在其他方法中用擴(kuò)充概念解決的問題加強(qiáng)對基本概念的運(yùn)用,不要輕易創(chuàng)造新的擴(kuò)充概念person0‥10‥10‥1111用聚合概念解決:CandidateRoleEmployeeRoleRetireeRole100從上述例子得到的啟示:person0‥10‥10‥1111用用一般-特殊結(jié)構(gòu)兩種結(jié)構(gòu)的變通汽車制冷設(shè)備冷藏車解釋:繼承和聚合都是使一類對象獲得另一類對象的特征,只是觀察問題的角度不同。兩種結(jié)構(gòu)同用汽車?yán)洳剀囍评湓O(shè)備冷藏車汽車制冷設(shè)備用整體-部分結(jié)構(gòu)101用一般-特殊結(jié)構(gòu)兩種結(jié)構(gòu)的變通汽車制冷設(shè)備冷藏車解釋:兩練習(xí):1、對于門這個類來說,有木門、鐵門、玻璃門之分,也有電動門、轉(zhuǎn)門、拉門之分,如何建模?2、在在線圖書銷售系統(tǒng)中,圖書包括封面、目錄和正文三個部分,封面上有圖書的名稱、出版社和作者,目錄中有章和節(jié)的標(biāo)題,如何建模?3、如果多個類中都存在一些相同的屬性和操作,此時可以選擇幾種建模方案?舉例說明。4、基于前述建模結(jié)果,完成OOA階段類之間關(guān)系的構(gòu)建,用UML標(biāo)準(zhǔn)表示法進(jìn)行描述。102練習(xí):1、對于門這個類來說,有木門、鐵門、玻璃門之分,也有電概念:關(guān)聯(lián)(association)是兩個或者多個類上的一個關(guān)系(即這些類的對象實(shí)例集合的笛卡兒積的一個子集合),其中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。二元關(guān)聯(lián)(binaryassociation)n元關(guān)聯(lián)(n-aryassociation)關(guān)聯(lián)的實(shí)例——有序?qū)騨元組,又稱鏈(link)關(guān)聯(lián)是這些有序?qū)騨元組的集合關(guān)聯(lián)位于類的抽象層次,鏈位于對象的抽象層次8.3關(guān)聯(lián)提問:一個n元關(guān)聯(lián)中所涉及的類的數(shù)量是否可以小于n?103概念:8.3關(guān)聯(lián)提問:一個n元關(guān)聯(lián)中所涉及的類的數(shù)量是否可二元關(guān)聯(lián)的表示法城市**有航線(d)城市之間有航線教師學(xué)生1*指導(dǎo)論文教師為學(xué)生指導(dǎo)論文例子類A名稱類B數(shù)量數(shù)量角色角色111***多重性的表示一對一:一對多:多對多:數(shù)量約束固定數(shù)值:例如1數(shù)值范圍:例如0‥1符號:*表示多個0‥*=*1‥*表示1到多個104二元關(guān)聯(lián)的表示法城市**有航線(d)城市之間有航線教師二元關(guān)聯(lián)的實(shí)現(xiàn)(一對一和一對多)編程語言:在程序中用兩個類分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類;以數(shù)量約束為“1”的類的對象實(shí)例為目標(biāo),在關(guān)聯(lián)另一端的類中設(shè)置一個指向該目標(biāo)的指針或者對象標(biāo)識(源類的屬性)。教師1授課課程*主講教師誰?關(guān)系數(shù)據(jù)庫:用兩個數(shù)據(jù)庫表分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類;以數(shù)量約束為“1”的類對應(yīng)的表的元組為目標(biāo),在關(guān)聯(lián)另一端的類對應(yīng)的表中設(shè)置一個指向該目標(biāo)的外鍵(目標(biāo)的主鍵)。教師課程105二元關(guān)聯(lián)的實(shí)現(xiàn)(一對一和一對多)編程語言:在程序中用兩個類分二元關(guān)聯(lián)的實(shí)現(xiàn)(多對多)問題:任何一端的一個對象實(shí)例的要和另一端多個對象實(shí)例發(fā)生關(guān)聯(lián),而且數(shù)量不確定。實(shí)現(xiàn)時不知道該設(shè)立多少個指針(或者對象標(biāo)識、外鍵)才能夠用。
課程學(xué)生**編程語言:用兩個類分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類,同時用另外一個類來實(shí)現(xiàn)它們之間的關(guān)聯(lián)。實(shí)現(xiàn)關(guān)聯(lián)的類含有兩個屬性,分別是指向兩端的類的對象實(shí)例的指針或者對象標(biāo)識。
增加一個類關(guān)系數(shù)據(jù)庫:用兩個數(shù)據(jù)庫表分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類,同時用另外一個數(shù)據(jù)庫表來實(shí)現(xiàn)它們之間的關(guān)聯(lián)。實(shí)現(xiàn)關(guān)聯(lián)的數(shù)據(jù)庫表含有兩個屬性,它們分別是指向兩端的表的元組的外鍵。課程課程-學(xué)生學(xué)生106二元關(guān)聯(lián)的實(shí)現(xiàn)(多對多)問題:任何一端的一個對象實(shí)例的要和另運(yùn)用簡單的概念及表示法解決各種復(fù)雜的關(guān)聯(lián)問題教師學(xué)生1*指導(dǎo)論文(1)帶有屬性和操作的關(guān)聯(lián)有某些信息需要描述OMT(及UML)的概念擴(kuò)充關(guān)聯(lián)類(associationclass)
類1類2屬性……操作……例子教師學(xué)生1*指導(dǎo)論文論文題目答辯時間成績問題:增加了概念的復(fù)雜性,缺乏編程語言支持107運(yùn)用簡單的概念及表示法解決各種復(fù)雜的關(guān)聯(lián)問題教師學(xué)生1*指導(dǎo)換一種思路考慮問題:兩類對象之間的關(guān)聯(lián)帶有某些復(fù)雜的信息,說明它們之間存在著某種事物(盡管可能是抽象事物)。用普通的對象概念來表示這種事物,簡化關(guān)聯(lián),減少概念,并加強(qiáng)與OOPL的對應(yīng)。教師學(xué)生1*指導(dǎo)論文論文題目答辯時間成績*論文題目答辯時間成績……教師學(xué)生1指導(dǎo)畢業(yè)論文11寫作例1108換一種思路考慮問題:教師學(xué)生1*指導(dǎo)論文論文題目*論文題目教城市之間有航線城市有航線距離每周班次**1公司個人工作薪水*公司與個人其他例子城市之間存在航線對象城市航線距離每周班次*2公司個人工作薪水公司與個人之間存在工作對象1*11109城市之間有航線城市有航線**1公司個人工作*公司與個復(fù)雜關(guān)聯(lián)表示法的轉(zhuǎn)換
mn類A類B關(guān)聯(lián)類屬性操作類A類B類C屬性操作11mn110復(fù)雜關(guān)聯(lián)表示法的轉(zhuǎn)換mn類A類B關(guān)聯(lián)類類A類B類(2)n元關(guān)聯(lián)OMT的三元關(guān)聯(lián)及其表示法問題:編程語言不能直接支持可推廣到n元關(guān)聯(lián),是否要創(chuàng)造更多的符號?多重性表示的困難(詳后)項目語言人員增設(shè)對象類表示多元關(guān)聯(lián)*項目名承擔(dān)者語言……項目語言1任務(wù)1*人員*1***111(2)n元關(guān)聯(lián)OMT的三元關(guān)聯(lián)及其表示法問題:項目語言人員增在理論上,n元關(guān)聯(lián)是由若干n元組形成的集合,本質(zhì)上也是一個類——是由每個n元組作為對象實(shí)例的類從實(shí)現(xiàn)的角度看,用類實(shí)現(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)112在理論上,n元關(guān)聯(lián)是由若干n元組形成的集合,本質(zhì)上也是一個類在模型中,把n元關(guān)聯(lián)定義為一個類并定義它與原有的各個類之間的關(guān)系——都是二元關(guān)聯(lián)類2……類n類1類3n元關(guān)聯(lián)類2……類n類1類3新增類113在模型中,把n元關(guān)聯(lián)定義為一個類類2……類n類1類3n元關(guān)聯(lián)項目語言人員*?*是1還是*?1項目語言任務(wù)人員11***1*1項目語言任務(wù)人員11***n元關(guān)聯(lián)多重性表示的困難和解決辦法114項目語言人員*?*1項目語言任務(wù)人員11***例:課程實(shí)習(xí)中每兩名學(xué)生在一臺設(shè)備上合作完成一個題目1)若系統(tǒng)要求記錄和查閱哪兩名學(xué)生是合作者建立學(xué)生類到它自身的關(guān)聯(lián)(如同城市之間有航線)是一個二元關(guān)聯(lián),其中學(xué)生類在關(guān)聯(lián)中出現(xiàn)了兩次2)如果還要記錄每組學(xué)生的實(shí)習(xí)題目和使用的設(shè)備建立學(xué)生、題目、設(shè)備三個類之間的4元關(guān)聯(lián)學(xué)生類在這個關(guān)聯(lián)中出現(xiàn)了兩次(3)一個類在一個關(guān)聯(lián)中多次出現(xiàn)115例:課程實(shí)習(xí)中每兩名學(xué)生在一臺設(shè)備上合作完成一個題目(3)一111**1題目設(shè)備學(xué)生學(xué)生實(shí)習(xí)11211**1題目設(shè)備學(xué)生實(shí)習(xí)假如該系統(tǒng)的多重性要求是:每兩名學(xué)生在一臺設(shè)備上合作完成一個題目;一個題目可以供多組學(xué)生實(shí)習(xí),可以在不同的設(shè)備上完成;一臺設(shè)備可以供多組學(xué)生使用,可以做不同的題目。
題目設(shè)備學(xué)生學(xué)生????題目設(shè)備學(xué)生**???116111**1題目設(shè)備學(xué)生學(xué)生實(shí)習(xí)11211**1題關(guān)聯(lián)端點(diǎn)的復(fù)雜情況關(guān)聯(lián)端點(diǎn):關(guān)聯(lián)的連接線與類符號相銜接的點(diǎn)修飾:在端點(diǎn)附近標(biāo)注符號或者文字,或者畫成不同的形狀多重性(multiplicity)√
有序(ordered){ordered}限定符(qualifier)詳后導(dǎo)航性(navigability)聚合標(biāo)志(aggregationindicator)√
角色名(rolename)
√
接口說明(interfacespecifier)角色名:接口說明可變性(changeability){frozen},{addOnly}可見性(visibility)?!?”、“#”或者“-”117關(guān)聯(lián)端點(diǎn)的復(fù)雜情況多重性(multiplicity)“限定符是關(guān)聯(lián)的一種屬性,它的值劃定了跨過一個關(guān)聯(lián)與一個對象相關(guān)的對象集合。”用限定符修飾的關(guān)聯(lián)稱為受限關(guān)聯(lián)(qualifiedassociation)UML對限定符的解釋類A限定符類B*0‥1表示法118“限定符是關(guān)聯(lián)的一種屬性,它的值劃定了跨過一個關(guān)聯(lián)與一個對象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*1119BankaccountNoPerson*0‥1Chessbo關(guān)聯(lián)端點(diǎn)的修飾在UML2的變化(1)取消了接口說明和可變性兩種修飾(2)新增兩種圖形方式的修飾╳:表示不可導(dǎo)航●:表示擁有權(quán)(3)增加了花括號內(nèi)的特性串(propertystring)
{subsets}子集合{redefines}重定義{union}合并{ordered}有序{nonunique}不唯一{sequence},{seq}序列120關(guān)聯(lián)端點(diǎn)的修飾在UML2的變化(1)取消了接口說明和可變性如何建立關(guān)聯(lián)1.根據(jù)問題域和系統(tǒng)責(zé)任發(fā)現(xiàn)所需要的關(guān)聯(lián)
哪些類的對象實(shí)例之間存在著對用戶業(yè)務(wù)有意義的關(guān)系?·問題域中實(shí)際事物之間有哪些值得注意的關(guān)系?·這種信息是否需要通過有序?qū)Γɑ蛘遪元組)來體現(xiàn)?·這些信息是否需要在系統(tǒng)中進(jìn)行保存、管理或維護(hù)?·系統(tǒng)是否需要查閱和使用由這種關(guān)系所體現(xiàn)的信息?121如何建立關(guān)聯(lián)1212.關(guān)聯(lián)的復(fù)雜情況處理·對關(guān)聯(lián)屬性和操作的處理
·對n元關(guān)聯(lián)的處理·避免一個類在關(guān)聯(lián)中多次出現(xiàn)
·多對多關(guān)聯(lián)的處理
供貨商客戶**多
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 7-1《短歌行》說課稿 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊
- 2025年企業(yè)招標(biāo)承包經(jīng)營合同
- 《7 剪紙藝術(shù)》(說課稿)-2023-2024學(xué)年四年級下冊綜合實(shí)踐活動粵教版
- Module 8 Unit 1 Were going to visit Hainan.(說課稿)-2024-2025學(xué)年外研版(三起)英語四年級上冊
- Unit 2 My week Period 4 Get ready for the new school year(說課稿)-2024-2025學(xué)年人教PEP版英語五年級上冊
- 19海濱小城 (說課稿)-2024-2025學(xué)年三年級上冊語文統(tǒng)編版
- 2025農(nóng)副產(chǎn)品買賣合同書模板(合同版本)
- 2023八年級語文上冊 第五單元 口語交際 復(fù)述與轉(zhuǎn)述配套說課稿 新人教版
- 2024年春八年級歷史下冊 第10課 社會主義民主與法制的加強(qiáng)說課稿1(pdf) 川教版
- 2023二年級語文下冊 第一單元 1 古詩二首 詠柳說課稿 新人教版
- 2025-2030全球廢棄食用油 (UCO) 轉(zhuǎn)化為可持續(xù)航空燃料 (SAF) 的催化劑行業(yè)調(diào)研及趨勢分析報告
- 山東省臨沂市蘭山區(qū)2024-2025學(xué)年七年級上學(xué)期期末考試生物試卷(含答案)
- 湖北省武漢市2024-2025學(xué)年度高三元月調(diào)考英語試題(含答案無聽力音頻有聽力原文)
- 商務(wù)星球版地理八年級下冊全冊教案
- (正式版)SHT 3551-2024 石油化工儀表工程施工及驗(yàn)收規(guī)范
- JTGT H21-2011 公路橋梁技術(shù)狀況評定標(biāo)準(zhǔn)
- 資源循環(huán)科學(xué)和工程專業(yè)建設(shè)探討
- 中國營養(yǎng)師培訓(xùn)教材1
- 《民航服務(wù)溝通技巧》教案第13課內(nèi)部溝通基礎(chǔ)知識
- 2023年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招(語文)試題庫含答案解析
- FZ/T 54024-2019錦綸6預(yù)取向絲
評論
0/150
提交評論