第4章 面向?qū)ο笙到y(tǒng)分析及對(duì)象類建模 2_第1頁
第4章 面向?qū)ο笙到y(tǒng)分析及對(duì)象類建模 2_第2頁
第4章 面向?qū)ο笙到y(tǒng)分析及對(duì)象類建模 2_第3頁
第4章 面向?qū)ο笙到y(tǒng)分析及對(duì)象類建模 2_第4頁
第4章 面向?qū)ο笙到y(tǒng)分析及對(duì)象類建模 2_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章面向?qū)ο笙到y(tǒng)分析與對(duì)象類建模教學(xué)目的⑴掌握面向?qū)ο笙到y(tǒng)分析的過程⑵掌握系統(tǒng)用例模型的設(shè)計(jì)方法⑶了解類和對(duì)象的概念、類與對(duì)象的關(guān)系等⑷重點(diǎn)掌握系統(tǒng)用例模型的設(shè)計(jì)和對(duì)象與類圖的設(shè)計(jì)4.1面向?qū)ο笙到y(tǒng)分析面向?qū)ο蠓治觯褪浅槿『驼碛脩粜枨蟛⒔栴}域精確模型的過程。面向?qū)ο蠓治鲞^程從分析陳述用戶需求的文件開始可能由用戶(包括出資開發(fā)該軟件的業(yè)主代表及最終用戶)單方面寫出需求陳述,也可能由系統(tǒng)分析員配合用戶,共同寫出需求陳述當(dāng)軟件項(xiàng)目采用招標(biāo)方式確定開發(fā)單位時(shí),“標(biāo)書”往往可以作為初步的需求陳述。面向?qū)ο蠓治龅倪^程4.2系統(tǒng)用例建模4.2.1分析系統(tǒng)用例1.業(yè)務(wù)用例與系統(tǒng)用例業(yè)務(wù)用例著重于業(yè)務(wù)操作。表示實(shí)現(xiàn)業(yè)務(wù)目標(biāo)的業(yè)務(wù)中的具體工作流。業(yè)務(wù)過程可能涉及手工和自動(dòng)過程,并且在一段長(zhǎng)期的時(shí)間內(nèi)進(jìn)行。系統(tǒng)用例著重于要設(shè)計(jì)的軟件系統(tǒng)。參與者如何與軟件系統(tǒng)進(jìn)行交互?在系統(tǒng)用例說明中書寫的事件流應(yīng)該足夠詳細(xì),便于用作編寫系統(tǒng)測(cè)試腳本的出發(fā)點(diǎn)。系統(tǒng)用例的執(zhí)行者為操作人員所代表的崗位角色,可以是實(shí)際與系統(tǒng)交互的操作人員、外部銜接系統(tǒng)、自動(dòng)服務(wù)、定時(shí)器等。銀行的業(yè)務(wù)建??蛻翥y行開戶銀行功能銀行的軟件系統(tǒng)建模柜員軟件系統(tǒng)開戶軟件系統(tǒng)業(yè)務(wù)用例模型與系統(tǒng)用例區(qū)別⑴設(shè)計(jì)范圍業(yè)務(wù)用例的設(shè)計(jì)范圍是業(yè)務(wù)操作,組織外部的業(yè)務(wù)參與者實(shí)現(xiàn)與業(yè)務(wù)組織相關(guān)的業(yè)務(wù)目標(biāo)。系統(tǒng)用例著重于要設(shè)計(jì)的軟件系統(tǒng),參與者如何與軟件系統(tǒng)進(jìn)行交互⑵系統(tǒng)測(cè)試業(yè)務(wù)用例常常是以白盒形式編寫系統(tǒng)用例幾乎總是以黑盒形式編寫⑶業(yè)務(wù)角色。業(yè)務(wù)參與者是業(yè)務(wù)之外的人在系統(tǒng)用例圖中,參與者與用例進(jìn)行交互2.系統(tǒng)用例的確定將每個(gè)業(yè)務(wù)用例都繪制出相應(yīng)的活動(dòng)圖,再將其中的“活動(dòng)”進(jìn)行整合,就得出所有備選系統(tǒng)用例找出所有的備選系統(tǒng)用例后,要對(duì)它們進(jìn)行合并和篩選。合并就是將相同的用例合并成一個(gè),篩選就是將不符合系統(tǒng)用例條件的備選用例去掉。如在銷售管理系統(tǒng)中,系統(tǒng)用例有采購、供應(yīng)商管理、客戶管理、進(jìn)貨查詢、入庫管理、出庫管理、庫存盤點(diǎn)、庫存查詢、銷售、退貨處理、價(jià)格管理、銷售查詢等。一個(gè)系統(tǒng)用例應(yīng)該是實(shí)際使用系統(tǒng)的用戶所進(jìn)行的一個(gè)操作,例如,“查看新聞列表”就不能算一個(gè)系統(tǒng)用例,因?yàn)樗皇悄诚到y(tǒng)用例的一個(gè)序列項(xiàng)。4.2.2構(gòu)造系統(tǒng)用例模型分析出參與者、用例和用例之間關(guān)系后,就可以繪制系統(tǒng)的用例模型4.3類與對(duì)象建模概述面向?qū)ο蠓治霎a(chǎn)生分析模型。分析時(shí)用例模型作為輸入,對(duì)用例模型進(jìn)行分析,把系統(tǒng)分解為相互協(xié)作的分析類,通過類圖、對(duì)象圖來描述對(duì)象、對(duì)象的屬性和對(duì)象之間的關(guān)系。類圖用于對(duì)系統(tǒng)的靜態(tài)結(jié)構(gòu)建模,在系統(tǒng)分析階段,類圖主要用于顯示角色和提供系統(tǒng)行為的實(shí)體的職責(zé);在系統(tǒng)設(shè)計(jì)階段,類圖主要用于捕捉組成系統(tǒng)體系結(jié)構(gòu)的類結(jié)構(gòu);在系統(tǒng)編碼階段,根據(jù)類圖中的類及它們之間的關(guān)系實(shí)現(xiàn)系統(tǒng)的功能。類圖與其他的關(guān)系類圖活動(dòng)圖用例圖交互圖包圖狀態(tài)圖類圖與其他圖的關(guān)系4.3.1類圖及對(duì)象圖的圖符1.類的表示方法類是任何面向?qū)ο笙到y(tǒng)中最重要的構(gòu)造塊。類是對(duì)一組具有相同屬性、操作、關(guān)系和語義對(duì)象的描述。一個(gè)類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口。類可以是作為問題域一部分的抽象,也可以是構(gòu)成實(shí)現(xiàn)的類。⑴類的定義⑵類的屬性在UML中,屬性的完整語法形式為:[可見性]屬性名稱[:類型][多重性][=[默認(rèn)值]][特性串{(類別)性質(zhì)-字符串}][visibility]name[:type][multiplicity]

