面向?qū)ο蠓治雠c設(shè)計(jì) 課件 第5章 類圖建模_第1頁(yè)
面向?qū)ο蠓治雠c設(shè)計(jì) 課件 第5章 類圖建模_第2頁(yè)
面向?qū)ο蠓治雠c設(shè)計(jì) 課件 第5章 類圖建模_第3頁(yè)
面向?qū)ο蠓治雠c設(shè)計(jì) 課件 第5章 類圖建模_第4頁(yè)
面向?qū)ο蠓治雠c設(shè)計(jì) 課件 第5章 類圖建模_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章類圖建模學(xué)習(xí)目標(biāo)

理解和掌握類圖的概念,理解和掌握類圖的構(gòu)成元素及其表示法

理解和掌握從用例圖導(dǎo)出結(jié)構(gòu)模型的一般方法

理解和掌握類圖的基本建模策略和一般建模方法

深刻理解和領(lǐng)會(huì)類圖的意義和作用第5章類圖建模面向?qū)ο蠓治鲞^(guò)程中,用例建模過(guò)程的實(shí)質(zhì)也是一個(gè)功能分析的過(guò)程,其直接結(jié)果是得到了目標(biāo)系統(tǒng)的功能模型。但實(shí)際上我們可以得到的不僅僅是一個(gè)功能模型,事實(shí)上我們還可以如從這些用例以及這些用例的動(dòng)作序列中找到與這個(gè)用例相關(guān)的業(yè)務(wù)邏輯、業(yè)務(wù)實(shí)體以及非功能屬性等等,這些都是影響目標(biāo)系統(tǒng)的重要因素。本節(jié)我們將主要討論類圖模型及其建模方法,同時(shí)還討論如何從用例模型中找到相應(yīng)的類(或?qū)ο螅?,從而建立目?biāo)系統(tǒng)的類圖模型(也稱為概念模型或結(jié)構(gòu)模型)。值得一提的是,在分析階段建立的類圖模型并不一定就是目標(biāo)系統(tǒng)的最終結(jié)構(gòu)模型,大多數(shù)情況下,分析階段建立的類圖模型僅僅是系統(tǒng)的概念模型,而到系統(tǒng)設(shè)計(jì)階段還需要進(jìn)一步細(xì)化為目標(biāo)系統(tǒng)的結(jié)構(gòu)模型。本章將討論類圖模型的表示和建模方法,以及如何從功能模型導(dǎo)出概念模型。5.1類圖的構(gòu)成元素類圖模型的主要構(gòu)成元素不外乎類和類之間的關(guān)系兩大部分。其具體的構(gòu)成元素包括:類、對(duì)象、繼承、關(guān)聯(lián)、聚合、組合和依賴等元素,還包括類型、接口、信號(hào)等模型元素。類圖模型的主要用途在于描述系統(tǒng)的靜態(tài)結(jié)構(gòu),它是軟件模型中最重要的結(jié)構(gòu)模型。本小節(jié)將詳細(xì)介紹類圖的主要構(gòu)成元素和相關(guān)的基本概念。5.1.1類和對(duì)象類(class)被定義為具有相同屬性和行為的全體對(duì)象構(gòu)成的集合,實(shí)際上也代表了對(duì)對(duì)象的一種分類,分類的依據(jù)則是這些對(duì)象所具有的屬性和方法。類所描述的并不是某個(gè)特定實(shí)體的特定行為,而僅用于描述同一類對(duì)象(一類對(duì)象)所具有的共同特征。UML中,使用帶有類名、屬性和操作的矩形框表示類。其中,類名是類的名字,在同一個(gè)上下文中,類名不允許重復(fù)。屬性和操作分別表示類所擁有的屬性和操作的集合。5.1.1類和對(duì)象UML類屬性和方法的一般格式如下:[作用域][可見(jiàn)性]屬性名[:數(shù)據(jù)類型[=缺省值]][作用域][可見(jiàn)性]方法名([[in/out]參數(shù)名[:數(shù)據(jù)類型],…]):參數(shù)列表中,關(guān)鍵字in表示輸入?yún)?shù),out表示輸出參數(shù)。5.1.1類和對(duì)象例如,圖5-1給出了一個(gè)類的圖形表示實(shí)例,圖中Employee是類名,Name、EmployeeID和Title是屬性。GetPhoto(p:Photo)、GetPersonRecord()和GetContactInfomation()則是這個(gè)類的方法。圖5-1類的圖形表示5.1.1類和對(duì)象程序設(shè)計(jì)語(yǔ)言中,通常稱不能實(shí)例化的類為抽象類,而稱可以實(shí)例化的類為具體類。UML支持抽象類和具體類的描述,UML默認(rèn)的類是具體類,其外觀是類名用正常體表示。而抽象類的外觀則是類名使用斜體的形式表示。如圖5-1中的類就表示了一個(gè)抽象類。與類相關(guān)一個(gè)問(wèn)題是屬性和方法的可見(jiàn)性問(wèn)題。UML中,類屬性和方法的可見(jiàn)性被定義分為公共、私有和保護(hù)三個(gè)級(jí)別。在UML類的圖形表示中,使用+、-和#分別表示公共、私有和保護(hù)這三種可見(jiàn)性。缺省的可見(jiàn)性是公共可見(jiàn)性。5.1.1類和對(duì)象如圖5-1中,Name、EmployeeID和Title等三個(gè)屬性的可見(jiàn)性均是私有可見(jiàn)性。GetPhoto()和GetContactInfo()方法的可見(jiàn)性則是公共的。5.1.1類和對(duì)象面向?qū)ο蟪绦蛘Z(yǔ)言中,屬性和方法的作用域被分為類作用域和實(shí)例作用域兩種情況。類作用域是指類中不依賴類的實(shí)例而存在的屬性和方法。無(wú)論是否創(chuàng)建類的實(shí)例,類中具有類作用域的屬性和方法就已經(jīng)存在并可以訪問(wèn)。而當(dāng)創(chuàng)建了一個(gè)或多個(gè)類的實(shí)例時(shí),類類作用域的屬性和方法也沒(méi)有因?yàn)檫@些實(shí)例的創(chuàng)建而建立多個(gè)不同的副本。與類作用域相反,實(shí)例作用域則是指類中其存在性和訪問(wèn)性均依賴于實(shí)例的屬性和方法。UML類中,使用正常體和斜體的屬性或方法名來(lái)表示具有作用域,斜體表示類作用域,正常體則表示實(shí)例作用域。UML默認(rèn)的作用域是實(shí)例作用域。5.1.1類和對(duì)象與類屬性和方法相關(guān)的最后一個(gè)問(wèn)題是數(shù)據(jù)類型問(wèn)題,UML以標(biāo)準(zhǔn)UML數(shù)據(jù)類型、程序設(shè)計(jì)語(yǔ)言的數(shù)據(jù)類型和自定義數(shù)據(jù)類型等三種方式支持?jǐn)?shù)據(jù)類型。UML類中,屬性、方法以及方法的形式參數(shù)和返回值等均可以使用這些數(shù)據(jù)類型。如圖5-1中,屬性EmployeeID的數(shù)據(jù)類型int就是一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)類型。而方法GetPhoto()的返回值類型(Photo)則可以看作是一個(gè)類或自定義的數(shù)據(jù)類型。5.1.2類(或?qū)ο螅┲g的關(guān)系嚴(yán)格地說(shuō),在面向?qū)ο笙到y(tǒng)中,類之間的關(guān)系主要是指類之間的泛化關(guān)系。而對(duì)象之間的關(guān)系卻可以是多樣的,面向?qū)ο蠓椒▽⑺鼈兂橄蟪梢蕾嚒㈥P(guān)聯(lián)、聚合、組合等四種關(guān)系。雖然這些關(guān)系描述的是對(duì)象之間的關(guān)系,但UML卻統(tǒng)一地使用類圖來(lái)描述這些關(guān)系,并為它們定義了相應(yīng)的表示法。因此,類圖模型中的關(guān)系就被概括成依賴、關(guān)聯(lián)、聚合、組合和泛化這五種關(guān)系。值得注意的是,在概念上嚴(yán)格地區(qū)分類關(guān)系與對(duì)象關(guān)系之間的聯(lián)系和區(qū)別,將是從事面向?qū)ο蠓治雠c設(shè)計(jì)工作的極為重要的基本思維方式和工作基礎(chǔ)。5.1.2類(或?qū)ο螅┲g的關(guān)系1.依賴關(guān)系(Dependency)對(duì)于兩個(gè)對(duì)象來(lái)說(shuō),如果一個(gè)對(duì)象(或類)的屬性或行為發(fā)生的某種變化將會(huì)引起另一個(gè)對(duì)象(或類)的屬性或行為發(fā)生必要的改變,那么就稱這兩個(gè)對(duì)象(或類)之間存在某種依賴關(guān)系。UML使用類圖描述對(duì)象之間的依賴關(guān)系,這種方式可以更容易地描述目標(biāo)系統(tǒng)中對(duì)象(或類)之間存在的依賴關(guān)系。對(duì)象之間的依賴關(guān)系的實(shí)質(zhì)是指系統(tǒng)中存在的某種耦合關(guān)系。UML使用一個(gè)帶有箭頭的虛線表示類之間的依賴關(guān)系。5.1.2類(或?qū)ο螅┲g的關(guān)系

