UML面向對象分析、建模與設計課件第五章-類圖_第1頁
UML面向對象分析、建模與設計課件第五章-類圖_第2頁
UML面向對象分析、建模與設計課件第五章-類圖_第3頁
UML面向對象分析、建模與設計課件第五章-類圖_第4頁
UML面向對象分析、建模與設計課件第五章-類圖_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

類圖

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

屬性名?:類型?opt

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

操作名?(參數列表)?opt?:返回類型?opt?{特性}?opt操作名:操作的標識符。在描述操作時,操作名是必須的,其他部分可選。對操作名添加下劃線修飾表示該屬性為靜態(tài)操作。類——操作可見性:同樣描述該操作在那些范圍內可以使用,與屬性的可見性相同。參數列表:是一些按照順序排列的屬性定義了操作的輸入。例如:oper(outarg1:int,arg2:double=3.2)返回類型即回送調用對象消息的類型。void關鍵字表示無返回值。特性是對操作性質的約束說明。類——職責職責是類的契約或責任。當創(chuàng)建一個類時,就聲明了這個類的所有對象具有相同種類的狀態(tài)和相同種類的行為。在較高的抽象層次上,這些相應的屬性和操作正式要完成類的職責的特征。類的職責是自由形式的文本,在非正式的類圖中,可以將職責列在類圖操作下的另一分割欄中。接口接口是一個被命名的操作集合,用于描述類或組件的一個服務。接口不包含屬性與方法實現,但可以有一些操作。接口的所有內容都是公有的。接口代表了一份契約,實現該接口的類元必須履行它。在UML中,接口由一個帶名稱的小圓圈表示;也可以表示為帶有<<interface>>構造型的類。類圖中的關系在類圖中,很少有類是獨立為系統(tǒng)發(fā)揮作用的,大部分的類以某些方式彼此協作進行工作。在進行系統(tǒng)建模時,不僅要抽象出形成系統(tǒng)詞匯的事物,還必須對這些事物之間的關系進行建模。類圖中涉及到了UML中最常用的四種關系,即關聯關系、泛化關系、依賴關系和實現關系。類圖中的關系——關聯關系關聯的實例被稱為鏈,每個鏈由一組有序或無序的對象組成。關聯關系靠近被關聯元素的部分稱為關聯端,關聯的大部分描述都包含在一組關聯端的列表里,每個端用來描述關聯中類的對象的參與。最普通也是最常用的關聯關系是二元關聯,二元關聯即有兩個關聯端的關聯關系。特別地,一個類與自身的關聯稱為自關聯。當3個或以上的類之間存在關聯關系時,便無法使用二元關聯的表示法了,此時稱之為N元關聯。類圖中的關系——關聯關系二元關聯自關聯三元關聯類圖中的關系——關聯關系關聯名稱:放在關聯路徑的旁邊,但遠離關聯端。角色:放在靠近關聯端的部分,表示該關聯端連接的類在這一關聯關系中擔任的角色。角色名上也可使用可見性修飾符號。多重性:放在靠近關聯端的部分,表示在關聯關系中源端的一個對象可以與目標類的多少個對象之間有關聯。導航性:一個布爾值,用來說明運行時刻是否可能穿越一個關聯。限定符:是二元關聯上的屬性組成的列表的插槽,其中的屬性值用來從整個對象集合里選擇一個唯一的關聯對象或者關聯對象的集合。約束:關聯間的約束關系。類圖中的關系——關聯關系角色多重性導航性限定符約束類圖中的關系——關聯關系兩種特殊的關聯關系:聚合關系與組合關系聚合關系描述“整體-部分”的關聯關系聚合關系沒有改變整體與部分之間整個關聯的導航含義,也與整體和部分的生命周期無關。組合關系描述“整體-部分”的關聯關系組合關系中的部分要完全依賴于整體。類圖中的關系——關聯關系派生關聯:屬于一種派生元素。它不增加語義信息,只是一種可以由兩個或兩個以上的基礎關聯推算出來的虛擬關聯。派生語義在模型中不添加任何額外的語義,只是為了方便關聯的使用。類圖中的關系——泛化關系泛化關系定義為一個較普通的元素與一個較特殊的元素之間的類元關系。其中描述一般的元素稱為父,描述特殊的元素稱為子。通過泛化對應的繼承機制使子類共享父類的屬性和操作,小了模型的規(guī)模,同時也防止了模型的更新所導致的定義不一致的意外。泛化關系的特征:傳遞性:一個類子類的子類同樣繼承了這個類的特性。在父方向上經過了一個或幾個泛化的元素被稱為祖先,在子方向上則被稱為后代。反對稱性:泛化關系不能成環(huán),即一個類不可能是自己的祖先和自己的后代。類圖中的關系——泛化關系泛化關系的兩種情況單繼承:每個類之多能擁有一個父類。編程語言:C#、Java等多重繼承:子類可以有多個父類并繼承了所有父類的結構、行為和約束。編程語言:C++等類圖中的關系——依賴關系依賴關系表示的是兩個元素之間語義上的連接關系。對于兩個元素X和Y,如果元素X的變化會引起對另一個元素Y的變化,則稱元素Y依賴于X。其中,X被稱為提供者,Y被稱為客戶。對于類圖而言,主要有以下需要使用依賴的情況:客戶類向提供者類發(fā)送消息。提供者類是客戶類的屬性類型。提供者類是客戶類操作的參數類型。類圖中的關系——實現關系實現關系用來表示規(guī)格說明與實現之間的關系。在類圖中,實現關系主要用于接口與實現該接口的類之間。一個類可以實現多個接口,一個接口也可以被多個類實現。實現關系的兩種表示法:當接口元素以帶構造型的類的方式表示時,用虛線三角形箭頭表示。當接口元素以小圓圈方式表示時,用實線表示。涉及類的其他概念類的高級概念:抽象類模板類關聯類分析類涉及類的其他概念——抽象類抽象類即不可實例化的類,也就是說,抽象類沒有直接的實例。在UML中,抽象類通過對類名添加斜體修飾來表示。涉及類的其他概念——模板類模板又稱為參數化元素是對一類帶有一個或者多個未綁定的形式參數的元素的描述。模板應用在類上時稱為模板類。對應概念:C++中的模板與Java中的泛型模板類可以根據參數來定義類,而不用說明屬性和操作參數及返回值的具體類型,使用時通過實際值代替參數即可創(chuàng)建新的類,這樣就可以避免建立大量功能相似的類。涉及類的其他概念——關聯類具有類的特性的關聯關系,稱為關聯類。關聯類具有關聯和類二者的特性,它既可以關聯類元素,也可以擁有屬性和操作。關聯類在UML中被表示為一個類符號,并通過一條虛線連接到關聯路徑。涉及類的其他概念——分析類分析類是一個主要用于開發(fā)過程中的概念,用來獲取系統(tǒng)中主要的“職責簇”,代表系統(tǒng)的原型類,是帶有某些構造型的類元素。邊界類:用于對系統(tǒng)外部環(huán)境與其內部運作之間的交互進行建模的類??刂祁悾簩σ粋€或多個用例所特有的控制行為進行建模的類。實體類:用于對必須存儲的信息和相關行為建模的類。涉及類的其他概念——分析類類圖的建模技術類圖的建模技術正向工程與逆向工程對象圖的建模技術面向對象設計的原則類圖的建模技術對系統(tǒng)的詞匯建模識別用戶或系統(tǒng)開發(fā)人員用于描述問題或解決問題的那些實體??梢允褂没谟美治龅募夹g幫助用戶發(fā)現這些抽象。對于每個抽象,識別一個職責集。要明確地定義每個類,而且這些指責要在所有的類之間很好的均衡。提供為實現每個類的職責所需的屬性和操作。類圖的建模技術對簡單協作建模識別要建模的機制。機制描述了正在建模的部分系統(tǒng)的一些功能和行為,這些功能起因于類、接口以及其他一些事物所組成的群體的相互作用。識別元素及其關系。對于每一種機制,分別識別參與協作的類、接口和其他協作,并識別這些事物之間的關系。用腳本排演這些事物。通過這種方法,可發(fā)現模型的哪些部分被遺漏以及哪些部分有明顯語義錯誤。把元素和其包含的內容聚集在一起。對于類而言,要做好職責的平均分配,然后逐漸把它們轉換成具體的屬性和操作。類圖的建模技術對邏輯數據庫模式建模識別模型中那些狀態(tài)必須超過應用程序生存時間的類作為需要作為永久數據存儲的類。創(chuàng)建一個包含這些類的類圖??梢宰约憾x相關的構造型和標記值組合。對類的結構細節(jié)進行細化。包括屬性的細節(jié)、類之間的關聯及其多重性。注意那些增加數據庫設計復雜化的公共模式并盡量簡化,如循環(huán)關聯、一對一的關聯和N元關聯等??紤]類的行為。這些行為主要包括對數據存取和數據完整性約束重要的操作。一般情況下,這些業(yè)務規(guī)則應該被封裝在這些永久類的上一層中。正向工程與逆向工程正向工程:是通過到實現語言的映射而把模型轉換為代碼的過程。使用正向工程將模型轉換為代碼將導致一些信息丟失。正向工程的策略:確定映射到實現語言的規(guī)則。根據所選擇的語言,限制某些UML的特性。例如,當所選擇的語言是Java時,要禁止多重繼承的使用。使用標記值來幫助實現目標語言的細節(jié)。使用工具生成代碼。正向工程與逆向工程逆向工程:通過從特定語言的映射而把代碼轉換為模型的過程。一方面,逆向工程會產生大量的冗余信息;另一方面,逆向工程是不完整的。逆向工程的策略:確定實現語言進行映射的規(guī)則。指定要進行逆向工程的代碼。期望從一大塊代碼中逆向生成一個簡明的模型是不切實際的。應該選擇部分代碼,從底部建造模型。使用工具,通過查詢模型來創(chuàng)建類圖。人工為模型增加在逆向工程中丟失或隱藏的相關信息。面向對象設計的原則——開閉原則內容:軟件實體應當對擴展開放,對修改關閉。通俗來講,開閉原則就是軟件系統(tǒng)中的各組件,應該能夠在不修改現有內容的基礎上,引入新功能。為了達到開閉原則,對于類圖的設計應該盡可能地使用接口或泛化進行封裝,并且通過使用多態(tài)機制進行調用。接口和泛化的使用可以使操作的定義與實現分離,使得新添加的模塊依賴于原有模塊的接口。多態(tài)的使用使得在使用時可以通過創(chuàng)建父類的間接實例通過多態(tài)的支持進行操作,從而避免對其他類的修改。面向對象設計的原則——里氏替換原則內容:子類對于父類應該是完全可替換的。具體來說,如果S是T的子類,則T類的對象可以被S類的對象所替代而不會改變該程序的任何理想特性。我們都知道,子類的實例是父類的間接實例。根據多態(tài)原則,當父類創(chuàng)建一個間接實例時并調用操作時,將根據實際類型調用子類的操作實現。面向對象設計的原則——依賴倒置原則內容:高層次模塊不應該依賴于低層次模塊,二者都應該依賴于抽象;抽象不應該依賴于具體,具體應該依賴于抽象。根據依賴倒置原則,從高層次到低層次之間設計類結構的方式應該是:高層次類

抽象層

低層次類。在設計時,可以使用接口作為抽象層。面向對象設計的原則——接

溫馨提示

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

最新文檔

評論

0/150

提交評論