[=[default]][{property-string}][]類的內(nèi)容表示可選項(xiàng)。下列的屬性都是合法的:student 只有屬性名+student 可見性和屬性名origin:point 屬性名和類型name:string[0..1] 屬性名、類型和多重性origin:point=(0,0)屬性名、類型而后初始值id:Integer{readonly}屬性名、類型和特性可見性表示⑶類的操作類的操作,也稱為類的方法,它描述了類的動(dòng)態(tài)行為,用于修改、檢索類的屬性或執(zhí)行某些動(dòng)作。在大多數(shù)抽象層次上,對(duì)類的行為特征建模時(shí),只需簡(jiǎn)單地寫下每個(gè)操作的名稱。在UML中,操作的完整語法形式為:[可見性]操作名稱[(參數(shù)名稱)][:返回值類型][特性串{(類別)性質(zhì)-字符串}][visibility]name[(parameter-list)][:return-type][{property-string}]操作的可見性與屬性相同,命名規(guī)則也與屬性相同。參數(shù)名稱中的參數(shù)是用跟屬性類似的方式來表示的。⑶類的操作其語法如下:[方向]名稱:類型[=默認(rèn)值][direction]name:type[=defaultvalue]方向可以取下述值之一:in輸入?yún)?shù),不能對(duì)它進(jìn)行修改。out輸出參數(shù),為了向調(diào)用者傳送信息可以對(duì)它進(jìn)行修改。inout輸入?yún)?shù),為了向調(diào)用者傳送信息可以對(duì)它進(jìn)行修改。下列操作是合法的display操作名+display可見性和操作名set(n:Name,s:String)操作名和參數(shù)restart(){gaurded}操作名和特性getID():interger操作名和返回類型+balanceOn(date:Date):Money⑷類的范圍特征的范圍指的是類目的每一個(gè)實(shí)例都有自己獨(dú)特的特征值,還是類目的所有實(shí)例都共同擁有單獨(dú)一個(gè)特征值。在UML中有兩種范圍:實(shí)例范圍是指對(duì)于一個(gè)特征,類目的每個(gè)實(shí)例均有它自己的值。這是默認(rèn)的,不需要附加符號(hào)。靜態(tài)范圍是指對(duì)于類目的所有特征,特征的值是唯一的,也把它稱作類范圍,通過對(duì)特性串加下劃線來表示。靜態(tài)范圍的特征大多用于私有屬性,它們必須為一個(gè)類的所有實(shí)例所共有。⑸類的分類類有具體類、抽象類和模板類。具體類可以定義其實(shí)例⑹接口UML類圖元素中接口是一系列操作的集合,它指定了一個(gè)類所提供的服務(wù),如所示。接口既可用的那個(gè)圖標(biāo)來表示,也可由附加了<<interface>>的一個(gè)標(biāo)準(zhǔn)類來表示,它直接對(duì)應(yīng)于Java中的一個(gè)接口類型。通常,根據(jù)接口在類圖上的樣子,就能知道與其他類的關(guān)系。接口的表示⑺類的版型UML中有三種主要的類版型:邊界類、控制類和實(shí)體類。邊界類位于系統(tǒng)與外界的交界處,包括:用戶界面類,如窗口、對(duì)話框、報(bào)表類等。通訊協(xié)議類,如TCP/IP的類。直接與外部設(shè)備交互的類和直接與外部系統(tǒng)交互的類。實(shí)體類實(shí)體類通過事件流和交互圖發(fā)現(xiàn),采用目標(biāo)領(lǐng)域術(shù)語命名。通常實(shí)體類對(duì)應(yīng)數(shù)據(jù)庫中的表,其屬性對(duì)應(yīng)表的字段,但實(shí)體類與數(shù)據(jù)庫中的表不一定是一一對(duì)應(yīng)關(guān)系??刂祁愂秦?fù)責(zé)管理或控制其他類工作的類。每個(gè)用例通常有一個(gè)控制類,控制用例中的事件順序,控制類也可以在多個(gè)用例間共用??刂戚^少接收消息,發(fā)出較多消息??刂祁悽填悎D的抽象層次按照SteveCook和JohnDianiels的觀點(diǎn),類圖分為概念層、說明層和實(shí)現(xiàn)層。2.對(duì)象的表示方法對(duì)象圖是類圖的實(shí)例,幾乎使用與類圖完全相同的標(biāo)識(shí)。對(duì)象圖的兩個(gè)基本元素是對(duì)象和它們之間的關(guān)系。展示的是一個(gè)對(duì)象圖中表示對(duì)象的圖標(biāo)。與類圖相似,水平線將圖標(biāo)內(nèi)的文字分成了兩部分,上邊代表對(duì)象的名稱,下邊代表對(duì)象的屬性和值。對(duì)象的名稱表示objectName只有對(duì)象名;:ClassName只有類名;objectName:ClassName對(duì)象名和類名。所有的對(duì)象名稱都加了下劃線,目的是區(qū)分對(duì)象名稱和類名稱。如果沒有指定一個(gè)對(duì)象的類,既沒有用上面的語法顯示地指定,也沒有在對(duì)象的說明中隱式地指定,那么這個(gè)對(duì)象的類就被認(rèn)為是匿名的。如果只指定了類名稱,那么這個(gè)沒有對(duì)象名的圖標(biāo)代表的就是一個(gè)明顯的匿名對(duì)象。4.3.2對(duì)象/類的關(guān)系1.關(guān)聯(lián)關(guān)系關(guān)聯(lián)(association)是一種結(jié)構(gòu)關(guān)系,說明一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象相聯(lián)系。關(guān)聯(lián)關(guān)系是對(duì)象之間一種引用關(guān)系,比如客戶類與訂單類之間的關(guān)系。這種關(guān)系通常使用類的屬性表達(dá)。給定一個(gè)連接兩類的關(guān)聯(lián),可以從一個(gè)類的對(duì)象導(dǎo)航到另一個(gè)類的對(duì)象。關(guān)聯(lián)關(guān)系是實(shí)例之間的結(jié)構(gòu)關(guān)系,關(guān)聯(lián)又分為一般關(guān)聯(lián)、聚合關(guān)聯(lián)與組合關(guān)聯(lián)。UML類關(guān)系中關(guān)聯(lián)關(guān)系有6種對(duì)應(yīng)的修飾,它們分別是:名稱、角色、多重性、聚合、組合和導(dǎo)航性。⑴名稱(name)關(guān)聯(lián)可以有一個(gè)名稱,用來描述關(guān)聯(lián)的性質(zhì),通常使用一個(gè)動(dòng)詞或動(dòng)詞短語來命名關(guān)聯(lián)。名稱以前綴或后綴一個(gè)指引閱讀的方向指示符以消除名稱含義上可能存在的歧義,方向指示符用一個(gè)實(shí)心的三角形箭頭表示。雖然關(guān)聯(lián)可以有名稱,但在明確給出關(guān)聯(lián)的端點(diǎn)名的情況下不需要給出名稱。⑵角色(role)當(dāng)一個(gè)類參與了一個(gè)關(guān)聯(lián)時(shí),它就在這個(gè)關(guān)系中扮演了一個(gè)特定的角色。角色是關(guān)聯(lián)關(guān)系中一個(gè)類對(duì)另一個(gè)類所表現(xiàn)出來的職責(zé)。角色名稱是名詞或名詞短語,以解釋對(duì)象是如何參與關(guān)聯(lián)的。把關(guān)聯(lián)端點(diǎn)扮演的角色稱為端點(diǎn)名,在UML中稱為角色名。⑶多重性(multiplicity)關(guān)聯(lián)的多重性是指有多少對(duì)象可以參與該關(guān)聯(lián),多重性可以用來表達(dá)一個(gè)取值范圍、特定值、無限定的范圍或一組離散值。將多重性寫成一個(gè)表示取值范圍的表達(dá)式,其最大值和最小值可以相同,用兩個(gè)圓點(diǎn)把它們分開。多重性說明對(duì)于關(guān)聯(lián)另一端的類的每個(gè)對(duì)象,本端的類可能有多少個(gè)對(duì)象出現(xiàn),對(duì)象的數(shù)目必須是在給定的范圍內(nèi)??梢跃_地表示多重性為:一個(gè)(1);多個(gè)(0..*);一個(gè)或多個(gè)(1..*);整數(shù)范圍,

