第6章 類圖與對(duì)象圖_第1頁
第6章 類圖與對(duì)象圖_第2頁
第6章 類圖與對(duì)象圖_第3頁
第6章 類圖與對(duì)象圖_第4頁
第6章 類圖與對(duì)象圖_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

類圖與對(duì)象圖

6.1類圖的基本概念類圖是顯示一組類、接口、協(xié)作以及它們之間關(guān)系的圖。一個(gè)類圖主要通過系統(tǒng)中的類以及各個(gè)類之間的關(guān)系來描述系統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖主要包含7種元素:類、接口、協(xié)作、依賴關(guān)系、泛化關(guān)系、實(shí)現(xiàn)關(guān)系和關(guān)聯(lián)關(guān)系。類圖中還可以含有包或子系統(tǒng),用來把模型元素聚集成更大的組塊。與其他UML圖類似,類圖同樣可以創(chuàng)建約束和注解等。5.1類圖的基本概念6.2類圖的組成元素類接口類圖中的關(guān)系涉及類的其他概念類類是一組擁有相同的屬性、操作、方法、關(guān)系和行為的對(duì)象描述符。類定義了一組有著狀態(tài)與行為的對(duì)象。類的狀態(tài)由屬性和關(guān)聯(lián)來描述,個(gè)體行為由操作來描述,對(duì)象的生命周期則由附加給類的狀態(tài)機(jī)來描述。在UML中,類表達(dá)成一個(gè)有三個(gè)分隔區(qū)的矩形。其中頂端顯示類名,中間顯示類的屬性,尾端顯示類的操作。類——類名類名是一個(gè)文本串,作為區(qū)別于其他類的名稱。類名有兩種表示方法:簡單名:Person路徑名:java::awt::Rectangle類的命名規(guī)范:一般以大寫字母開頭,大小寫混合,每個(gè)單詞首字母大寫,避免使用特殊符號(hào)。類——屬性屬性是已被命名的類的特性,它描述了該特性的實(shí)例可以取值的范圍。屬性的語法格式:可見性opt

屬性名?:類型?opt

多重性opt?=初始值?opt?{特性}?opt屬性名:屬性的標(biāo)識(shí)符。在描述屬性時(shí),屬性名是必須的,其他部分可選。屬性的命名規(guī)范一般以小寫字母開頭,非首單詞的首字母大寫。對(duì)屬性名添加下劃線修飾表示該屬性為靜態(tài)屬性。類——屬性可見性英文限定符UML標(biāo)準(zhǔn)圖示Rose圖示說明公有public+其他類可以訪問私有private-只對(duì)本類可見,不能被其他類訪問保護(hù)protected#對(duì)本類及其派生類可見可見性:描述了該屬性在那些范圍內(nèi)可以被使用。類型:屬性的數(shù)據(jù)類型,可以系統(tǒng)固有,也可以用戶自定義。屬性的類型決定了該屬性的所有可能取值的集合。類——屬性多重性:屬性的多重性表示為一個(gè)包含于方括號(hào)中的數(shù)字表達(dá)式,位于類型名后,相當(dāng)于編程語言中的數(shù)組概念。例如:inTp[10]初始值:作為創(chuàng)建該類對(duì)象時(shí)這個(gè)屬性的默認(rèn)值。例如:inti=10;特性:即對(duì)屬性性質(zhì)的約束,UML定義了3中可以用于屬性的特性,即可變、只增與凍結(jié)。類——操作操作是一個(gè)可以由類的對(duì)象請(qǐng)求以影響其行為的服務(wù)的實(shí)現(xiàn),也即是對(duì)一個(gè)對(duì)象所做的事情的抽象,并且由這個(gè)類的所有對(duì)象共享。操作是類的行為特征或動(dòng)態(tài)特征。操作的語法格式為:可見性opt

