版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
類圖與對象圖
6.1類圖的基本概念類圖是顯示一組類、接口、協(xié)作以及它們之間關(guān)系的圖。一個類圖主要通過系統(tǒng)中的類以及各個類之間的關(guān)系來描述系統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖主要包含7種元素:類、接口、協(xié)作、依賴關(guān)系、泛化關(guān)系、實現(xiàn)關(guān)系和關(guān)聯(lián)關(guān)系。類圖中還可以含有包或子系統(tǒng),用來把模型元素聚集成更大的組塊。與其他UML圖類似,類圖同樣可以創(chuàng)建約束和注解等。5.1類圖的基本概念6.2類圖的組成元素類接口類圖中的關(guān)系涉及類的其他概念類類是一組擁有相同的屬性、操作、方法、關(guān)系和行為的對象描述符。類定義了一組有著狀態(tài)與行為的對象。類的狀態(tài)由屬性和關(guān)聯(lián)來描述,個體行為由操作來描述,對象的生命周期則由附加給類的狀態(tài)機來描述。在UML中,類表達(dá)成一個有三個分隔區(qū)的矩形。其中頂端顯示類名,中間顯示類的屬性,尾端顯示類的操作。類——類名類名是一個文本串,作為區(qū)別于其他類的名稱。類名有兩種表示方法:簡單名:Person路徑名:java::awt::Rectangle類的命名規(guī)范:一般以大寫字母開頭,大小寫混合,每個單詞首字母大寫,避免使用特殊符號。類——屬性屬性是已被命名的類的特性,它描述了該特性的實例可以取值的范圍。屬性的語法格式:可見性opt
屬性名?:類型?opt
多重性opt?=初始值?opt?{特性}?opt屬性名:屬性的標(biāo)識符。在描述屬性時,屬性名是必須的,其他部分可選。屬性的命名規(guī)范一般以小寫字母開頭,非首單詞的首字母大寫。對屬性名添加下劃線修飾表示該屬性為靜態(tài)屬性。類——屬性可見性英文限定符UML標(biāo)準(zhǔn)圖示Rose圖示說明公有public+其他類可以訪問私有private-只對本類可見,不能被其他類訪問保護protected#對本類及其派生類可見可見性:描述了該屬性在那些范圍內(nèi)可以被使用。類型:屬性的數(shù)據(jù)類型,可以系統(tǒng)固有,也可以用戶自定義。屬性的類型決定了該屬性的所有可能取值的集合。類——屬性多重性:屬性的多重性表示為一個包含于方括號中的數(shù)字表達(dá)式,位于類型名后,相當(dāng)于編程語言中的數(shù)組概念。例如:inTp[10]初始值:作為創(chuàng)建該類對象時這個屬性的默認(rèn)值。例如:inti=10;特性:即對屬性性質(zhì)的約束,UML定義了3中可以用于屬性的特性,即可變、只增與凍結(jié)。類——操作操作是一個可以由類的對象請求以影響其行為的服務(wù)的實現(xiàn),也即是對一個對象所做的事情的抽象,并且由這個類的所有對象共享。操作是類的行為特征或動態(tài)特征。操作的語法格式為:可見性opt
操作名?(參數(shù)列表)?opt?:返回類型?opt?{特性}?opt操作名:操作的標(biāo)識符。在描述操作時,操作名是必須的,其他部分可選。對操作名添加下劃線修飾表示該屬性為靜態(tài)操作。類——操作可見性:同樣描述該操作在那些范圍內(nèi)可以使用,與屬性的可見性相同。參數(shù)列表:是一些按照順序排列的屬性定義了操作的輸入。例如:oper(outarg1:int,arg2:double=3.2)返回類型即回送調(diào)用對象消息的類型。void關(guān)鍵字表示無返回值。特性是對操作性質(zhì)的約束說明。類——職責(zé)職責(zé)是類的契約或責(zé)任。當(dāng)創(chuàng)建一個類時,就聲明了這個類的所有對象具有相同種類的狀態(tài)和相同種類的行為。在較高的抽象層次上,這些相應(yīng)的屬性和操作正式要完成類的職責(zé)的特征。類的職責(zé)是自由形式的文本,在非正式的類圖中,可以將職責(zé)列在類圖操作下的另一分割欄中。接口接口是一個被命名的操作集合,用于描述類或組件的一個服務(wù)。接口不包含屬性與方法實現(xiàn),但可以有一些操作。接口的所有內(nèi)容都是公有的。接口代表了一份契約,實現(xiàn)該接口的類元必須履行它。在UML中,接口由一個帶名稱的小圓圈表示;也可以表示為帶有<<interface>>構(gòu)造型的類。類圖中的關(guān)系在類圖中,很少有類是獨立為系統(tǒng)發(fā)揮作用的,大部分的類以某些方式彼此協(xié)作進行工作。在進行系統(tǒng)建模時,不僅要抽象出形成系統(tǒng)詞匯的事物,還必須對這些事物之間的關(guān)系進行建模。類圖中涉及到了UML中最常用的四種關(guān)系,即關(guān)聯(lián)關(guān)系、泛化關(guān)系、依賴關(guān)系和實現(xiàn)關(guān)系。類圖中的關(guān)系——關(guān)聯(lián)關(guān)系關(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)中類的對象的參與。最普通也是最常用的關(guān)聯(lián)關(guān)系是二元關(guān)聯(lián),二元關(guān)聯(lián)即有兩個關(guān)聯(lián)端的關(guān)聯(lián)關(guān)系。特別地,一個類與自身的關(guān)聯(lián)稱為自關(guān)聯(lián)。當(dāng)3個或以上的類之間存在關(guān)聯(lián)關(guān)系時,便無法使用二元關(guān)聯(lián)的表示法了,此時稱之為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)任的角色。角色名上也可使用可見性修飾符號。多重性:放在靠近關(guān)聯(lián)端的部分,表示在關(guān)聯(lián)關(guān)系中源端的一個對象可以與目標(biāo)類的多少個對象之間有關(guān)聯(lián)。導(dǎo)航性:一個布爾值,用來說明運行時刻是否可能穿越一個關(guān)聯(lián)。限定符:是二元關(guān)聯(lián)上的屬性組成的列表的插槽,其中的屬性值用來從整個對象集合里選擇一個唯一的關(guān)聯(lián)對象或者關(guān)聯(lián)對象的集合。約束:關(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)系沒有改變整體與部分之間整個關(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):屬于一種派生元素。它不增加語義信息,只是一種可以由兩個或兩個以上的基礎(chǔ)關(guān)聯(lián)推算出來的虛擬關(guān)聯(lián)。派生語義在模型中不添加任何額外的語義,只是為了方便關(guān)聯(lián)的使用。類圖中的關(guān)系——泛化關(guān)系泛化關(guān)系定義為一個較普通的元素與一個較特殊的元素之間的類元關(guān)系。其中描述一般的元素稱為父,描述特殊的元素稱為子。通過泛化對應(yīng)的繼承機制使子類共享父類的屬性和操作,縮小了模型的規(guī)模,同時也防止了模型的更新所導(dǎo)致的定義不一致的意外。泛化關(guān)系的特征:傳遞性:一個類的子類同樣繼承了這個類的特性。在父方向上經(jīng)過了一個或幾個泛化的元素被稱為祖先,在子方向上則被稱為后代。反對稱性:泛化關(guān)系不能成環(huán),即一個類不可能是自己的祖先和自己的后代。類圖中的關(guān)系——泛化關(guān)系泛化關(guān)系的兩種情況單繼承:每個類之多能擁有一個父類。編程語言:C#、Java等多重繼承:子類可以有多個父類并繼承了所有父類的結(jié)構(gòu)、行為和約束。編程語言:C++等類圖中的關(guān)系——依賴關(guān)系依賴關(guān)系表示的是兩個元素之間語義上的連接關(guān)系。對于兩個元素X和Y,如果元素X的變化會引起對另一個元素Y的變化,則稱元素Y依賴于X。其中,X被稱為提供者,Y被稱為客戶。對于類圖而言,主要有以下需要使用依賴的情況:客戶類向提供者類發(fā)送消息。提供者類是客戶類的屬性類型。提供者類是客戶類操作的參數(shù)類型。類圖中的關(guān)系——實現(xiàn)關(guān)系實現(xiàn)關(guān)系用來表示規(guī)格說明與實現(xiàn)之間的關(guān)系。在類圖中,實現(xiàn)關(guān)系主要用于接口與實現(xiàn)該接口的類之間。一個類可以實現(xiàn)多個接口,一個接口也可以被多個類實現(xiàn)。實現(xiàn)關(guān)系的兩種表示法:當(dāng)接口元素以帶構(gòu)造型的類的方式表示時,用虛線三角形箭頭表示。當(dāng)接口元素以小圓圈方式表示時,用實線表示。涉及類的其他概念類的高級概念:抽象類模板類關(guān)聯(lián)類分析類涉及類的其他概念——抽象類抽象類即不可實例化的類,也就是說,抽象類沒有直接的實例。在UML中,抽象類通過對類名添加斜體修飾來表示。涉及類的其他概念——模板類模板又稱為參數(shù)化元素是對一類帶有一個或者多個未綁定的形式參數(shù)的元素的描述。模板應(yīng)用在類上時稱為模板類。對應(yīng)概念:C++中的模板與Java中的泛型模板類可以根據(jù)參數(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中被表示為一個類符號,并通過一條虛線連接到關(guān)聯(lián)路徑。涉及類的其他概念——分析類分析類是一個主要用于開發(fā)過程中的概念,用來獲取系統(tǒng)中主要的“職責(zé)簇”,代表系統(tǒng)的原型類,是帶有某些構(gòu)造型的類元素。邊界類:用于對系統(tǒng)外部環(huán)境與其內(nèi)部運作之間的交互進行建模的類。控制類:對一個或多個用例所特有的控制行為進行建模的類。實體類:用于對必須存儲的信息和相關(guān)行為建模的類。涉及類的其他概念——分析類6.3類圖的實例——對象圖對象圖概述對象圖的組成元素對象鏈對象圖概述對象圖顯示了某一時刻的一組對象及它們之間的關(guān)系。對象圖可以看做是類圖的實例,用來表達(dá)各個對象在某一時刻的狀態(tài)。對象圖中的建模元素主要有對象和鏈,對象是類的實例,鏈?zhǔn)穷愔g的關(guān)聯(lián)關(guān)系的實例。對象圖的組成元素——對象對象是類的實例,是一個封裝了狀態(tài)和行為的具有良好邊界和標(biāo)識符的離散實體。對象通過其類型、名稱和狀態(tài)區(qū)別于其他對象而存在。對象名:在矩形框的頂端顯示。類型:具體的類目狀態(tài):由對象的所有屬性以及運行時的當(dāng)前值組成。表示法:在對象名后跟一個冒號加上類型名,并且使用下劃線與類進行區(qū)分。stu:Student
標(biāo)準(zhǔn)表示法:Student
匿名表示法stu
省略類名的表示法對象圖的組成元素——鏈鏈?zhǔn)顷P(guān)聯(lián)關(guān)系的實例,是兩個或多個對象之間的獨立連接。因此,鏈在對象圖中的作用就十分類似于關(guān)聯(lián)關(guān)系在類圖中的作用。在UML中,鏈同樣使用一根實線段來表示,如圖6-27所示。鏈主要用來導(dǎo)航。鏈一端的一個對象可以得到另一位置上的一個或一組對象,然后向其發(fā)送消息。鏈的每一端也可以顯示一個角色名稱,但不能顯示多重性。6.4類圖與對象圖的建模技術(shù)類圖的建模技術(shù)正向工程與逆向工程對象圖的建模技術(shù)面向?qū)ο笤O(shè)計的原則類圖的建模技術(shù)對系統(tǒng)的詞匯建模識別用戶或系統(tǒng)開發(fā)人員用于描述問題或解決問題的那些實體。可以使用基于用例分析的技術(shù)幫助用戶發(fā)現(xiàn)這些抽象。對于每個抽象,識別一個職責(zé)集。要明確地定義每個類,而且這些指責(zé)要在所有的類之間很好的均衡。提供為實現(xiàn)每個類的職責(zé)所需的屬性和操作。類圖的建模技術(shù)對簡單協(xié)作建模識別要建模的機制。機制描述了正在建模的部分系統(tǒng)的一些功能和行為,這些功能起因于類、接口以及其他一些事物所組成的群體的相互作用。識別元素及其關(guān)系。對于每一種機制,分別識別參與協(xié)作的類、接口和其他協(xié)作,并識別這些事物之間的關(guān)系。用腳本排演這些事物。通過這種方法,可發(fā)現(xiàn)模型的哪些部分被遺漏以及哪些部分有明顯語義錯誤。把元素和其包含的內(nèi)容聚集在一起。對于類而言,要做好職責(zé)的平均分配,然后逐漸把它們轉(zhuǎn)換成具體的屬性和操作。類圖的建模技術(shù)對邏輯數(shù)據(jù)庫模式建模識別模型中那些狀態(tài)必須超過應(yīng)用程序生存時間的類作為需要作為永久數(shù)據(jù)存儲的類。創(chuàng)建一個包含這些類的類圖??梢宰约憾x相關(guān)的構(gòu)造型和標(biāo)記值組合。對類的結(jié)構(gòu)細(xì)節(jié)進行細(xì)化。包括屬性的細(xì)節(jié)、類之間的關(guān)聯(lián)及其多重性。注意那些增加數(shù)據(jù)庫設(shè)計復(fù)雜化的公共模式并盡量簡化,如循環(huán)關(guān)聯(lián)、一對一的關(guān)聯(lián)和N元關(guān)聯(lián)等??紤]類的行為。這些行為主要包括對數(shù)據(jù)存取和數(shù)據(jù)完整性約束重要的操作。一般情況下,這些業(yè)務(wù)規(guī)則應(yīng)該被封裝在這些永久類的上一層中。正向工程與逆向工程正向工程:是通過到實現(xiàn)語言的映射而把模型轉(zhuǎn)換為代碼的過程。使用正向工程將模型轉(zhuǎn)換為代碼將導(dǎo)致一些信息丟失。正向工程的策略:確定映射到實現(xiàn)語言的規(guī)則。根據(jù)所選擇的語言,限制某些UML的特性。例如,當(dāng)所選擇的語言是Java時,要禁止多重繼承的使用。使用標(biāo)記值來幫助實現(xiàn)目標(biāo)語言的細(xì)節(jié)。使用工具生成代碼。正向工程與逆向工程逆向工程:通過從特定語言的映射而把代碼轉(zhuǎn)換為模型的過程。一方面,逆向工程會產(chǎn)生大量的冗余信息;另一方面,逆向工程是不完整的。逆向工程的策略:確定實現(xiàn)語言進行映射的規(guī)則。指定要進行逆向工程的代碼。期望從一大塊代碼中逆向生成一個簡明的模型是不切實際的。應(yīng)該選擇部分代碼,從底部建造模型。使用工具,通過查詢模型來創(chuàng)建類圖。人工為模型增加在逆向工程中丟失或隱藏的相關(guān)信息。對象圖的建模技術(shù)為對象結(jié)構(gòu)建模識別建模機制。建模機制被描述為系統(tǒng)的某些功能或行為,經(jīng)常會被耦合為用例,由一組類、接口和其他事物的交互產(chǎn)生。可以創(chuàng)建協(xié)作來描述機制。識別參與的類和接口等元素,以及這些元素之間的關(guān)系。識別并選擇對象??紤]這個機制的腳本在某時刻被凍結(jié)時的情況,識別并選擇出各個對象。按需要顯示每個對象的狀態(tài)。識別并顯示出對象之間的鏈,即對象的類目之間關(guān)聯(lián)的實例。面向?qū)ο笤O(shè)計的原則——開閉原則內(nèi)容:軟件實體應(yīng)當(dāng)對擴展開放,對修改關(guān)閉。通俗來講,開閉原則就是軟件系統(tǒng)中的各組件,應(yīng)該能夠在不修改現(xiàn)有內(nèi)容的基礎(chǔ)上,引入新功能。為了達(dá)到開閉原則,對于類圖的設(shè)計應(yīng)該盡可能地使用接口或泛化進行封裝,并且通過使用多態(tài)機制進行調(diào)用。接口和泛化的使用可以使操作的定義與實現(xiàn)分離,使得新添加的模塊依賴于原有模塊的接口。多態(tài)的使用使得在使用時可以通過創(chuàng)建父類的間接實例通過多態(tài)的支持進行操作,從而避免對其他類的修改。面向?qū)ο笤O(shè)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于感恩母校的演講稿集合9篇
- 關(guān)于學(xué)生會計實習(xí)報告模板十篇
- 有關(guān)離婚協(xié)議書范本下載(33篇)
- 淘寶客服主管轉(zhuǎn)正述職報告
- 甲方拆遷補償安置資金委托監(jiān)管協(xié)議(3篇)
- 《區(qū)域經(jīng)濟》課件
- 四年級數(shù)學(xué)(四則混合運算)計算題專項練習(xí)與答案匯編
- 五年級數(shù)學(xué)(小數(shù)四則混合運算)計算題專項練習(xí)及答案
- 2024年技術(shù)轉(zhuǎn)讓合同的標(biāo)的及技術(shù)轉(zhuǎn)讓內(nèi)容
- 頸椎病的分型以及臨床表現(xiàn)
- 髂動脈潰瘍的健康宣教
- 第一章 結(jié)構(gòu)及其設(shè)計 課件-2023-2024學(xué)年高中通用技術(shù)蘇教版(2019)必修《技術(shù)與設(shè)計2》
- KPI考核表-品質(zhì)部
- Access數(shù)據(jù)庫課程標(biāo)準(zhǔn)
- 幼兒園中班語言:《兩只蚊子吹牛皮》 課件
- 臨時用電漏電保護器運行檢測記錄表
- 頭痛的國際分類(第三版)中文
- 音樂ppt課件《小小的船》
- 幼兒園教學(xué)課件語言教育《雪地里的小畫家》
- 結(jié)構(gòu)化面試經(jīng)典100題及答案
- ESG引領(lǐng)下的西部城市再出發(fā)-新型城市競爭力策略研究白皮書
評論
0/150
提交評論