(4)聚合關(guān)系聚合關(guān)系是關(guān)聯(lián)的一種形式,是強(qiáng)的關(guān)聯(lián)關(guān)系。代表兩個(gè)類之間的整體/局部關(guān)系,如汽車類與引摯類、輪胎類之間的關(guān)系就是整體與個(gè)體的關(guān)系。聚合關(guān)系描述了“hasa”的關(guān)系,即整體對(duì)象擁有部分對(duì)象,是一種不穩(wěn)定的包含關(guān)系。較強(qiáng)于一般關(guān)聯(lián),有整體與局部的關(guān)系,并且沒有了整體,局部也可單獨(dú)存在。在UML中使用空心的菱形表示,菱形從局部指向整體(4)聚合關(guān)系(5)組合關(guān)系組合關(guān)系是聚合關(guān)系中的一種特殊情況,是更強(qiáng)形式的聚合,又被稱為強(qiáng)聚合。組合表示contains-a的關(guān)系,是一種強(qiáng)烈的包含關(guān)系。組合類負(fù)責(zé)被組合類的生命周期,是一種更強(qiáng)的聚合關(guān)系,部分不能脫離整體存在。⑹導(dǎo)航性(nevigation)關(guān)聯(lián)可以有方向,即導(dǎo)航。一般不作說明的時(shí)候,導(dǎo)航是雙向的,不需要在線上標(biāo)出箭頭。大部分情況下導(dǎo)航是單向的,可以加一個(gè)箭頭表示。導(dǎo)航性描述的是一個(gè)對(duì)象通過鏈(關(guān)聯(lián)的實(shí)例)進(jìn)行導(dǎo)航訪問另一個(gè)對(duì)象,即對(duì)一個(gè)關(guān)聯(lián)端點(diǎn)設(shè)置導(dǎo)航屬性意味著本端的對(duì)象可以被另一端的對(duì)象訪問。可以在關(guān)聯(lián)關(guān)系上加箭頭表示導(dǎo)航方向。只在一個(gè)方向上可以導(dǎo)航的關(guān)聯(lián)稱為單向關(guān)聯(lián),用一條帶箭頭的實(shí)線來表示。在兩個(gè)方向上都可以導(dǎo)航的關(guān)聯(lián)稱為雙向關(guān)聯(lián),用一條沒有箭頭的實(shí)線來表示。2.依賴關(guān)系依賴(Dependency)關(guān)系是對(duì)象之間最弱的一種關(guān)聯(lián)方式,是臨時(shí)性的關(guān)聯(lián)。代碼中一般指由局部變量、函數(shù)參數(shù)、返回值建立的對(duì)于其他對(duì)象的調(diào)用關(guān)系。一個(gè)類調(diào)用被依賴類中的某些方法而得以完成這個(gè)類的一些職責(zé)。關(guān)聯(lián)和依賴的區(qū)別:從類之間關(guān)系的強(qiáng)弱程度來分,關(guān)聯(lián)表示類之間的很強(qiáng)的關(guān)系;依賴表示類之間的較弱的關(guān)系;從類之間關(guān)系的時(shí)間角度來分,關(guān)聯(lián)表示類之間的“持久”關(guān)系,這種關(guān)系一般表示一種重要的業(yè)務(wù)之間的關(guān)系,需要保存的,或者說需要“持久化”的,或者說需要保存到數(shù)據(jù)庫中的。3.泛化關(guān)系泛化(Generalization)把一般類連接到較為特殊的類,表示is-a的關(guān)系,表示一個(gè)更泛化的元素和一個(gè)更具體的元素之間的關(guān)系,也稱為繼承關(guān)系。是對(duì)象之間耦合度最大的一種關(guān)系,子類繼承父類的所有細(xì)節(jié)。直接使用語言中的繼承表達(dá)。在類圖中使用帶三角箭頭的實(shí)線表示,箭頭從子類指向父類。泛化表示的是模型元素之間抽象和具體的關(guān)系,也就是模型元素之間的繼承關(guān)系。繼承者具有被繼承者相同的特性,同時(shí)還能在被繼承者的基礎(chǔ)上進(jìn)行擴(kuò)展3.泛化關(guān)系4.實(shí)現(xiàn)關(guān)系實(shí)現(xiàn)(Realization)關(guān)系在類圖中就是接口和實(shí)現(xiàn)的關(guān)系。UML模型圖中類圖實(shí)現(xiàn)關(guān)系表示一個(gè)模型元素實(shí)現(xiàn)了另一個(gè)模型元素定義的操作,一般是指一個(gè)類實(shí)現(xiàn)了一個(gè)接口定義的方法。實(shí)現(xiàn)關(guān)系通常在兩種情況下被使用:在接口與實(shí)現(xiàn)該接口的類之間;在用例以及實(shí)現(xiàn)該用例的協(xié)作之間。在面向?qū)ο蟮母拍钪?,接口就是只定義方法,并不實(shí)現(xiàn)這個(gè)方法。它用來給別的類繼承它,并用類的操作實(shí)現(xiàn)它定義方法,通過這樣的方法就能夠?qū)⒍x和抽象分開,利于代碼的維護(hù)。4.實(shí)現(xiàn)關(guān)系4.4類與對(duì)象建模4.4.1類圖的構(gòu)建1)研究分析問題領(lǐng)域,確定系統(tǒng)的需求。2)確定類,明確類的含義和責(zé)任,確定屬性和操作。3)確定類之間的關(guān)系。著重分析找出類之間的一般和特殊關(guān)系,部分與整體關(guān)系,研究類的繼承性和多態(tài)性,把類之間的靜態(tài)聯(lián)系用關(guān)聯(lián)、泛化、聚合、組合、依賴等聯(lián)系表達(dá)出來4)調(diào)整和細(xì)化類及類之間的關(guān)系。5)繪制類圖并編制相應(yīng)的說明。1.確定系統(tǒng)類識(shí)別類的方法可以根據(jù)用例描述中的名詞確定候選類;根據(jù)用例確定類;使用CRC分析法尋找類;根據(jù)邊界類、控制類和實(shí)體類的劃分來幫助發(fā)現(xiàn)類;參考設(shè)計(jì)模式來確定類;對(duì)領(lǐng)域進(jìn)行分析或利用已有領(lǐng)域分析結(jié)構(gòu)得到類;利用RUP在分析和設(shè)計(jì)中尋找類。常用的類識(shí)別方法有名詞識(shí)別法;系統(tǒng)實(shí)體識(shí)別法;從用例中識(shí)別類;用分解與抽象技術(shù)識(shí)別類和CRC卡分析方法。名詞識(shí)別法名稱識(shí)別法的關(guān)鍵是識(shí)別系統(tǒng)問題域的實(shí)體,從系統(tǒng)描述中標(biāo)識(shí)出名詞及名詞詞組其中單數(shù)名詞可以標(biāo)識(shí)為對(duì)象復(fù)數(shù)名詞可以標(biāo)識(shí)為類如在學(xué)校管理信息系統(tǒng)中有學(xué)生、教師、學(xué)校和課程部門等類。用例識(shí)別法通過分析用例圖幫助建立類用例描述中出現(xiàn)了哪些實(shí)體(實(shí)體類),這里的實(shí)體不是Actor,而是Actor使用系統(tǒng)時(shí)所調(diào)用的實(shí)體,是處在系統(tǒng)邊界之內(nèi)的實(shí)體;用例完成需要哪些實(shí)體配合(協(xié)作類);用例執(zhí)行過程中會(huì)產(chǎn)生并存儲(chǔ)哪些信息;用例要求與之關(guān)聯(lián)的每個(gè)角色輸入什么;用例反饋與之關(guān)聯(lián)的每個(gè)角色輸出什么;用例需要操作哪些設(shè)備(通訊類)。如在教學(xué)管理系統(tǒng)中教學(xué)干事,是一個(gè)參與者CRC分析法,CRC(Class-Responsibility-Collaboration)建模提供了一種簡(jiǎn)單的標(biāo)識(shí)和組織與系統(tǒng)或產(chǎn)品需求相關(guān)的類的手段。CRC是目前比較流行的面向?qū)ο蠓治鼋7椒?。要識(shí)別一個(gè)候選類是否是一個(gè)真正的類,應(yīng)該先確定這個(gè)候選類是否擔(dān)負(fù)著職責(zé),同時(shí)是否有協(xié)作關(guān)系。在CRC建模中,用戶、設(shè)計(jì)者、開發(fā)人員都要參與,完成對(duì)整個(gè)面向?qū)ο蠊こ痰脑O(shè)計(jì)。CRC卡是一個(gè)標(biāo)準(zhǔn)索引卡集合,包括三個(gè)部分:類名、類的職責(zé)、類的協(xié)作關(guān)系,每一張卡片表示一個(gè)類。銷售類CRC卡片CRC的建模步驟(1)標(biāo)識(shí)潛在的對(duì)象類(2)篩選對(duì)象類,確定最終對(duì)象類(3)標(biāo)識(shí)責(zé)任(4)標(biāo)識(shí)協(xié)作者(5)復(fù)審CRC卡UML支持的可見性類型的標(biāo)志2.組織類并確定其關(guān)系關(guān)聯(lián)關(guān)系表示不同類的對(duì)象之間的結(jié)構(gòu)關(guān)系,它在一段時(shí)間內(nèi)將多個(gè)類的實(shí)例連接在一起。關(guān)聯(lián)描述的是類的對(duì)象之間邏輯上的關(guān)系,這些對(duì)象可以是同類的,也可以不是,關(guān)聯(lián)的兩端稱為角色,如客戶和訂單就存在一種關(guān)聯(lián)。在UML中關(guān)聯(lián)主要有三種形式用一條線段標(biāo)識(shí)雙向的關(guān)聯(lián),稱為關(guān)聯(lián);用一個(gè)有箭頭的線段標(biāo)識(shí)單向的關(guān)聯(lián);用一個(gè)帶菱形頭的線段表示關(guān)聯(lián)的兩端的類是整體和部分的關(guān)系,這種關(guān)聯(lián)也稱為聚合或組合。需求描述小王是一個(gè)愛書之人,家里各類書籍已過千冊(cè),而平時(shí)又時(shí)常有朋友外借,因此需要一個(gè)個(gè)人圖書管理系統(tǒng)。該系統(tǒng)應(yīng)該能夠?qū)幕拘畔从?jì)算機(jī)類、非計(jì)算機(jī)類分別建檔,實(shí)現(xiàn)按書名、作者、類別、出版社等關(guān)鍵字的組合查詢功能。在使用該系統(tǒng)錄入新書籍時(shí)系統(tǒng)會(huì)自動(dòng)按規(guī)則生成書號(hào),可以修改信息,但一經(jīng)創(chuàng)建就不允許刪除。該系統(tǒng)還應(yīng)該能夠?qū)耐饨枨闆r進(jìn)行記錄,可對(duì)外借情況列表打印。另外,還希望能夠?qū)馁徺I金額、冊(cè)數(shù)按特定時(shí)間周期進(jìn)行統(tǒng)計(jì)發(fā)現(xiàn)類小王是一個(gè)愛書之人,家里各類書籍已過千冊(cè),而平時(shí)又時(shí)常有朋友外借,因此需要一個(gè)個(gè)人圖書管理系統(tǒng)。該系統(tǒng)應(yīng)該能夠?qū)幕拘畔从?jì)算機(jī)類、非計(jì)算機(jī)類分別建檔,實(shí)現(xiàn)按書名、作者、類別、出版社等關(guān)鍵字的組合查詢功能。在使用該系統(tǒng)錄入新書籍時(shí)系統(tǒng)會(huì)自動(dòng)按規(guī)則生成書號(hào),可以修改信息,但一經(jīng)創(chuàng)建就不允許刪除。該系統(tǒng)還應(yīng)該能夠?qū)耐饨枨闆r進(jìn)行記錄,可對(duì)外借情況列表打印。另外,還希望能夠?qū)馁徺I金額、冊(cè)數(shù)按特定時(shí)間周期進(jìn)行統(tǒng)計(jì)篩選備選類“小王”、“人”、“家里”很明顯是系統(tǒng)外的概念,無須對(duì)其建模;而“個(gè)人圖書管理系統(tǒng)”、“系統(tǒng)”指的就是將要開發(fā)的系統(tǒng),即系統(tǒng)本身,也無須對(duì)其進(jìn)行建模;很明顯“書籍”是一個(gè)很重要的類,而“書名”、“作者”、“類別”、“出版社”、“書號(hào)”則都是用來描述書籍的基本信息的,因此應(yīng)該作為“書籍”類的屬性處理,而“規(guī)則”是指書號(hào)的生成規(guī)則,而書號(hào)則是書籍的一個(gè)屬性,因此“規(guī)則”可以作為編寫“書籍”類構(gòu)造函數(shù)的指南?!盎拘畔ⅰ眲t是書名、作者、類別等描述書籍的基本信息統(tǒng)稱,“關(guān)鍵字”則是代表其中之一,因此無需對(duì)其建模;“功能”、“新書籍”、“信息”、“記錄”都是在描述需求時(shí)使用到的一些相關(guān)詞語,并不是問題域的本質(zhì),因此先可以將其淘汰掉;篩選修選類“計(jì)算機(jī)類”、“非計(jì)算機(jī)類”是該系統(tǒng)中圖書的兩大分類,因此應(yīng)該對(duì)其建模,并改名為“計(jì)算機(jī)類書籍”和“非計(jì)算機(jī)類書籍”,以減少歧義;“外借情況”則是用來表示一次借閱行為,應(yīng)該成為一個(gè)候選類,多個(gè)外借情況將組成“外借情況列表”,而外借情況中一個(gè)很重要的角色是“朋友”—借閱主體。雖然到本系統(tǒng)中并不需要建立“朋友”的資料庫,但考慮到可能會(huì)需要列出某個(gè)朋友的借閱情況,因此還是將其列為候選類。為了能夠更好地表述,將“外借情況”改名為“借閱記錄”,而將“外借情況列表”改名為“借閱記錄列表”;“購買金額”、“冊(cè)數(shù)”都是統(tǒng)計(jì)的結(jié)果,都是一個(gè)數(shù)字,因此不用將其建模,而“特定時(shí)限”則是統(tǒng)計(jì)的范圍,也無需將其建模;不過從這里的分析中,我們可以發(fā)現(xiàn),在該需求描述中隱藏著一個(gè)關(guān)鍵類—書籍列表,也就是執(zhí)行統(tǒng)計(jì)的主體。得到候選類在使用“名詞動(dòng)詞法”尋找類的時(shí)候,很多團(tuán)隊(duì)會(huì)在此耗費(fèi)大量的時(shí)間,特別是對(duì)于中大型項(xiàng)目,這樣很容易迷失方向。其實(shí)在此主要的目的是對(duì)問題領(lǐng)域建立概要的了解,無需太過咬文嚼字關(guān)聯(lián)分析,建模,多重性分析,再建模限定與修改導(dǎo)航性分析:Book與BookList之間、BorrowRecord和BorrowList之間是組合關(guān)系均無需添加方向描述,而Book與BorrowRecord之間則是雙方關(guān)聯(lián),也無需添加約束:Book對(duì)象創(chuàng)建后就不能夠