操作名?(參數(shù)列表)?opt?:返回類型?opt?{特性}?opt操作名:操作的標(biāo)識(shí)符。在描述操作時(shí),操作名是必須的,其他部分可選。對(duì)操作名添加下劃線修飾表示該屬性為靜態(tài)操作。類——操作可見性:同樣描述該操作在那些范圍內(nèi)可以使用,與屬性的可見性相同。參數(shù)列表:是一些按照順序排列的屬性定義了操作的輸入。例如:oper(outarg1:int,arg2:double=3.2)返回類型即回送調(diào)用對(duì)象消息的類型。void關(guān)鍵字表示無返回值。特性是對(duì)操作性質(zhì)的約束說明。類——職責(zé)職責(zé)是類的契約或責(zé)任。當(dāng)創(chuàng)建一個(gè)類時(shí),就聲明了這個(gè)類的所有對(duì)象具有相同種類的狀態(tài)和相同種類的行為。在較高的抽象層次上,這些相應(yīng)的屬性和操作正式要完成類的職責(zé)的特征。類的職責(zé)是自由形式的文本,在非正式的類圖中,可以將職責(zé)列在類圖操作下的另一分割欄中。接口接口是一個(gè)被命名的操作集合,用于描述類或組件的一個(gè)服務(wù)。接口不包含屬性與方法實(shí)現(xiàn),但可以有一些操作。接口的所有內(nèi)容都是公有的。接口代表了一份契約,實(shí)現(xiàn)該接口的類元必須履行它。在UML中,接口由一個(gè)帶名稱的小圓圈表示;也可以表示為帶有<<interface>>構(gòu)造型的類。類圖中的關(guān)系在類圖中,很少有類是獨(dú)立為系統(tǒng)發(fā)揮作用的,大部分的類以某些方式彼此協(xié)作進(jìn)行工作。在進(jìn)行系統(tǒng)建模時(shí),不僅要抽象出形成系統(tǒng)詞匯的事物,還必須對(duì)這些事物之間的關(guān)系進(jìn)行建模。類圖中涉及到了UML中最常用的四種關(guān)系,即關(guān)聯(lián)關(guān)系、泛化關(guān)系、依賴關(guān)系和實(shí)現(xiàn)關(guān)系。類圖中的關(guān)系——關(guān)聯(lián)關(guān)系關(guān)聯(lián)的實(shí)例被稱為鏈,每個(gè)鏈由一組有序或無序的對(duì)象組成。關(guān)聯(lián)關(guān)系靠近被關(guān)聯(lián)元素的部分稱為關(guān)聯(lián)端,關(guān)聯(lián)的大部分描述都包含在一組關(guān)聯(lián)端的列表里,每個(gè)端用來描述關(guān)聯(lián)中類的對(duì)象的參與。最普通也是最常用的關(guān)聯(lián)關(guān)系是二元關(guān)聯(lián),二元關(guān)聯(lián)即有兩個(gè)關(guān)聯(lián)端的關(guān)聯(lián)關(guān)系。特別地,一個(gè)類與自身的關(guān)聯(lián)稱為自關(guān)聯(lián)。當(dāng)3個(gè)或以上的類之間存在關(guān)聯(lián)關(guān)系時(shí),便無法使用二元關(guān)聯(lián)的表示法了,此時(shí)稱之為N元關(guān)聯(lián)。類圖中的關(guān)系——關(guān)聯(lián)關(guān)系二元關(guān)聯(lián)自關(guān)聯(lián)三元關(guān)聯(lián)類圖中的關(guān)系——關(guān)聯(lián)關(guān)系關(guān)聯(lián)名稱:放在關(guān)聯(lián)路徑的旁邊,但遠(yuǎn)離關(guān)聯(lián)端。角色:放在靠近關(guān)聯(lián)端的部分,表示該關(guān)聯(lián)端連接的類在這一關(guān)聯(lián)關(guān)系中擔(dān)任的角色。角色名上也可使用可見性修飾符號(hào)。多重性:放在靠近關(guān)聯(lián)端的部分,表示在關(guān)聯(lián)關(guān)系中源端的一個(gè)對(duì)象可以與目標(biāo)類的多少個(gè)對(duì)象之間有關(guān)聯(lián)。導(dǎo)航性:一個(gè)布爾值,用來說明運(yùn)行時(shí)刻是否可能穿越一個(gè)關(guān)聯(lián)。限定符:是二元關(guān)聯(lián)上的屬性組成的列表的插槽,其中的屬性值用來從整個(gè)對(duì)象集合里選擇一個(gè)唯一的關(guān)聯(lián)對(duì)象或者關(guān)聯(lián)對(duì)象的集合。約束:關(guān)聯(lián)間的約束關(guān)系。類圖中的關(guān)系——關(guān)聯(lián)關(guān)系角色多重性導(dǎo)航性限定符約束類圖中的關(guān)系——關(guān)聯(lián)關(guān)系兩種特殊的關(guān)聯(lián)關(guān)系:聚合關(guān)系與組合關(guān)系聚合關(guān)系描述“整體-部分”的關(guān)聯(lián)關(guān)系聚合關(guān)系沒有改變整體與部分之間整個(gè)關(guān)聯(lián)的導(dǎo)航含義,也與整體和部分的生命周期無關(guān)。組合關(guān)系描述“整體-部分”的關(guān)聯(lián)關(guān)系組合關(guān)系中的部分要完全依賴于整體。類圖中的關(guān)系——關(guān)聯(lián)關(guān)系派生關(guān)聯(lián):屬于一種派生元素。它不增加語義信息,只是一種可以由兩個(gè)或兩個(gè)以上的基礎(chǔ)關(guān)聯(lián)推算出來的虛擬關(guān)聯(lián)。派生語義在模型中不添加任何額外的語義,只是為了方便關(guān)聯(lián)的使用。類圖中的關(guān)系——泛化關(guān)系泛化關(guān)系定義為一個(gè)較普通的元素與一個(gè)較特殊的元素之間的類元關(guān)系。其中描述一般的元素稱為父,描述特殊的元素稱為子。通過泛化對(duì)應(yīng)的繼承機(jī)制使子類共享父類的屬性和操作,縮小了模型的規(guī)模,同時(shí)也防止了模型的更新所導(dǎo)致的定義不一致的意外。泛化關(guān)系的特征:傳遞性:一個(gè)類的子類同樣繼承了這個(gè)類的特性。在父方向上經(jīng)過了一個(gè)或幾個(gè)泛化的元素被稱為祖先,在子方向上則被稱為后代。反對(duì)稱性:泛化關(guān)系不能成環(huán),即一個(gè)類不可能是自己的祖先和自己的后代。類圖中的關(guān)系——泛化關(guān)系泛化關(guān)系的兩種情況單繼承:每個(gè)類之多能擁有一個(gè)父類。編程語言:C#、Java等多重繼承:子類可以有多個(gè)父類并繼承了所有父類的結(jié)構(gòu)、行為和約束。編程語言:C++等類圖中的關(guān)系——依賴關(guān)系依賴關(guān)系表示的是兩個(gè)元素之間語義上的連接關(guān)系。對(duì)于兩個(gè)元素X和Y,如果元素X的變化會(huì)引起對(duì)另一個(gè)元素Y的變化,則稱元素Y依賴于X。其中,X被稱為提供者,Y被稱為客戶。對(duì)于類圖而言,主要有以下需要使用依賴的情況:客戶類向提供者類發(fā)送消息。提供者類是客戶類的屬性類型。提供者類是客戶類操作的參數(shù)類型。類圖中的關(guān)系——實(shí)現(xiàn)關(guān)系實(shí)現(xiàn)關(guān)系用來表示規(guī)格說明與實(shí)現(xiàn)之間的關(guān)系。在類圖中,實(shí)現(xiàn)關(guān)系主要用于接口與實(shí)現(xiàn)該接口的類之間。一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,一個(gè)接口也可以被多個(gè)類實(shí)現(xiàn)。實(shí)現(xiàn)關(guān)系的兩種表示法:當(dāng)接口元素以帶構(gòu)造型的類的方式表示時(shí),用虛線三角形箭頭表示。當(dāng)接口元素以小圓圈方式表示時(shí),用實(shí)線表示。涉及類的其他概念類的高級(jí)概念:抽象類模板類關(guān)聯(lián)類分析類涉及類的其他概念——抽象類抽象類即不可實(shí)例化的類,也就是說,抽象類沒有直接的實(shí)例。在UML中,抽象類通過對(duì)類名添加斜體修飾來表示。涉及類的其他概念——模板類模板又稱為參數(shù)化元素是對(duì)一類帶有一個(gè)或者多個(gè)未綁定的形式參數(shù)的元素的描述。模板應(yīng)用在類上時(shí)稱為模板類。對(duì)應(yīng)概念:C++中的模板與Java中的泛型模板類可以根據(jù)參數(shù)來定義類,而不用說明屬性和操作參數(shù)及返回值的具體類型,使用時(shí)通過實(shí)際值代替參數(shù)即可創(chuàng)建新的類,這樣就可以避免建立大量功能相似的類。涉及類的其他概念——關(guān)聯(lián)類具有類的特性的關(guān)聯(lián)關(guān)系,稱為關(guān)聯(lián)類。關(guān)聯(lián)類具有關(guān)聯(lián)和類二者的特性,它既可以關(guān)聯(lián)類元素,也可以擁有屬性和操作。關(guān)聯(lián)類在UML中被表示為一個(gè)類符號(hào),并通過一條虛線連接到關(guān)聯(lián)路徑。涉及類的其他概念——分析類分析類是一個(gè)主要用于開發(fā)過程中的概念,用來獲取系統(tǒng)中主要的“職責(zé)簇”,代表系統(tǒng)的原型類,是帶有某些構(gòu)造型的類元素。邊界類:用于對(duì)系統(tǒng)外部環(huán)境與其內(nèi)部運(yùn)作之間的交互進(jìn)行建模的類??刂祁悾簩?duì)一個(gè)或多個(gè)用例所特有的控制行為進(jìn)行建模的類。實(shí)體類:用于對(duì)必須存儲(chǔ)的信息和相關(guān)行為建模的類。涉及類的其他概念——分析類6.3類圖的實(shí)例——對(duì)象圖對(duì)象圖概述對(duì)象圖的組成元素對(duì)象鏈對(duì)象圖概述對(duì)象圖顯示了某一時(shí)刻的一組對(duì)象及它們之間的關(guān)系。對(duì)象圖可以看做是類圖的實(shí)例,用來表達(dá)各個(gè)對(duì)象在某一時(shí)刻的狀態(tài)。對(duì)象圖中的建模元素主要有對(duì)象和鏈,對(duì)象是類的實(shí)例,鏈?zhǔn)穷愔g的關(guān)聯(lián)關(guān)系的實(shí)例。對(duì)象圖的組成元素——對(duì)象對(duì)象是類的實(shí)例,是一個(gè)封裝了狀態(tài)和行為的具有良好邊界和標(biāo)識(shí)符的離散實(shí)體。對(duì)象通過其類型、名稱和狀態(tài)區(qū)別于其他對(duì)象而存在。對(duì)象名:在矩形框的頂端顯示。類型:具體的類目狀態(tài):由對(duì)象的所有屬性以及運(yùn)行時(shí)的當(dāng)前值組成。表示法:在對(duì)象名后跟一個(gè)冒號(hào)加上類型名,并且使用下劃線與類進(jìn)行區(qū)分。stu:Student

