版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、軟件工程 面向?qū)ο蟮姆治龊驮O(shè)計(jì)1復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)過程UML概述用況建模靜態(tài)建模動態(tài)建模物理體系結(jié)構(gòu)建模2內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)過程UML概述用況建模靜態(tài)建模動態(tài)建模物理體系結(jié)構(gòu)建模3Peter Coad和Edward Yourdon提出用下列等式識認(rèn)面向?qū)ο蠓椒ǎ好嫦驅(qū)ο?= 對象(object) + 分類(classification) + 繼承(inheritance) + 通過消息的通信(communication with messages)可以說,采用這四個概念開發(fā)的軟件系統(tǒng)是面向?qū)ο蟮?
2、面向?qū)ο蠓椒ǖ某霈F(xiàn)很快受到計(jì)算機(jī)軟件界的青睞,并成為20世紀(jì)90年代的主流開發(fā)方法。我們可以從下列幾個方面來分析其原因:從認(rèn)知學(xué)的角度來看,面向?qū)ο蠓椒ǚ先藗儗陀^世界的認(rèn)識規(guī)律。面向?qū)ο蠓椒ㄩ_發(fā)的軟件系統(tǒng)易于維護(hù),其體系結(jié)構(gòu)易于理解、擴(kuò)充和修改。面向?qū)ο蠓椒ㄖ械睦^承機(jī)制有力支持軟件的復(fù)用。 5面向?qū)ο蟮幕靖拍?1. 對象(object) 對象是指一組屬性以及這組屬性上的專用操作的封裝體。 屬性(attribute)通常是一些數(shù)據(jù),有時它也可以是另一個對象。每個對象都有它自己的屬性值,表示該對象的狀態(tài)。對象中的屬性只能通過該對象所提供的操作來存取或修改。 操作(operation)(也稱方
3、法或服務(wù))規(guī)定了對象的行為,表示對象所能提供的服務(wù)。 6封裝(encapsulation)是一種信息隱蔽技術(shù),用戶只能看見對象封裝界面上的信息,對象的內(nèi)部實(shí)現(xiàn)對用戶是隱蔽的。封裝的目的是使對象的使用者和生產(chǎn)者分離,使對象的定義和實(shí)現(xiàn)分開。 一個對象通??捎蓪ο竺?、屬性和操作三部分組成。72. 類(class) 類是一組具有相同屬性和相同操作的對象的集合。一個類中的每個對象都是這個類的一個實(shí)例(instance)。 類是創(chuàng)建對象的模板,從同一個類實(shí)例化的每個對象都具有相同的結(jié)構(gòu)和行為。8轎 車型號:字符串顏色:字符串牌照號:字符串張經(jīng)理的轎車型號=桑塔納顏色=紅色牌照號=滬AN2037類實(shí)例對象
4、93. 繼承(inheritance) 繼承是類間的基本關(guān)系,它是基于層次關(guān)系的不同類共享數(shù)據(jù)和操作的一種機(jī)制。父類中定義了其所有子類的公共屬性和操作,在子類中除了定義自己特有的屬性和操作外,可以繼承其父類(或祖先類)的屬性和操作,還可以對父類(或祖先類)中的操作重新定義其實(shí)現(xiàn)方法。 10 矩形長寬對角線計(jì)算面積計(jì)算對角線 多邊形頂點(diǎn)數(shù)頂點(diǎn)坐標(biāo)計(jì)算面積旋轉(zhuǎn)11有時,我們定義一個類,它把一些類組織起來,提供一些公共的行為,但并不需要使用這個類的實(shí)例,而僅使用其子類的實(shí)例。我們把這種沒有實(shí)例的類稱為抽象類(abstract class)。在抽象類中可以定義抽象操作,抽象操作指:只定義這個類的操作接
5、口,不定義它的實(shí)現(xiàn),其實(shí)現(xiàn)部分由其子類定義。抽象操作操作名用斜體字表示,也可以在操作特征(signature)后面加上特征字符串a(chǎn)bstract。12交通工具飛行器汽 車 船轎 車貨 車 一般-特殊關(guān)系13 如果一個子類只有唯一一個父類,這個繼承稱為單一繼承。如果一個子類有一個以上的父類,這種繼承稱為多重繼承。 水上交通工具 陸上交通工具 水陸兩棲交通工具多重繼承144. 消息(message) 消息傳遞是對象間通信的手段,一個對象通過向另一個對象發(fā)送消息來請求其服務(wù)。一個消息通常包括接收對象名、調(diào)用的操作名和適當(dāng)?shù)膮?shù)(如果有必要的話)。消息只告訴接收對象需要完成什么操作,但并不指示接收者怎
6、樣完成操作。消息完全由接收者解釋,接收者獨(dú)立決定采用什么方法完成所需的操作。 155. 多態(tài)性(polymorphism) 多態(tài)性是指同一個操作作用于不同的對象上可以有不同的解釋,并產(chǎn)生不同的執(zhí)行結(jié)果。例如“畫”操作,作用在“矩形”對象上,則在屏幕上畫一個矩形,作用在“圓”對象上,則在屏幕上畫一個圓。也就是說,相同操作的消息發(fā)送給不同的對象時,每個對象將根據(jù)自己所屬類中定義的這個操作去執(zhí)行,從而產(chǎn)生不同的結(jié)果。 166. 動態(tài)綁定(dynamic binding) 動態(tài)綁定是指在程序運(yùn)行時才將消息所請求的操作與實(shí)現(xiàn)該操作的方法連接起來。 傳統(tǒng)的程序設(shè)計(jì)語言的過程調(diào)用與目標(biāo)代碼的連接(即調(diào)用哪個
7、過程)放在程序運(yùn)行前(即編譯時)進(jìn)行(稱為靜態(tài)綁定),而動態(tài)綁定則是把這種連接推遲到運(yùn)行時才進(jìn)行。 動態(tài)綁定是一種在運(yùn)行時確定被執(zhí)行代碼的技術(shù)。17在一般與特殊關(guān)系中,子類是父類的一個特例,所以父類對象可以出現(xiàn)的地方,也允許其子類對象出現(xiàn)。因此在運(yùn)行過程中,當(dāng)一個對象發(fā)送消息請求服務(wù)時,要根據(jù)接收對象的具體情況將請求的操作與實(shí)現(xiàn)的方法進(jìn)行連接,即動態(tài)綁定。 18if 條件 then p := t ; else p := r ;area := p.getarea ;getArea abstractpolygonareahexagongetArearectanglegetArealengthwid
8、thtrianglegetAreaVar p : polygon ;Var t : triangle := triangle.new ;Var r : rectangle := rectangle.new ; 19內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮脑O(shè)計(jì)過程UML概述用況建模靜態(tài)建模動態(tài)建模物理體系結(jié)構(gòu)建模20面向?qū)ο蟮脑O(shè)計(jì)過程面向?qū)ο笤O(shè)計(jì)的一般步驟如下:系統(tǒng)設(shè)計(jì)將子系統(tǒng)分配到處理器選擇實(shí)現(xiàn)數(shù)據(jù)管理、界面支持和任務(wù)管理的設(shè)計(jì)策略為系統(tǒng)設(shè)計(jì)合適的控制機(jī)制復(fù)審并考慮權(quán)衡(折衷)21對象設(shè)計(jì)在過程級別(procedural lavel)設(shè)計(jì)每個操作,即設(shè)計(jì)每個操作的實(shí)現(xiàn)細(xì)節(jié)定義內(nèi)部類為類屬性設(shè)計(jì)內(nèi)部
9、數(shù)據(jù)結(jié)構(gòu)消息設(shè)計(jì) 使用對象間的協(xié)作和對象-關(guān)系模型,設(shè)計(jì)消息模型復(fù)審 復(fù)審設(shè)計(jì)模型并在需要時迭代。 221. 系統(tǒng)設(shè)計(jì)1) 將分析模型劃分成子系統(tǒng) 在OO系統(tǒng)設(shè)計(jì)中,我們把分析模型中緊密相關(guān)的類、關(guān)系等設(shè)計(jì)元素包裝成子系統(tǒng)。 通常,子系統(tǒng)的所有元素共享某些公共的性質(zhì),它們可能都涉及完成相同的功能;它們可能駐留在相同的產(chǎn)品硬件中;或者它們可能管理相同的類和資源。子系統(tǒng)由它們的責(zé)任所刻畫,即,一個子系統(tǒng)可以通過它提供的服務(wù)來標(biāo)識。在OOD中,這種服務(wù)是完成特定功能的一組操作。 23 子系統(tǒng)的設(shè)計(jì)準(zhǔn)則是:(1) 子系統(tǒng)應(yīng)具有定義良好的接口,通過接口和系統(tǒng)的其它部分通信;(2) 除了少數(shù)的“通信類”
10、外,子系統(tǒng)中的類應(yīng)只和該子系統(tǒng)中的其它類協(xié)作;(3) 子系統(tǒng)的數(shù)量不宜太多;(4) 可以在子系統(tǒng)內(nèi)部再次劃分,以降低復(fù)雜性。242) 標(biāo)識問題本身的并發(fā)性,并為子系統(tǒng)分配處理器 通過對對象-行為模型的分析,可發(fā)現(xiàn)系統(tǒng)的并發(fā)性。如果對象(或子系統(tǒng))不是同時活動的,則它們不需并發(fā)處理,此時這些對象(或子系統(tǒng))可以在同一個處理器上實(shí)現(xiàn)。反之,如果對象(或子系統(tǒng))必須對一些事件同時異步地動作,則它們被視為并發(fā)的,此時,可以將并發(fā)的子系統(tǒng)分別分配到不同的處理器,或者分配在同一個處理器,而由操作系統(tǒng)提供并發(fā)支持。253) 任務(wù)管理設(shè)計(jì)Coad和Yourdon提出如下管理并發(fā)任務(wù)對象的設(shè)計(jì)策略:(1) 確定
11、任務(wù)的類型;(2) 必要時,定義協(xié)調(diào)者任務(wù)和關(guān)聯(lián)的對象;(3) 將協(xié)調(diào)者任務(wù)和其它任務(wù)集成。 通常可通過了解任務(wù)是如何被啟動的來確定任務(wù)的類型,如事件驅(qū)動任務(wù),時鐘驅(qū)動任務(wù)。每個任務(wù)應(yīng)該定義其優(yōu)先級,并識別關(guān)鍵任務(wù)。當(dāng)有多個任務(wù)時還可以考慮增加一個協(xié)調(diào)者任務(wù),以控制這些任務(wù)協(xié)同工作。 264) 數(shù)據(jù)管理設(shè)計(jì) 通常數(shù)據(jù)管理設(shè)計(jì)成層次模式,其目的是將數(shù)據(jù)的物理存儲及操縱與系統(tǒng)的業(yè)務(wù)邏輯加以分離。 數(shù)據(jù)管理的設(shè)計(jì)包括設(shè)計(jì)系統(tǒng)中各種數(shù)據(jù)對象的存儲方式(如內(nèi)部數(shù)據(jù)結(jié)構(gòu)、文件、數(shù)據(jù)庫),以及設(shè)計(jì)相應(yīng)的服務(wù),即為要儲存的對象增加所需的屬性和操作。275) 資源管理設(shè)計(jì) OO系統(tǒng)可利用一系列不同的資源(如磁盤
12、驅(qū)動器、處理器、通信線路等外部實(shí)體或數(shù)據(jù)庫、對象等抽象資源),很多情況下,子系統(tǒng)同時競爭這些資源,因此要設(shè)計(jì)一套控制機(jī)制和安全機(jī)制,以控制對資源的訪問,避免對資源使用的沖突。 6)人機(jī)界面設(shè)計(jì) 對大多數(shù)應(yīng)用系統(tǒng)而言,人機(jī)界面本身是一個非常重要的子系統(tǒng)。人機(jī)界面主要強(qiáng)調(diào)人如何命令系統(tǒng),以及系統(tǒng)如何向人提交信息。它包括窗口、菜單、報(bào)告的設(shè)計(jì)。 287) 子系統(tǒng)間的通信 子系統(tǒng)之間可以通過建立客戶/服務(wù)器連接進(jìn)行通信,也可以通過端對端(peer to peer)連接進(jìn)行通信。我們必須確定子系統(tǒng)間通信的合約(contract),合約提供了一個子系統(tǒng)和另一個子系統(tǒng)交互的方式。 292. 對象設(shè)計(jì) 對象設(shè)
13、計(jì)是為每個類的屬性和操作作出詳細(xì)的設(shè)計(jì),并設(shè)計(jì)連接類與它的協(xié)作者之間的消息規(guī)約。1) 對象描述 對象的設(shè)計(jì)描述可以采取以下形式之一:(1) 協(xié)議描述:描述對象的接口,即定義對象可以接收的消息以及當(dāng)對象接收到消息后完成的相關(guān)操作;(2) 實(shí)現(xiàn)描述:描述傳送給對象的消息所蘊(yùn)含的每個操作的實(shí)現(xiàn)細(xì)節(jié),實(shí)現(xiàn)細(xì)節(jié)包括有關(guān)對象私有部分的信息,即關(guān)于描述對象屬性的數(shù)據(jù)結(jié)構(gòu)的內(nèi)部細(xì)節(jié)和描述操作的過程細(xì)節(jié)。 對對象的使用者來說,只需要協(xié)議描述就夠了。302)設(shè)計(jì)算法和數(shù)據(jù)結(jié)構(gòu) 為對象中的屬性和操作設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和實(shí)現(xiàn)算法。 31內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)過程UML概述用況建模靜態(tài)建模動態(tài)建模物理
14、體系結(jié)構(gòu)建模32統(tǒng)一建模語言UMLUnified Modeling Language33模型元素 模型元素指模型中的實(shí)體以及實(shí)體間相互連接的關(guān)系 部分模型元素注解類屬性操作對象:類屬性操作狀態(tài)用況 結(jié)點(diǎn)供應(yīng)接口包依賴關(guān)聯(lián)泛化主動類屬性操作請求接口構(gòu)件實(shí)現(xiàn)34視圖與圖主題域視圖 (view)圖(diagram)結(jié)構(gòu)化靜態(tài)視圖類圖(class)協(xié)作圖(collaboration)構(gòu)件圖(component)用況視圖用況圖(use case)動態(tài)的狀態(tài)機(jī)視圖狀態(tài)機(jī)圖(state machine)活動視圖活動圖(activity)交互視圖順序圖(sequence)物理的部署視圖部署圖(deployme
15、nt)模型管理模型管理視圖包圖(package)35靜態(tài)視圖靜態(tài)視圖對應(yīng)用領(lǐng)域中的概念以及與系統(tǒng)實(shí)現(xiàn)有關(guān)的內(nèi)部概念建模,主要由類以及類之間的相互關(guān)系組成,在靜態(tài)視圖中不描述依賴于時間的系統(tǒng)行為。靜態(tài)視圖用類圖來展示。設(shè)計(jì)視圖設(shè)計(jì)視圖對應(yīng)用自身的設(shè)計(jì)結(jié)構(gòu)建模,例如,將設(shè)計(jì)結(jié)構(gòu)擴(kuò)展成:結(jié)構(gòu)化類元,為實(shí)現(xiàn)功能所需的協(xié)作和定義接口的構(gòu)件的組裝。設(shè)計(jì)視圖由內(nèi)部結(jié)構(gòu)圖、協(xié)作圖和構(gòu)件圖實(shí)現(xiàn)。36用況視圖用況視圖對被稱為執(zhí)行者的外部代理(他與特定視點(diǎn)的主題交互)所感受到的主題(如系統(tǒng))功能建模。用況視圖的意圖是列出系統(tǒng)中的用況和執(zhí)行者,并顯示哪個執(zhí)行者參與了哪個用況的執(zhí)行。用況的行為用動態(tài)視圖,特別是交互視圖
16、來表示。用況視圖用用況圖來展示。37狀態(tài)機(jī)視圖狀態(tài)機(jī)視圖對一個類的對象的可能生命歷程建模。一個狀態(tài)機(jī)包括用遷移連接的狀態(tài),每個狀態(tài)對一個對象在其生命期中滿足某種條件的一個時間段建模。當(dāng)一個事件發(fā)生時,它會導(dǎo)致觸發(fā)對象的一個狀態(tài)向另一個新狀態(tài)的遷移,附加在遷移上的動作或活動也同時被執(zhí)行。狀態(tài)機(jī)視圖用狀態(tài)機(jī)圖來展示。38活動視圖活動展示了包含在執(zhí)行計(jì)算或工作流中的計(jì)算活動的控制流。一個動作是一個基本的計(jì)算步,一個活動結(jié)點(diǎn)是一組動作或子活動,一個活動可描述順序的和并發(fā)的計(jì)算?;顒右晥D用活動圖來展示。交互視圖交互視圖描述系統(tǒng)各部分中消息交換的順序。交互視圖提供了系統(tǒng)中行為的整體視圖,也就是說,它展示了
17、多個對象間交叉的控制流。交互視圖用順序圖和通信圖來展示。39部署視圖部署視圖描述了運(yùn)行時結(jié)點(diǎn)上制品的分布。制品是一個物理實(shí)現(xiàn)單元,如一個文件,它也可以表示一或多個構(gòu)件的實(shí)現(xiàn)(一種表現(xiàn)形式)。結(jié)點(diǎn)是運(yùn)行時表示計(jì)算資源的物理對象,如,計(jì)算機(jī)、設(shè)備或內(nèi)存。部署視圖允許對分配的結(jié)果和資源分配進(jìn)行評估。部署視圖用部署圖來展示。40模型管理視圖模型管理視圖對模型自身的組織建模。一個模型由一組保存模型元素(如類、狀態(tài)機(jī)、用況)的包組成。包還可以包含其它的包,因此,一個模型從一個間接包含所有模型內(nèi)容的根包(root package)開始。包是操縱模型內(nèi)容的單元,還是訪問控制和配置控制的單元。每個模型元素可以被
18、一個包或另一個元素?fù)碛?。模型管理信息通常展示在包圖中,它是類圖的變種。41剖面(profile)UML是用一個元模型(metamodel)定義的,元模型是指描述建模語言自身的模型。通常元模型的改變是復(fù)雜的,也是危險(xiǎn)的。剖面機(jī)制允許在不修改基礎(chǔ)元模型的前提下對UML作有限的變化。UML包含三個主要的可擴(kuò)展結(jié)構(gòu):約束(constraints)、版型(stereotypes)和標(biāo)簽值(tagged values)。約束是以自然語言或特定形式語言的正文表示的語義條件或限制,約束寫在花括號中(),如value0,or。版型是在基于現(xiàn)有各類模型元素的外形中定義模型元素的新類型,它本質(zhì)上是一種新元類(met
19、aclass)。版型可以擴(kuò)展語義,但不能擴(kuò)展原元模型類的結(jié)構(gòu)。用標(biāo)記版型,如signal。標(biāo)簽值是貼在任何模型元素上的被命名的信息片。42版型角色客戶43 類圖 類圖展示了系統(tǒng)中類的靜態(tài)結(jié)構(gòu),即類與類之間的相互聯(lián)系。類之間有多種聯(lián)系方式,如關(guān)聯(lián)(相互連接)、依賴(一個類依賴或使用另一個類)、泛化(一個類是另一個類的特殊情況)等??梢园讶舾蓚€相關(guān)的類包裝在一起作為一個單元(包),相當(dāng)于一個子系統(tǒng)。一個系統(tǒng)可以有多張類圖,一個類也可以出現(xiàn)在幾張類圖中。 對象圖 對象圖是類圖的實(shí)例,它展示了系統(tǒng)執(zhí)行在某一時間點(diǎn)上的一個可能的快照。對象圖使用與類圖相同的符號,只是在對象名下面加上下劃線,同時它還顯示了
20、對象間的所有實(shí)例鏈接(link)關(guān)系。 44協(xié)作圖協(xié)作圖展示了協(xié)作的定義,是一種合成的結(jié)構(gòu)圖。協(xié)作是為了完成某一目的而一起工作的一組對象間的上下文關(guān)系。 劇院售票* 1售票亭:售票亭:售票處1 *終端:售票終端協(xié)作圖45構(gòu)件圖構(gòu)件圖展示了系統(tǒng)中的構(gòu)件(即來自應(yīng)用的軟件單元),構(gòu)件間通過接口的連接,以及構(gòu)件之間的依賴關(guān)系。46用況圖用況圖展示了各類外部執(zhí)行者與系統(tǒng)所提供的用況之間的連接。一個用況是系統(tǒng)所提供的一個功能(也可以說是系統(tǒng)提供的某一特定用法)的描述,執(zhí)行者是指那些可能使用這些用況的人或外部系統(tǒng),執(zhí)行者與用況的連接表示該執(zhí)行者使用了那個用況。用況圖給出了用戶所感受到的系統(tǒng)行為,但不描述系
21、統(tǒng)如何實(shí)現(xiàn)該功能。用況通常用普通正文描述,也可以用活動圖來描述。47狀態(tài)機(jī)圖狀態(tài)機(jī)圖通常是對類描述的補(bǔ)充,它說明該類的對象所有可能的狀態(tài)以及哪些事件將導(dǎo)致狀態(tài)的改變。一個事件可以是另一個對象向它發(fā)送的一條消息,或者是滿足了某些條件。狀態(tài)的改變稱為遷移(transition)。一個狀態(tài)遷移還可以有與之相關(guān)的動作,該動作指出狀態(tài)遷移時應(yīng)做什么。并不是所有的類都要畫狀態(tài)機(jī)圖,有些類有一些意義明確的狀態(tài),并且其行為受不同的狀態(tài)所影響和改變,這些類才需要畫狀態(tài)機(jī)圖。 48活動圖活動圖展示了連續(xù)的活動流?;顒訄D通常用來描述完成一個操作所需要的活動。當(dāng)然它還能用于描述其它活動流,如描述用況。活動圖由動作狀態(tài)
22、組成,它包含完成一個動作的活動的規(guī)約(即規(guī)格說明)。當(dāng)一個動作完成時,將離開該動作狀態(tài)?;顒訄D中的動作部分還可包括消息發(fā)送和接收的規(guī)約。49順序圖順序圖展示了幾個對象之間的動態(tài)交互關(guān)系。它主要是用來顯示對象之間發(fā)送消息的順序,它還顯示了對象之間的交互,即系統(tǒng)執(zhí)行的某一特定點(diǎn)所發(fā)生的事。 50部署圖部署圖展示了運(yùn)行時處理結(jié)點(diǎn)和在結(jié)點(diǎn)上生存的制品的配置。結(jié)點(diǎn)是運(yùn)行時的計(jì)算資源,制品是物理實(shí)體,如構(gòu)件、文件。部署圖中顯示部署在結(jié)點(diǎn)上的制品和它們之間的關(guān)系,以及結(jié)點(diǎn)之間的連接和通信方式。51包圖包圖是由包和它們間的關(guān)系組成的結(jié)構(gòu)圖模型是在某一視點(diǎn)給定的精度上對系統(tǒng)的完整描述,一個系統(tǒng)可以從不同的視點(diǎn)(
23、如分析模型、設(shè)計(jì)模型)存在多個模型。一個模型可看作一個特定類型的包,通常僅顯示包就足夠了(不必顯示包內(nèi)部的細(xì)節(jié))。下圖給出了劇院系統(tǒng)所細(xì)分成的包以及它們之間的依賴關(guān)系。52內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)過程UML概述用況建模靜態(tài)建模動態(tài)建模物理體系結(jié)構(gòu)建模53用況建模 用況建模是用于描述一個系統(tǒng)應(yīng)該做什么的建模技術(shù),用況建模不僅用于新系統(tǒng)的需求獲取,還可用于已有系統(tǒng)的升級。用況模型用用況圖來描述。 用況圖展示了各類外部執(zhí)行者與系統(tǒng)所提供的用況之間的連接。一個用況是系統(tǒng)所提供的一個功能(也可以說是系統(tǒng)提供的某一特定用法)的描述,執(zhí)行者是指那些可能使用這些用況的人或外部系統(tǒng),執(zhí)行者
24、與用況的連接表示該執(zhí)行者使用了那個用況。用況圖給出了用戶所感受到的系統(tǒng)行為,但不描述系統(tǒng)如何實(shí)現(xiàn)該功能。用況通常用普通正文描述,也可以用活動圖來描述。54 任何一個涉及到系統(tǒng)功能活動的人都會用到用況模型。 客戶:用況模型指明了系統(tǒng)的功能,描述了系統(tǒng)能如何使用。用況建模時客戶的積極參與是十分重要的。 開發(fā)者:用況模型幫助他們理解系統(tǒng)要做什么,同時為以后的其它模型建模、結(jié)構(gòu)設(shè)計(jì)、實(shí)現(xiàn)等提供依據(jù)。 集成測試和系統(tǒng)測試人員:根據(jù)用況來測試系統(tǒng),以驗(yàn)證系統(tǒng)是否完成了用況指定的功能。 55用況建模步驟創(chuàng)建用況模型的步驟包括:1定義系統(tǒng)2確定執(zhí)行者3確定用況4描述用況5定義用況間的關(guān)系,6確認(rèn)模型56用況模
25、型由用況圖組成,用況圖展示了執(zhí)行者、用況以及它們之間的關(guān)系。用況通常用正文形式來描述。一個用況模型可由若干幅用況圖組成。一幅用況圖包含的模型元素有系統(tǒng)、執(zhí)行者、用況,以及表示它們間的不同關(guān)系,如關(guān)聯(lián)、擴(kuò)展、包含、泛化等。57用況圖電話訂購系統(tǒng)用況圖Telephone CatalogCustomerSalespersonnShipping ClerksupervisorestablishcreditFill orderArrangePaymentSupplyCustomerDataorderproductArrangeCreditPaycashplaceorderRequestCatalogin
26、cludeincludeincludeextendcheckstatus58一. 確定執(zhí)行者執(zhí)行者是指與系統(tǒng)交互的人或其它系統(tǒng)執(zhí)行者代表一種角色,而不是具體的某個人 執(zhí)行者可分成主執(zhí)行者和副執(zhí)行者:主執(zhí)行者使用系統(tǒng)的主要功能 例如,保險(xiǎn)系統(tǒng)中主執(zhí)行者處理保險(xiǎn)的注冊和管理 副執(zhí)行者處理系統(tǒng)的輔助功能 例如,管理數(shù)據(jù)庫、通信、備份以及其它管理等系統(tǒng)維護(hù)59執(zhí)行者還可分為主動執(zhí)行者和被動執(zhí)行者:主動執(zhí)行者開始一個用況被動執(zhí)行者從不開始用況,只是參與一個或多個用況60我們可以通過回答下列問題來確定執(zhí)行者:誰使用系統(tǒng)的主要功能(主執(zhí)行者)?誰需要從系統(tǒng)中得到對他們?nèi)粘9ぷ鞯闹С??誰需要維護(hù)、管理和維持系
27、統(tǒng)的日常運(yùn)行(副執(zhí)行者)?系統(tǒng)需要控制哪些硬件設(shè)備?系統(tǒng)需要與哪些其它系統(tǒng)交互?哪些人或哪些系統(tǒng)對系統(tǒng)產(chǎn)生的結(jié)果(值)感興趣?61確定用況1. 用況的特征用況總是被執(zhí)行者啟動的(initiated),執(zhí)行者必須直接或間接地指示系統(tǒng)去執(zhí)行用況用況向執(zhí)行者提供值,這些值必須是可識別的用況是完整的,一個用況必須是一個完整的描述 622. 尋找用況可以通過讓每個執(zhí)行者回答以下問題來尋找用況:執(zhí)行者需要系統(tǒng)提供哪些功能?執(zhí)行者需要做什么?執(zhí)行者是否需要讀、創(chuàng)建、刪除、修改或儲存系統(tǒng)中的某類信息?執(zhí)行者是否要被系統(tǒng)中的事件提醒,或者執(zhí)行者是否要提醒系統(tǒng)中某些事情?從功能觀點(diǎn)看,這些事件表示什么?執(zhí)行者的日
28、常工作是否因?yàn)橄到y(tǒng)的新功能(尤其是目前尚未自動化的功能)而被簡化或提高了效率?63另外還有一些不是目前的執(zhí)行者回答的問題:系統(tǒng)需要哪些輸入/輸出?誰從系統(tǒng)獲取信息?誰為系統(tǒng)提供信息?與當(dāng)前系統(tǒng)(可能是人工系統(tǒng)而不是自動化系統(tǒng))的實(shí)現(xiàn)有關(guān)的主要問題是什么? 對同一個項(xiàng)目,不同的開發(fā)者選取的用況數(shù)是不一樣的。例如一個10個人年規(guī)模的項(xiàng)目,有人選取了20個用況,而在一個類似的項(xiàng)目中,有人選用了100個用況。 似乎20個太少,而100個太多,希望在項(xiàng)目規(guī)模和用況數(shù)之間保持均衡。 643. 用況的描述 用況通常用正文(text)來描述,也可用活動圖來描述 。 用況的正文描述應(yīng)包括以下內(nèi)容:用況的目的:用
29、況的最終目的是什么?它試圖達(dá)到什么?用況是如何啟動(initiate)的:哪個執(zhí)行者在什么情況下啟動用況的執(zhí)行?執(zhí)行者和用況之間的消息流:用況與執(zhí)行者之間交換什么消息或事件來通知對方改變或恢復(fù)信息?描述系統(tǒng)與執(zhí)行者之間的主消息流是什么?以及系統(tǒng)中哪些實(shí)體被使用或修改?65用況中可供選擇的流:用況中的活動可根據(jù)條件或異常(exception)有選擇地執(zhí)行。如何通過給執(zhí)行者一個值來結(jié)束用況:描述何時可認(rèn)為用況已結(jié)束.66執(zhí)行者的簡要描述 如客戶:向公司訂購商品的人 客戶代表:公司處理客戶請求的雇員 庫存系統(tǒng):記錄公司庫存的軟件用況的簡要描述 如訂購貨物:客戶創(chuàng)建一個新的請求商品的訂單,并為那些商品
30、付費(fèi) 取消訂單:客戶取消一個已經(jīng)存在的訂單67 用況的詳細(xì)描述前置條件和后置條件前置條件和后置條件表示用況開始和結(jié)束的條件事件流(flow of events)事件流是一系列陳述句,它是從執(zhí)行者的角度看,列出用況的各個步驟用況描述中可以包含條件、分支和循環(huán)。例如:訂購貨物用況的描述如下68用況名稱:訂購貨物參與的執(zhí)行者:客戶、客戶代表前置條件:一個合法的客戶已經(jīng)登錄到這個系統(tǒng)事件流:當(dāng)客戶選擇訂購貨物時,用況開始客戶輸入他的姓名和地址如果客戶只輸入郵編,系統(tǒng)將給出州和城市名當(dāng)客戶輸入產(chǎn)品代碼a. 系統(tǒng)給出產(chǎn)品描述和價格b. 系統(tǒng)往客戶訂單中添加該物品的價格 循環(huán)結(jié)束5. 客戶輸入信用卡支付信息
31、696. 客戶選擇提交7. 系統(tǒng)檢驗(yàn)輸入的信息,把該訂單作為未完成的交易保存,同時向記賬系統(tǒng)轉(zhuǎn)發(fā)支付信息。如果客戶提交的信息不正確,系統(tǒng)將提示客戶修改。8. 當(dāng)支付確認(rèn)后,訂單就被標(biāo)記上已經(jīng)確認(rèn),同時返回給客戶一個訂單ID,用況也就結(jié)束了。如果支付沒有被確認(rèn),系統(tǒng)將提示客戶改正支付信息或者取消。如果客戶選擇修改信息,就回到第5步;如果選擇取消,用況結(jié)束。后置條件:如果訂單沒有被取消,它將保存在系統(tǒng)中,并做上標(biāo)記70其他需求在用況中還可描述一些特殊的需求,這些需求常常是非功能性需求,如可用性、安全性、可維護(hù)性、負(fù)載、性能、自動防故障、數(shù)據(jù)需求等。如訂購貨物用況的其他需求:前置條件:(略)事件流:
32、 (略)特殊需求: 系統(tǒng)必須在一秒內(nèi)響應(yīng)客戶的輸入后置條件: (略)71事件流可分為兩部分:基本路徑 基本路徑是運(yùn)轉(zhuǎn)正常時的路徑,是一系列沒有分支和選擇的簡單陳述句可選路徑 可選路徑是指不同于基本路徑而允許不同的事件序列的路徑。 對于明顯有可能隨時發(fā)生的事情來說,可選路徑非常有效。72如訂購貨物用況的基本路徑:事件流:基本路徑當(dāng)客戶選擇訂購貨物時,用況開始客戶輸入他的姓名和地址當(dāng)客戶輸入產(chǎn)品代碼時a. 系統(tǒng)給出產(chǎn)品描述和價格b. 系統(tǒng)往客戶訂單中添加該物品的價格 循環(huán)結(jié)束4. 客戶輸入信用卡支付信息5. 客戶選擇提交6. 系統(tǒng)檢驗(yàn)輸入的信息,把該訂單作為未完成的交易保存,同時向記賬系統(tǒng)轉(zhuǎn)發(fā)支付
33、信息7. 當(dāng)支付確認(rèn)后,訂單就被標(biāo)記上已經(jīng)確認(rèn),同時返回給客戶一個訂單ID,用況結(jié)束73 如果在訂購貨物用況中,客戶可以在提交訂單前隨時取消訂單,其可選路徑如下:可選路徑:在選擇提交前的任何時候,客戶都可以選擇cancel。這次訂購沒有被保存,用況結(jié)束。在基本路徑第6步,如果有任何不正確的信息,系統(tǒng)提示客戶去修改這些信息。在基本路徑第7步,如果支付沒有被確認(rèn),系統(tǒng)將提示客戶改正支付信息或者取消。如果客戶選擇修改信息,就回到基本路徑第4步;如果選擇取消,用況結(jié)束。74確定用況之間的關(guān)系關(guān)系說明記號關(guān)聯(lián)執(zhí)行者與他所參與的一個用況之間的通信路徑 擴(kuò)展擴(kuò)展的用況到基本用況的一種關(guān)系,它指出擴(kuò)展的用況所
34、定義的行為如何插入到基本用況所定義的行為中。擴(kuò)展的用況通過模塊化方式增量地修改基本用況 extend75關(guān)系說明記號包含從基本用況到另一個用況(稱為包含用況,inclusion use case)的一種關(guān)系,它指出包含用況定義的行為被包含在基本用況所定義的行為中?;居脹r能看到包含用況,并依賴于執(zhí)行包含用況后的結(jié)果,但兩者相互間不能訪問其它屬性 用況泛化一個一般用況與一個更特殊的用況之間的關(guān)系,特殊用況可繼承一般用況的特征 include76實(shí)例本實(shí)例實(shí)現(xiàn)一個簡化了的銀行儲蓄賬戶管理系統(tǒng),該系統(tǒng)是在銀行的柜臺上對客戶辦理活期儲蓄業(yè)務(wù)。系統(tǒng)的需求陳述如下:一個客戶可以在多個銀行中開設(shè)賬戶,一個客
35、戶也可在同一銀行中開設(shè)多個不同的賬戶??蛻艨梢酝ㄟ^銀行職員進(jìn)行開戶、存款、取款、轉(zhuǎn)賬、注銷賬戶等活動。其中轉(zhuǎn)賬指客戶將自己的某個賬戶上的錢款轉(zhuǎn)入同一銀行的不同賬戶(稱為銀行內(nèi)轉(zhuǎn)賬)或轉(zhuǎn)入不同銀行的賬戶(稱為銀行間轉(zhuǎn)賬)。系統(tǒng)管理員負(fù)責(zé)系統(tǒng)的賬戶管理及業(yè)務(wù)報(bào)表的生成。77識別執(zhí)行者客戶:到銀行辦理儲蓄業(yè)務(wù)的人,負(fù)責(zé)輸入密碼銀行職員(客戶代理):銀行工作人員,代表客戶進(jìn)行儲蓄業(yè)務(wù)的操作銀行職員(管理人員):銀行工作人員,根據(jù)客戶的儲蓄業(yè)務(wù)更新賬戶管理員:銀行計(jì)算機(jī)的管理人員,負(fù)責(zé)賬戶的管理和業(yè)務(wù)報(bào)表的生成78識別用況從系統(tǒng)的需求陳述可知,銀行職員(客戶代理)需要系統(tǒng)提供開戶、存款、取款、轉(zhuǎn)賬、注銷
36、賬戶等功能,這些功能都包含了校驗(yàn)密碼的功能。系統(tǒng)管理員需要系統(tǒng)提供賬戶管理和報(bào)表生成功能。銀行職員(管理人員)則參與了賬戶管理中的更新賬戶的功能。此外,轉(zhuǎn)賬功能可分為銀行內(nèi)轉(zhuǎn)賬和銀行間轉(zhuǎn)賬,我們可將它們設(shè)計(jì)成三個用況,其中銀行內(nèi)轉(zhuǎn)賬用況和銀行間轉(zhuǎn)賬用況都繼承了基本轉(zhuǎn)賬用況。據(jù)此分析,得到該系統(tǒng)的用況圖如下圖所示。79銀行儲蓄賬戶管理系統(tǒng)包含包含包含銀行職員(用戶代理)賬戶管理銀行間轉(zhuǎn)賬開戶取款銀行內(nèi)轉(zhuǎn)賬注銷存款校驗(yàn)密碼轉(zhuǎn)賬報(bào)表生成其它銀行賬戶管理系統(tǒng)客戶系統(tǒng)管理員銀行職員(管理人員)80開戶用況描述用況名稱:開戶參與的執(zhí)行者:銀行職員(客戶代理),客戶前置條件:一個合法的銀行職員(客戶代理)已
37、登錄到該系統(tǒng)事件流:1.當(dāng)選擇開戶功能時用況開始2.輸入客戶信息(姓名、地址、身份證號等)3.從賬戶管理系統(tǒng)獲取新的賬號4.請客戶輸入密碼5.請客戶再次輸入密碼6.如果兩次密碼不一致則回到第4步,否則繼續(xù)7.在賬戶庫中添加新賬戶8.打印存折,用況結(jié)束后置條件:在賬戶庫中增加了一個新賬戶,得到一張新存折 81取款用況描述用況名稱:取款參與的執(zhí)行者:銀行職員(客戶代理)前置條件:一個合法的銀行職員(客戶代理)已登錄到該系統(tǒng)事件流:基本路徑:1.當(dāng)選擇取款功能時用況開始2.當(dāng)輸入客戶信息(姓名、賬號等)后 a)如果客戶信息與賬戶不一致,顯示錯誤信息,可以重新輸入或結(jié)束用況 b)如果該賬戶被凍結(jié)(如因
38、掛失而凍結(jié)),顯示凍結(jié)信息并結(jié)束用況3.輸入并校驗(yàn)密碼824.輸入取款金額,如果該賬戶的余款小于取款金額,顯示錯誤信息,要求重新輸入5.打印取款單,交客戶簽字6.建立取款事件記錄,更新賬戶信息7. 打印存折,用況結(jié)束可選路徑:1.在第5步客戶簽字之前的任何時刻,客戶可以取消本次取款,用況結(jié)束2.第3步校驗(yàn)密碼時,如發(fā)現(xiàn)密碼不一致,則重新輸入密碼,或用況結(jié)束后置條件:如果取款成功,客戶賬戶中的余額被更新(減少),否則余額不變。83描述取款用況的活動圖客戶不確認(rèn)客戶確認(rèn)余額取款額未凍結(jié)不一致一致選擇重新輸入選擇結(jié)束凍結(jié)余額取款額打印取款單輸入客戶信息顯示錯誤信息建立取款記錄更新賬戶信息打印存折顯示
39、錯誤信息輸入取款金額輸入并校驗(yàn)密碼顯示凍結(jié)信息84內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)過程UML概述用況建模靜態(tài)建模動態(tài)建模物理體系結(jié)構(gòu)建模85靜態(tài)建模(類和對象建模) 類和對象模型的基本模型元素有類、對象以及它們之間的關(guān)系。系統(tǒng)中的類和對象模型描述了系統(tǒng)的靜態(tài)結(jié)構(gòu),在UML中用類圖和對象圖來表示。 86類圖由系統(tǒng)中使用的類以及它們之間的關(guān)系組成。類之間的關(guān)系有關(guān)聯(lián)、依賴、泛化、實(shí)現(xiàn)等。類圖是一種靜態(tài)模型,它是其它圖的基礎(chǔ)。一個系統(tǒng)可以有多張類圖,一個類也可出現(xiàn)在幾張類圖中。對象圖是類圖的一個實(shí)例,它描述某一時刻類圖中類的特定實(shí)例以及這些實(shí)例之間的特定鏈接。對象圖使用了與類圖相同的符
40、號,只是在對象名下附加下劃線,對象名后可接以冒號和類名,即 object-name:class-name 87 對象名 :類名屬性名 = 值操作類名屬性名 :類型操作聚集組合關(guān)聯(lián)泛化依賴實(shí)現(xiàn)88類圖和對象圖實(shí)例xL3對象圖L4P2lineX1:realY1:realX2:realY2:realpointX: realY: realL1: lineX1=10Y1=10X2= -10Y2= -10L2: lineL3: lineX1=10Y1= 5X2= -10Y2= -5L4: lineX1=9Y1=5X2=9Y2=3X1= -10Y1=10X2=10Y2= -10P1:pointX = 0Y
41、= 0P2:pointX=9Y=4。5P1L1yL2類圖相交2.*0.*89確定類1. 標(biāo)識類 這里介紹一種類責(zé)任協(xié)作者(classresponsibilitycollaborator,簡稱CRC)技術(shù)。CRC實(shí)際上是一組表示類的索引卡片,每張卡片分成三部分,它們分別描述類名、類的責(zé)任和類的協(xié)作者。類名: 協(xié)作者: 責(zé)任: 90(1) 標(biāo)識潛在的對象類 通常陳述中的名詞或名詞短語是可能的潛在對象,它們以不同的形式展示出來,如:1)外部實(shí)體(如,其它系統(tǒng)、設(shè)備、人員),他們生產(chǎn)或消費(fèi)計(jì)算機(jī)系統(tǒng)所使用的信息;2)物件(如,報(bào)告、顯示、信函、信號),它們是問題信息域的一部分;3)發(fā)生的事情或事件(如
42、,性能改變或完成一組機(jī)器人移動動作),它們出現(xiàn)在系統(tǒng)運(yùn)行的環(huán)境中;914)角色(如:管理者、工程師、銷售員),他們由與系統(tǒng)交互的人扮演;5)組織單位(如:部門、小組、小隊(duì)),他們與一個應(yīng)用有關(guān);6)場所(如:制造場所、裝載碼頭),它們建立問題和系統(tǒng)所有功能的環(huán)境;7)構(gòu)造物(如,四輪交通工具、計(jì)算機(jī)),它們定義一類對象,或者定義對象的相關(guān)類。92回答下列問題來識別潛在對象:是否有要儲存、轉(zhuǎn)換、分析或處理的信息?是否有外部系統(tǒng)?是否有模式(pattern)、類庫和構(gòu)件等?是否有系統(tǒng)必須處理的設(shè)備?是否有組織部分(organizational parts)? 業(yè)務(wù)中的執(zhí)行者扮演什么角色?這些角色可
43、以看作類,如客戶、操作員等。 93(2)篩選對象類,確定最終對象類我們可以用以下選擇特征來確定最終的對象:1)保留的信息:僅當(dāng)必須記住有關(guān)潛在對象的信息,系統(tǒng)才能運(yùn)作時,則該潛在對象在分析階段是有用的;2)需要的服務(wù):潛在對象必須擁有一組可標(biāo)識的操作,它們可以按某種方式修改對象屬性的值;3)多個屬性:在分析階段,關(guān)注點(diǎn)應(yīng)該是“較大的”信息(僅具有單個屬性的對象在設(shè)計(jì)時可能有用,但在分析階段,最好把它表示為另一對象的屬性);944)公共屬性:可以為潛在的對象定義一組屬性,這些屬性適用于該類的所有實(shí)例;5)公共操作:可以為潛在的對象定義一組操作,這些操作適用于該類的所有實(shí)例;6) 必要的需求:出現(xiàn)
44、在問題空間中的外部實(shí)體以及對系統(tǒng)的任何解決方案的實(shí)施都是必要的生產(chǎn)或消費(fèi)信息,它們幾乎總是定義為需求模型中的類。 95 對象和類還可以按以下特征進(jìn)行分類:1)確切性(tangibility):類表示了確切的事物(如,鍵盤或傳感器),還是表示了抽象的信息(如,預(yù)期的輸出)?2)包含性(inclusiveness):類是原子的(即不包含任何其它類),還是聚合的(至少包含一個嵌套的對象)?3)順序性(sequentiality):類是并發(fā)的(即,擁有自己的控制線程),還是順序的(被外部的資源控制)?964)持久性(persistence):類是短暫的(即,它在程序運(yùn)行期間被創(chuàng)建和刪除)、臨時的(它在
45、程序運(yùn)行期間被創(chuàng)建,在程序終止時被刪除)、還是永久的(它存放在數(shù)據(jù)庫中)? 永久對象(persistent object):其生存周期可以超越程序的執(zhí)行時間而長期存在的對象。5)完整性(integrity):類是易被侵害的(即,它不防衛(wèi)其資源受外界的影響),還是受保護(hù)的(該類強(qiáng)制控制對其資源的訪問)。 基于上述分類,CRC卡的內(nèi)容可以擴(kuò)充,以包含類的類型和特征。97類的類型:(如:設(shè)備,角色,場所,) 類的特征:(如:確切的,原子的,并發(fā)的,) 協(xié)作者: 責(zé)任: 類名: CRC卡982. 標(biāo)識責(zé)任 責(zé)任是與類相關(guān)的屬性和操作,簡單地說,責(zé)任是類所知道的或要做的任何事情。 (1)標(biāo)識屬性 屬性表
46、示類的穩(wěn)定特征,即為了完成客戶規(guī)定的目標(biāo)所必須保存的類的信息,一般可以從問題陳述中提取出或通過對類的理解而辨識出屬性。分析員可以再次研究問題陳述,選擇那些應(yīng)屬于該對象的內(nèi)容,同時對每個對象回答下列問題:“在當(dāng)前的問題范圍內(nèi),什么數(shù)據(jù)項(xiàng)(復(fù)合的和/或基本的)完整地定義了該對象?” 99(2) 定義操作 操作定義了對象的行為并以某種方式修改對象的屬性值。操作可以通過對系統(tǒng)的過程敘述的分析提取出來,通常敘述中的動詞可作為候選的操作。類所選擇的每個操作展示了類的某種行為。操作大體可分為三類:以某種方式操縱數(shù)據(jù)的操作(如,增加、刪除、重新格式化、選擇);完成某種計(jì)算的操作;為控制事件的發(fā)生而監(jiān)控對象的操
47、作。 100 3. 標(biāo)識協(xié)作者 一個類可以用它自己的操作去操縱它自己的屬性,從而完成某一特定的責(zé)任,一個類也可和其它類協(xié)作來完成某個責(zé)任。如果一個對象為了完成某個責(zé)任需要向其它對象發(fā)送消息,則我們說該對象和另一對象協(xié)作。協(xié)作實(shí)際上標(biāo)識了類間的關(guān)系。 為了幫助標(biāo)識協(xié)作者,可以檢索類間的類屬關(guān)系。如果兩個類具有整體與部分關(guān)系(一個對象是另一個對象的一部分),或者一個類必須從另一個類獲取信息,或者一個類依賴于(depends-upon)另一個類,則它們間往往有協(xié)作關(guān)系。 101UML對屬性的描述 UML中,描述一個屬性的語法如下:visibilityopt /opt attribute-name :
48、 type opt multiplicityopt = initial-valueopt property-stringopt其中帶下標(biāo)opt或 opt的部分表示該部分是任選的。visibility(可見性):表示該屬性在哪個范圍內(nèi)可見(即可使用),見下表。 102符號種類語義+Public(公共的)任何能看到這個類的類都能看到該屬性 #Protected(受保護(hù)的)這個類或者它的任何子孫類都能看到該屬性 Private(私有的)只有這個類自身能看到該屬性 Package(包的)在同一個包中的任何類能看到該屬性 可見性103attribute-name:表示屬性名。type(類型):用來指明屬
49、性名的類型。multiplicity(重?cái)?shù)):用來指出該屬性可能的值的個數(shù)以及它們的排列次序和唯一性。值的個數(shù)寫在方括號( )中,其形式是:minimum.maximum。maximum可以是“*”,表示“無限”。當(dāng)值的個數(shù)是單一值(如值的個數(shù)是3)時,可寫成3.3或簡寫成3。典型的寫法有:0.1,1(表示1.1),*(表示0.*),1.*,1.3。當(dāng)重?cái)?shù)缺省時,隱含表示重?cái)?shù)為1。當(dāng)一個屬性有多個值時,可在值的個數(shù)后面指明值元素的排列次序和唯一性,排列次序和唯一性寫在花括號( )中,可使用的關(guān)鍵字如下表所示,其默認(rèn)值是set,即無序且值元素唯一。 104關(guān)鍵字排列次序和唯一性set無序,值元素
50、唯一 bag無序,值元素不唯一 ordered set有序,值元素唯一 list(or sequence)有序,值元素不唯一 105initial-value(初值):在創(chuàng)建一個類的實(shí)例對象時,應(yīng)對其屬性賦值,如果類中對某屬性定義了初值,那么該初值可作為創(chuàng)建對象時該屬性的默認(rèn)值。property-string(特征字符串):用來明確地指明該屬性可能的候選值,如紅,黃,綠指出該屬性可枚舉的值只能是紅、黃、綠。106屬性還可以定義為類屬性(class attribute,C+或Java中稱為靜態(tài)屬性static attibute) ,表示被這個類的所有實(shí)例對象共享該屬性的值。類屬性是這個類的名字空
51、間中的全局變量。類屬性用下劃線來指明。maxCount:Integer=0jobID:Integercreate()jobID=maxCount+schedule()Job類屬性實(shí)例屬性類操作實(shí)例操作107“發(fā)票”類的屬性 Invoice + amount : Real+ date : Date = Current date+ customer : String+ line: record1.5set- administrator : String=“unspecified”- maxCount : Integer = 0- number of invoices : Integer+ stat
52、us : Status = unpaid unpaid, paid108UML對操作的描述UML中描述一個操作的語法如下:visibilityopt operating-name(parameter-list) : return-type opt property-string opt 操作可見性的含義與屬性中的含義相同。參數(shù)表是用逗號分隔的形式參數(shù)序列,描述一個參數(shù)的語法如下:directionopt parameter-name :type multiplicityopt = default -valueopt 其中:direction(方向):用來指明參數(shù)信息流的方向 。109方向的取值
53、關(guān)鍵字語義 in傳遞值的輸入?yún)?shù),該參數(shù)的改變對調(diào)用者是無效的 out輸出參數(shù),沒有輸入值,其最終值對調(diào)用者是有效的 inout一個可以修改的輸入?yún)?shù),其最終值對調(diào)用者是有效的 return調(diào)用的返回值,該值對調(diào)用者是有效的,語義上與out參數(shù)沒有不同,但在一串表達(dá)式中使用時return是有效的 110type 和multiplicity的含義與屬性中的含義相同,default value(默認(rèn)值)是在操作的調(diào)用者未提供參數(shù)時,用它作為該參數(shù)的值。 類也可以定義類操作(class operation)。通常操作是在該類的對象實(shí)例上被調(diào)用的,而類操作可以在沒有對象實(shí)例的情況下被調(diào)用,但此時只允許
54、訪問類屬性。 111FigureSize : SizePos : Position+ draw()+ resize( percentX : Integer=25 , percentY : Integer = 25 )+ returnPos() : Position112類之間的關(guān)系關(guān) 系功能 符號關(guān)聯(lián)類實(shí)例間連接的描述 依賴二個模型元素之間的一種關(guān)系 泛化更特殊描述與更一般描述之間的一種關(guān)系,用于繼承和多態(tài)性類型聲明 實(shí)現(xiàn)規(guī)約(specification)與它的實(shí)現(xiàn)之間的關(guān)系 1131. 關(guān)聯(lián)關(guān)聯(lián)描述了系統(tǒng)中對象之間或其它實(shí)例之間的連接。關(guān)聯(lián)的種類主要有二元關(guān)聯(lián),多元關(guān)聯(lián),受限關(guān)聯(lián),聚集(ag
55、gregation)和組合(composition)。114(1)二元關(guān)聯(lián) 二元關(guān)聯(lián)表示為在兩個類之間用一條直線連接,直線上可寫上關(guān)聯(lián)名。有首都國家城市工作于公 司員 工雇傭關(guān)聯(lián)通常是雙向的115關(guān)聯(lián)的兩端可加上重?cái)?shù)(multiplicity) ,表示該類有多少個對象可與對方的一個對象關(guān)聯(lián) 駕駛?cè)宿I車駕駛員公車工作于公 司員 工雇傭* 1工作于公 司員 工雇傭* *關(guān)聯(lián)的兩端還可加上角色名(role)116允許一個類與自身關(guān)聯(lián) * 雇傭 *工作于工人1.*老板0.1管理公 司員 工雇傭關(guān)聯(lián)的鏈公司A 張三公司B 李四公司A 王五公司C 張三鏈?zhǔn)顷P(guān)聯(lián)的實(shí)例117一個類的對象在不同的關(guān)聯(lián)中扮演不同
56、的角色保險(xiǎn)公司人保險(xiǎn)合同保險(xiǎn)單0.11表示為表達(dá)0.*1有涉及婚姻丈夫妻子0.*1.*涉及有保險(xiǎn)客戶118(2)多元關(guān)聯(lián) 三個或三個以上的類之間可以互相關(guān)聯(lián) 項(xiàng)目程序語言程序員119CAD程序 : 項(xiàng)目C : 語言記賬系統(tǒng) : 項(xiàng)目COBOL : 語言張三 : 開發(fā)人員三重關(guān)聯(lián)對象圖120(3)受限關(guān)聯(lián)(qualified association):受限關(guān)聯(lián)用于一對多或多對多的關(guān)聯(lián)。限定符(qualifier)用來區(qū)分關(guān)聯(lián)“多”端的對象集合,它指明了在關(guān)聯(lián)“多”端的某個特殊對象 目錄文件0.*ordered有序關(guān)聯(lián)目錄文件文件名受限關(guān)聯(lián)121(4) 聚集和組合 聚集(aggregation)是
57、表示整體一部分關(guān)系的一種關(guān)聯(lián),它的“部分”對象可以是任意“整體”對象的一部分。 聚集成員* * 組個人122組合(composition):組合是一種更強(qiáng)形式的關(guān)聯(lián),代表整體的組合對象有管理它的部分對象的特有責(zé)任,如部分對象的分配和解除分配。組合關(guān)聯(lián)具有強(qiáng)的物主身份,即“整體”對象擁有“部分”對象,“部分”對象生存在“整體”對象中。 *窗口正文對話框按鈕菜單 * * *123(5)關(guān)聯(lián)類 :UML中可以把關(guān)聯(lián)定義成類,該關(guān)聯(lián)的每個鏈都是這個類的實(shí)例 關(guān)聯(lián)類用戶工作站授權(quán) 優(yōu)先級特權(quán) 開始一個時間片* 授權(quán) *124(6)導(dǎo)航性(navigability)導(dǎo)航 選課 學(xué)生課程(a) 選課 學(xué)生課
58、程(c) 選課 學(xué)生課程(b)125導(dǎo)航性符號 明確的含義隱含的含義未指明雙向可導(dǎo)航右邊可導(dǎo)航左邊未指明只有右邊可導(dǎo)航只有右邊可導(dǎo)航只有右邊可導(dǎo)航右邊未指明左邊不可導(dǎo)航只有右邊可導(dǎo)航雙向可導(dǎo)航雙向可導(dǎo)航雙向不可導(dǎo)航雙向不可導(dǎo)航126 泛化 泛化指出類間的“一般特殊關(guān)系” (is-a)一般類定義了它的特殊類的公共屬性和操作對一般類擴(kuò)展一些屬性和/或操作后,可以特化(specialize)成特殊類一般類是特殊類的父類,特殊類是一般類的子類特殊類可以繼承一般類的屬性和操作子類可以定義自己的屬性和操作,也可重新定義父類中的操作,但重新定義的操作必須與父類具有相同的操作特征(signature)127顯
59、示計(jì)算面積四邊形泛化和繼承顯示六邊形顯示三角形多邊形顯示邊數(shù)頂角座標(biāo)長寬矩形計(jì)算面積128泛化是一種分類學(xué)關(guān)系,一個一般類可以從不同的維或方面將其特化(specialization)成不同的特殊類集合,用一個類元(用作分類符)來表示一個維或方面,由一個類元特化而成的特殊類組成一個泛化集(generalization set)。在泛化集中可對其元素應(yīng)用約束,在UML中提供以下約束,見下表。 129泛化集的約束符號含義disjoint(不相交)該類元在泛化集中是互斥的overlapping(交迭)該類元在泛化集中不是互斥的complete(完全的)該類元在泛化集中完全覆蓋特化的維incomplet
60、e(不完全的)該類元在泛化集中不完全覆蓋特化的維130泛化集的約束醫(yī)生人男人工人女人教師overlapping,incompletedisjoint,complete:職業(yè):職業(yè):職業(yè):性別:性別1313. 實(shí)現(xiàn):實(shí)現(xiàn)關(guān)系將一個模型元素(如類)連接到另一個模型元素(如接口),后者(如接口)是行為的規(guī)約(specification),而不是結(jié)構(gòu),前者(如類)必須至少支持(通過繼承或直接聲明)后者的所有操作??梢哉J(rèn)為前者是后者的實(shí)現(xiàn)。泛化和實(shí)現(xiàn)都可以將一般描述與具體描述聯(lián)系起來。其區(qū)別是,泛化是同一語義層上的元素之間的連接,通常在同一模型內(nèi);而實(shí)現(xià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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年設(shè)備采購合同設(shè)備安裝調(diào)試要求
- 2024年樓房電氣施工安全防護(hù)合同
- 2024年留學(xué)者監(jiān)護(hù)與咨詢合同3篇
- 2024年股權(quán)質(zhì)權(quán)設(shè)立協(xié)議
- 2024民法典合同編:藝術(shù)品拍賣預(yù)付借款合同3篇
- 2024施工技術(shù)員聘用合同范本-安全質(zhì)量監(jiān)督專用3篇
- 2024年酒店業(yè)員工培訓(xùn)服務(wù)合同
- 2024年礦區(qū)深水井鉆探及運(yùn)營承包協(xié)議版B版
- 2024年規(guī)范化場地承包協(xié)議范例版B版
- 2024年藝術(shù)品銷售合同知識產(chǎn)權(quán)保護(hù)3篇
- 《落花生》-完整版課件
- 2021年貴安新區(qū)產(chǎn)業(yè)發(fā)展控股集團(tuán)有限公司招聘筆試試題及答案解析
- 安全文化培訓(xùn) (注冊安工再培訓(xùn))課件
- 色粉-MSDS物質(zhì)安全技術(shù)資料
- 骨科學(xué)研究生復(fù)試真題匯總版
- 石油化工鋼結(jié)構(gòu)工程施工及驗(yàn)收規(guī)范
- 遼海版六年級音樂上冊第8單元《3. 演唱 姐妹們上場院》教學(xué)設(shè)計(jì)
- 形勢任務(wù)教育宣講材料第一講——講上情
- 物業(yè)安全員考核實(shí)施細(xì)則
- 中國地質(zhì)大學(xué)(武漢)教育發(fā)展基金會籌備成立情況報(bào)告
- 第四章破產(chǎn)法(破產(chǎn)法)教學(xué)課件
評論
0/150
提交評論