圖5-2對(duì)象之間的依賴關(guān)系圖5-2給出了對(duì)象間的依賴關(guān)系的類圖表示。對(duì)于類來(lái)說(shuō),依賴的確切含義是A類的某個(gè)實(shí)例訪問(wèn)了某個(gè)(或某些)B類實(shí)例的某些屬性或方法,當(dāng)B類的屬性或方法發(fā)生改變時(shí),將會(huì)引起A類發(fā)生相應(yīng)的改變。5.1.2類(或?qū)ο螅┲g的關(guān)系2.關(guān)聯(lián)關(guān)系(Association)關(guān)聯(lián)(Association)關(guān)系是對(duì)象(或類)之間存在的結(jié)構(gòu)性的關(guān)系,其確切的定義是:對(duì)于兩個(gè)對(duì)象(或類)來(lái)說(shuō),如果在一個(gè)對(duì)象的內(nèi)部可以訪問(wèn)另一個(gè)對(duì)象的所有屬性和方法時(shí),我們就可以稱這兩個(gè)對(duì)象(或類)之間存在著關(guān)聯(lián)關(guān)系。如汽車和輪胎、師傅和徒弟、班級(jí)和學(xué)生之間的關(guān)系等。顯然,關(guān)聯(lián)關(guān)系必然是一種依賴關(guān)系。在UML中,使用一條實(shí)線連接有關(guān)聯(lián)關(guān)系的對(duì)象所屬的類來(lái)表示對(duì)象之間的關(guān)聯(lián)關(guān)系。而在程序設(shè)計(jì)語(yǔ)言中,通常采用將一個(gè)類的實(shí)例或?qū)嵗米鳛榱硪粋€(gè)類的成員的方式來(lái)實(shí)現(xiàn)對(duì)象之間的關(guān)聯(lián)關(guān)系。5.1.2類(或?qū)ο螅┲g的關(guān)系圖5-3關(guān)聯(lián)的UML表示關(guān)聯(lián)可以是有方向的,也可以是無(wú)方向的。因此,關(guān)聯(lián)可以分成單向關(guān)聯(lián)和雙向關(guān)聯(lián)。圖5-3給出了類關(guān)聯(lián)的UML表示。其中,(a)給出了雙向關(guān)聯(lián),(b)給出了單向關(guān)聯(lián)的UML表示。雙向關(guān)聯(lián)的含義是相互關(guān)聯(lián)的兩個(gè)對(duì)象之間是可以互相訪問(wèn)的,即任何兩個(gè)相互關(guān)聯(lián)的對(duì)象之間可以互相訪問(wèn);單向關(guān)聯(lián)的含義則是相互關(guān)聯(lián)的兩個(gè)對(duì)象之間的訪問(wèn)則是單向的,如5.3(b)中的A類對(duì)象可以訪問(wèn)與之關(guān)聯(lián)的B類對(duì)象,反之則不可以。5.1.2類(或?qū)ο螅┲g的關(guān)系2.關(guān)聯(lián)關(guān)系(Association)關(guān)聯(lián)(Association)關(guān)系是對(duì)象(或類)之間存在的結(jié)構(gòu)性的關(guān)系,其確切的定義是:對(duì)于兩個(gè)對(duì)象(或類)來(lái)說(shuō),如果在一個(gè)對(duì)象的內(nèi)部可以訪問(wèn)另一個(gè)對(duì)象的所有屬性和方法時(shí),我們就可以稱這兩個(gè)對(duì)象(或類)之間存在著關(guān)聯(lián)關(guān)系。如汽車和輪胎、師傅和徒弟、班級(jí)和學(xué)生之間的關(guān)系等。顯然,關(guān)聯(lián)關(guān)系必然是一種依賴關(guān)系。在UML中,使用一條實(shí)線連接有關(guān)聯(lián)關(guān)系的對(duì)象所屬的類來(lái)表示對(duì)象之間的關(guān)聯(lián)關(guān)系。而在程序設(shè)計(jì)語(yǔ)言中,通常采用將一個(gè)類的實(shí)例或?qū)嵗米鳛榱硪粋€(gè)類的成員的方式來(lái)實(shí)現(xiàn)對(duì)象之間的關(guān)聯(lián)關(guān)系。5.1.2類(或?qū)ο螅┲g的關(guān)系關(guān)聯(lián)角色(Associationrole)可以看成是對(duì)參與關(guān)聯(lián)的對(duì)象(或?qū)嶓w)在關(guān)聯(lián)中所充當(dāng)?shù)慕巧R话闱闆r下,每個(gè)關(guān)聯(lián)都應(yīng)該含有若干個(gè)關(guān)聯(lián)角色。描述關(guān)聯(lián)關(guān)系時(shí),通常需要為關(guān)聯(lián)命名和關(guān)聯(lián)角色命名。關(guān)聯(lián)名字用于標(biāo)識(shí)實(shí)體間的某種特定聯(lián)系。關(guān)聯(lián)角色名則表示關(guān)聯(lián)對(duì)象在與其關(guān)聯(lián)的對(duì)象中所承擔(dān)的職責(zé)。一個(gè)關(guān)聯(lián)關(guān)系通常包含兩個(gè)關(guān)聯(lián)角色,角色名可以使類(對(duì)象)之間的關(guān)系更加明確。5.1.2類(或?qū)ο螅┲g的關(guān)系關(guān)聯(lián)角色的多重性表示這種關(guān)聯(lián)角色在與之關(guān)聯(lián)的對(duì)象中存在的數(shù)量關(guān)系。同一個(gè)關(guān)聯(lián)的兩個(gè)關(guān)聯(lián)角色可以有不同的多重性。多重性一般可用一個(gè)數(shù)值、一個(gè)變量或一個(gè)范圍值來(lái)加以表示。其中,*表示多的,其可取值不固定。常見(jiàn)的多重性表示包括:0、1、*、0..1、0..*和1..*等多種形式。將關(guān)聯(lián)角色映射到實(shí)現(xiàn)域時(shí),關(guān)聯(lián)角色(包括關(guān)聯(lián)角色名及其多重性)將被映射成對(duì)應(yīng)的類或?qū)ο蟮囊粋€(gè)屬性。5.1.2類(或?qū)ο螅┲g的關(guān)系例如,圖5-4中的關(guān)聯(lián)。其中,關(guān)聯(lián)的名字為employ,表示兩個(gè)對(duì)象之間的聘用關(guān)系。關(guān)聯(lián)兩端的關(guān)聯(lián)角色名分別為cop和staff,其中cop表示Corporation對(duì)象在Staffmember對(duì)象中所充當(dāng)?shù)慕巧?。同樣,staff表示Staffmember對(duì)象在Corporation對(duì)象中所充當(dāng)?shù)慕巧?。圖5-4關(guān)聯(lián)的角色名和多重性5.1.2類(或?qū)ο螅┲g的關(guān)系閱讀下列程序代碼,會(huì)更容易地理解圖5-4中各個(gè)模型元素或符號(hào)的意義。publicclassCorporation{privatestringID;privatestringName;publicStaffmemberstaff[];publicCorporation(){}publicCorporation(stringid,stringname){ID=id;Name=name;}publicAddStaffmember(Staffmemberm){staff.Add(m);}}publicclassStaffmember{privatestringID;privatestringName;publicCorporationcop;publicStaffmember(){}publicStaffmember(stringid,stringname,Corporationc){ID=id;Name=name;Cop=c;}}5.1.2類(或?qū)ο螅┲g的關(guān)系最后一個(gè)問(wèn)題是關(guān)聯(lián)關(guān)系的實(shí)例化問(wèn)題,實(shí)例化具有關(guān)聯(lián)關(guān)系時(shí),不僅要實(shí)例化相關(guān)對(duì)象,還需要建立起關(guān)聯(lián)對(duì)象之間的鏈接。假設(shè)系統(tǒng)中的Corporation對(duì)象為Corporation(001,“陽(yáng)光股份”),其員工包括:張三、“李四”和“王二”等三個(gè)員工。此時(shí),這組對(duì)象及其關(guān)聯(lián)關(guān)系的實(shí)例化過(guò)程可以描述如下。Corporationc=newCorporation(001,“陽(yáng)光股份”);//實(shí)例化Corporation對(duì)象;Staffmembers1=newStaffmember(“01”,“張三”,c);//實(shí)例化Staffmember對(duì)象;Staffmembers2=newStaffmember(“02”,“李四”,c);Staffmembers3=newStaffmember(“03”,“王二”,c);c.AddStaffmember(s1);c.AddStaffmember(s2);c.AddStaffmember(s3);5.1.2類(或?qū)ο螅┲g的關(guān)系圖5-5中的對(duì)象圖給出了上述過(guò)程實(shí)例化出來(lái)的關(guān)聯(lián)對(duì)象實(shí)例。