標(biāo)準(zhǔn)表示法:Student

匿名表示法stu

省略類名的表示法對(duì)象圖的組成元素——鏈鏈?zhǔn)顷P(guān)聯(lián)關(guān)系的實(shí)例,是兩個(gè)或多個(gè)對(duì)象之間的獨(dú)立連接。因此,鏈在對(duì)象圖中的作用就十分類似于關(guān)聯(lián)關(guān)系在類圖中的作用。在UML中,鏈同樣使用一根實(shí)線段來表示,如圖6-27所示。鏈主要用來導(dǎo)航。鏈一端的一個(gè)對(duì)象可以得到另一位置上的一個(gè)或一組對(duì)象,然后向其發(fā)送消息。鏈的每一端也可以顯示一個(gè)角色名稱,但不能顯示多重性。6.4類圖與對(duì)象圖的建模技術(shù)類圖的建模技術(shù)正向工程與逆向工程對(duì)象圖的建模技術(shù)面向?qū)ο笤O(shè)計(jì)的原則類圖的建模技術(shù)對(duì)系統(tǒng)的詞匯建模識(shí)別用戶或系統(tǒng)開發(fā)人員用于描述問題或解決問題的那些實(shí)體??梢允褂没谟美治龅募夹g(shù)幫助用戶發(fā)現(xiàn)這些抽象。對(duì)于每個(gè)抽象,識(shí)別一個(gè)職責(zé)集。要明確地定義每個(gè)類,而且這些指責(zé)要在所有的類之間很好的均衡。提供為實(shí)現(xiàn)每個(gè)類的職責(zé)所需的屬性和操作。類圖的建模技術(shù)對(duì)簡單協(xié)作建模識(shí)別要建模的機(jī)制。機(jī)制描述了正在建模的部分系統(tǒng)的一些功能和行為,這些功能起因于類、接口以及其他一些事物所組成的群體的相互作用。識(shí)別元素及其關(guān)系。對(duì)于每一種機(jī)制,分別識(shí)別參與協(xié)作的類、接口和其他協(xié)作,并識(shí)別這些事物之間的關(guān)系。用腳本排演這些事物。通過這種方法,可發(fā)現(xiàn)模型的哪些部分被遺漏以及哪些部分有明顯語義錯(cuò)誤。把元素和其包含的內(nèi)容聚集在一起。對(duì)于類而言,要做好職責(zé)的平均分配,然后逐漸把它們轉(zhuǎn)換成具體的屬性和操作。類圖的建模技術(shù)對(duì)邏輯數(shù)據(jù)庫模式建模識(shí)別模型中那些狀態(tài)必須超過應(yīng)用程序生存時(shí)間的類作為需要作為永久數(shù)據(jù)存儲(chǔ)的類。創(chuàng)建一個(gè)包含這些類的類圖。可以自己定義相關(guān)的構(gòu)造型和標(biāo)記值組合。對(duì)類的結(jié)構(gòu)細(xì)節(jié)進(jìn)行細(xì)化。包括屬性的細(xì)節(jié)、類之間的關(guān)聯(lián)及其多重性。注意那些增加數(shù)據(jù)庫設(shè)計(jì)復(fù)雜化的公共模式并盡量簡化,如循環(huán)關(guān)聯(lián)、一對(duì)一的關(guān)聯(lián)和N元關(guān)聯(lián)等??紤]類的行為。這些行為主要包括對(duì)數(shù)據(jù)存取和數(shù)據(jù)完整性約束重要的操作。一般情況下,這些業(yè)務(wù)規(guī)則應(yīng)該被封裝在這些永久類的上一層中。正向工程與逆向工程正向工程:是通過到實(shí)現(xiàn)語言的映射而把模型轉(zhuǎn)換為代碼的過程。使用正向工程將模型轉(zhuǎn)換為代碼將導(dǎo)致一些信息丟失。正向工程的策略:確定映射到實(shí)現(xiàn)語言的規(guī)則。根據(jù)所選擇的語言,限制某些UML的特性。例如,當(dāng)所選擇的語言是Java時(shí),要禁止多重繼承的使用。使用標(biāo)記值來幫助實(shí)現(xiàn)目標(biāo)語言的細(xì)節(jié)。使用工具生成代碼。正向工程與逆向工程逆向工程:通過從特定語言的映射而把代碼轉(zhuǎn)換為模型的過程。一方面,逆向工程會(huì)產(chǎn)生大量的冗余信息;另一方面,逆向工程是不完整的。逆向工程的策略:確定實(shí)現(xiàn)語言進(jìn)行映射的規(guī)則。指定要進(jìn)行逆向工程的代碼。期望從一大塊代碼中逆向生成一個(gè)簡明的模型是不切實(shí)際的。應(yīng)該選擇部分代碼,從底部建造模型。使用工具,通過查詢模型來創(chuàng)建類圖。人工為模型增加在逆向工程中丟失或隱藏的相關(guān)信息。對(duì)象圖的建模技術(shù)為對(duì)象結(jié)構(gòu)建模識(shí)別建模機(jī)制。建模機(jī)制被描述為系統(tǒng)的某些功能或行為,經(jīng)常會(huì)被耦合為用例,由一組類、接口和其他事物的交互產(chǎn)生??梢詣?chuàng)建協(xié)作來描述機(jī)制。識(shí)別參與的類和接口等元素,以及這些元素之間的關(guān)系。識(shí)別并選擇對(duì)象。考慮這個(gè)機(jī)制的腳本在某時(shí)刻被凍結(jié)時(shí)的情況,識(shí)別并選擇出各個(gè)對(duì)象。按需要顯示每個(gè)對(duì)象的狀態(tài)。識(shí)別并顯示出對(duì)象之間的鏈,即對(duì)象的類目之間關(guān)聯(lián)的實(shí)例。面向?qū)ο笤O(shè)計(jì)的原則——開閉原則內(nèi)容:軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。通俗來講,開閉原則就是軟件系統(tǒng)中的各組件,應(yīng)該能夠在不修改現(xiàn)有內(nèi)容的基礎(chǔ)上,引入新功能。為了達(dá)到開閉原則,對(duì)于類圖的設(shè)計(jì)應(yīng)該盡可能地使用接口或泛化進(jìn)行封裝,并且通過使用多態(tài)機(jī)制進(jìn)行調(diào)用。接口和泛化的使用可以使操作的定義與實(shí)現(xiàn)分離,使得新添加的模塊依賴于原有模塊的接口。多態(tài)的使用使得在使用時(shí)可以通過創(chuàng)建父類的間接實(shí)例通過多態(tài)的支持進(jìn)行操作,從而避免對(duì)其他類的修改。面向?qū)ο笤O(shè)

溫馨提示

  • 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)論