被刪除只能被修改,因此在Book

類邊上加上用自由文本寫的約束;

一本書要么屬于計(jì)算機(jī)類,要么

屬于非計(jì)算機(jī)類,因此在ItBook

和OtherBook間加了“{Xor}”約束限定符:一本書只有一冊(cè),因此只

能夠被借一次,因此對(duì)于一本Book

而言只能有一個(gè)RecordId與其對(duì)應(yīng)

例1:確定銀行網(wǎng)絡(luò)系統(tǒng)ATM(AutoTradeMachine)的類,⑴系統(tǒng)簡(jiǎn)要描述銀行網(wǎng)絡(luò)系統(tǒng)包括人工出納和分行共享的自動(dòng)出納機(jī);各分理處用自己的計(jì)算機(jī)處理業(yè)務(wù)(保存帳戶、處理事務(wù)等);各分理處與出納站通過網(wǎng)絡(luò)通信;出納站錄入帳戶和事務(wù)數(shù)據(jù);自動(dòng)出納機(jī)與分行計(jì)算機(jī)通信;自動(dòng)出納機(jī)與用戶接口,接受現(xiàn)金卡;發(fā)放現(xiàn)金;打印收據(jù);分行計(jì)算機(jī)與撥款分理處結(jié)帳。要求系統(tǒng)正確處理同一帳戶的并發(fā)訪問;網(wǎng)絡(luò)費(fèi)用平均攤派給各分理處。⑵類的識(shí)別采用名詞識(shí)別法:檢查問題陳述中的所有名詞,得到初始類:軟件銀行網(wǎng)絡(luò)分行計(jì)算機(jī)系統(tǒng)分行出納站出納員分理處分理處計(jì)算機(jī)自動(dòng)出納機(jī)帳戶帳戶數(shù)據(jù)現(xiàn)金卡事務(wù)事務(wù)數(shù)據(jù)用戶顧客現(xiàn)金收據(jù)訪問費(fèi)用安全措施記錄保管⑶根據(jù)下述原則進(jìn)一步確定類:①去掉冗余類:如兩個(gè)類表述同一信息,應(yīng)保留最具有描述能力的類,如“用戶”與“顧客”是重復(fù)的描述,由于“顧客”更具有描述性,故保留它,刪除“用戶”。②去掉不相干的類:刪除與問題無關(guān)或關(guān)系不大的類,如“費(fèi)用”。③刪除模糊的類:有些初始類邊界定義不確切,或范圍太廣,應(yīng)該刪除。如“系統(tǒng)”、“安全措施”、“記錄保管”、“銀行網(wǎng)絡(luò)”。④刪除那些性質(zhì)獨(dú)立性不強(qiáng)的,而應(yīng)該是類“屬性”的候選類:如“帳戶數(shù)據(jù)”、“收據(jù)”、“現(xiàn)金”、“事務(wù)數(shù)據(jù)”。⑤所描述的操作不適宜作為對(duì)象類,并被其自身所操縱,所描述的只是實(shí)現(xiàn)過程中的暫時(shí)的對(duì)象,應(yīng)刪去。如“軟件”,“訪問”。4.4.2對(duì)象圖的構(gòu)建對(duì)象圖(ObjectDiagram)是表示在某一時(shí)刻一組對(duì)象以及它們之間的關(guān)系的圖,對(duì)象圖由節(jié)點(diǎn)以及連接這些節(jié)點(diǎn)之間的

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論