圖5-5圖5-4中關(guān)聯(lián)的一個(gè)實(shí)例3.聚合與組合在關(guān)聯(lián)關(guān)系中,聚合(Aggregation)關(guān)系描述的則是對(duì)象之間具有的一種整體和部分之間的關(guān)系。如果一個(gè)對(duì)象是另一個(gè)對(duì)象的一個(gè)組成部分,那么稱兩個(gè)對(duì)象之間的關(guān)系是一種聚合關(guān)系。特別地,當(dāng)這兩個(gè)對(duì)象具有相同的生命周期時(shí),又稱這個(gè)聚合關(guān)系為組合(Composition)關(guān)系。聚合關(guān)系可以用一個(gè)帶有空心菱形框的直線表示,菱形框一端是整體對(duì)象,有時(shí)也稱其為聚合,另一端是部分對(duì)象。當(dāng)聚合關(guān)系也是一個(gè)組合關(guān)系時(shí),這個(gè)表示中的菱形框就換成實(shí)心的菱形框表示。3.聚合與組合圖5-6給出了表示了聚合和組合關(guān)系的UML類圖表示。圖5-6聚合和組合關(guān)系的類圖表示需要特別指出的是,聚合關(guān)系是一種特殊的關(guān)聯(lián)關(guān)系,關(guān)聯(lián)關(guān)系的一切特性都適用于聚合關(guān)系。與一般的關(guān)聯(lián)關(guān)系不同的是,聚合關(guān)系中,部分對(duì)象是整體對(duì)象的一個(gè)組成部分,它(或它們)承擔(dān)了整體對(duì)象所承擔(dān)的某個(gè)(或某些)系統(tǒng)責(zé)任,是整體對(duì)象所固有不可分割的一個(gè)組成部分。組合關(guān)系則強(qiáng)調(diào)了部分對(duì)象與整體對(duì)象之間聯(lián)系的強(qiáng)度,強(qiáng)調(diào)了部分對(duì)象與整體對(duì)象在生存期方面的緊密聯(lián)系。建模時(shí),將關(guān)聯(lián)關(guān)系建模成組合或聚合需要關(guān)注的是兩個(gè)對(duì)象的系統(tǒng)責(zé)任與生存期之間的關(guān)系。3.聚合與組合在關(guān)聯(lián)關(guān)系中,聚合(Aggregation)關(guān)系描述的則是對(duì)象之間具有的一種整體和部分之間的關(guān)系。如果一個(gè)對(duì)象是另一個(gè)對(duì)象的一個(gè)組成部分,那么稱兩個(gè)對(duì)象之間的關(guān)系是一種聚合關(guān)系。特別地,當(dāng)這兩個(gè)對(duì)象具有相同的生命周期時(shí),又稱這個(gè)聚合關(guān)系為組合(Composition)關(guān)系。聚合關(guān)系可以用一個(gè)帶有空心菱形框的直線表示,菱形框一端是整體對(duì)象,有時(shí)也稱其為聚合,另一端是部分對(duì)象。當(dāng)聚合關(guān)系也是一個(gè)組合關(guān)系時(shí),這個(gè)表示中的菱形框就換成實(shí)心的菱形框表示。3.聚合與組合例如,圖5-6中,產(chǎn)品和零件之間就是一種整體與部分之間的關(guān)聯(lián)關(guān)系,每個(gè)產(chǎn)品所具有的各項(xiàng)功能通常是由其各個(gè)零件及其相互協(xié)作承擔(dān)的,二者是密不可分的。從生存期的角度來(lái)看,零件損壞時(shí),只要跟換一個(gè)同類型的零件后,產(chǎn)品仍然可以繼續(xù)使用。此時(shí),產(chǎn)品和零件并不具備相同的生存期。因此,我們使用聚

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論