第6章類圖和對象圖郭_第1頁
第6章類圖和對象圖郭_第2頁
第6章類圖和對象圖郭_第3頁
第6章類圖和對象圖郭_第4頁
第6章類圖和對象圖郭_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第6章章 類圖和對象圖類圖和對象圖l6.1 類圖的概念類圖的概念l6.2 類圖建模技術(shù)類圖建模技術(shù)l6.3 對象圖對象圖l6.4 補充:分析類補充:分析類類圖類圖l類圖類圖描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu),描述系統(tǒng)中的描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu),描述系統(tǒng)中的類類及及類之間的關(guān)系類之間的關(guān)系,還描述類的,還描述類的內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu)(類(類的屬性和操作)。的屬性和操作)。l類圖類圖描述的是一種描述的是一種靜態(tài)關(guān)系靜態(tài)關(guān)系,在系統(tǒng)的整個生,在系統(tǒng)的整個生命期中都是有效的。命期中都是有效的。l對象圖對象圖是類圖的實例,由于對象存在生命周期,是類圖的實例,由于對象存在生命周期,所以對象圖只能在系統(tǒng)的某一時間存在。所

2、以對象圖只能在系統(tǒng)的某一時間存在。類圖的地位類圖的地位l類圖類圖是面象對象系統(tǒng)建模中最常用的圖。是面象對象系統(tǒng)建模中最常用的圖。l類圖類圖是定義其它圖的基礎(chǔ),在類圖的基礎(chǔ)上,是定義其它圖的基礎(chǔ),在類圖的基礎(chǔ)上,可以使用狀態(tài)圖、協(xié)作圖、組件圖和配置圖等可以使用狀態(tài)圖、協(xié)作圖、組件圖和配置圖等進一步描述系統(tǒng)其它方面的特征。進一步描述系統(tǒng)其它方面的特征。l類圖中的類類圖中的類可以直接用某種面向?qū)ο缶幊陶Z言可以直接用某種面向?qū)ο缶幊陶Z言實現(xiàn)。實現(xiàn)。6.1 類圖的概念類圖的概念l描述類、接口及它們之間關(guān)系的圖。描述類、接口及它們之間關(guān)系的圖。l顯示系統(tǒng)中各個類的靜態(tài)結(jié)構(gòu)。顯示系統(tǒng)中各個類的靜態(tài)結(jié)構(gòu)。 6

3、.1.1 概述概述l類圖的元素:類圖的元素:類(類(class)接口(接口(interface)依賴關(guān)系(依賴關(guān)系(dependency)泛化關(guān)系(泛化關(guān)系(generalization)關(guān)聯(lián)關(guān)系(關(guān)聯(lián)關(guān)系(association)實現(xiàn)關(guān)系(實現(xiàn)關(guān)系(realization) 6.1.2 類類 l類類是構(gòu)成類圖的基礎(chǔ),也是面向?qū)ο笙到y(tǒng)組織結(jié)是構(gòu)成類圖的基礎(chǔ),也是面向?qū)ο笙到y(tǒng)組織結(jié)構(gòu)的核心。構(gòu)的核心。 l類類是對一組具有相同屬性、操作、關(guān)系和語義的對是對一組具有相同屬性、操作、關(guān)系和語義的對象的抽象。象的抽象。l類類包括包括名稱部分(名稱部分(name)、屬性部分(屬性部分(attribute)

4、和和操作部分(操作部分(operation)。 luml規(guī)范采用一個具有規(guī)范采用一個具有3個分欄的圖標表示一個類。個分欄的圖標表示一個類。名稱分欄必須出現(xiàn),而屬性分欄和操作分欄可名稱分欄必須出現(xiàn),而屬性分欄和操作分欄可以出現(xiàn)或不出現(xiàn)。以出現(xiàn)或不出現(xiàn)。當隱藏某個分欄時,并非表明某個分欄不存在。當隱藏某個分欄時,并非表明某個分欄不存在。隱藏操作參數(shù)隱藏操作參數(shù)隱隱藏藏可可見見性性6.1.2 類類l1 名稱名稱l2 屬性屬性l3 操作操作l4 職責職責l5 約束約束l6 注釋注釋(1)名稱)名稱 l應該來自系統(tǒng)的問題域。應該來自系統(tǒng)的問題域。 l應該是一個名詞。應該是一個名詞。 l分為簡單名稱和路徑

5、名稱。分為簡單名稱和路徑名稱。 (2)屬性)屬性l描述了類在軟件系統(tǒng)中代表的事物(即對象)所具備描述了類在軟件系統(tǒng)中代表的事物(即對象)所具備的特性。的特性。 l類可以有任意數(shù)目的屬性,也可以沒有屬性。類可以有任意數(shù)目的屬性,也可以沒有屬性。 l在在uml中,類屬性的語法為:中,類屬性的語法為:1. 可見性可見性l可見性描述了該屬性對其它類是否可見,以可見性描述了該屬性對其它類是否可見,以及是否可以被其它類引用。及是否可以被其它類引用。l類型:類型:公有(公有(public) “”私有(私有(private)“”受保護(受保護(protected)“” 注意:注意:uml未規(guī)定默認未規(guī)定默認的

6、可見性,如果沒的可見性,如果沒有給出,表明該屬有給出,表明該屬性的可見性尚未定性的可見性尚未定義。義。2. 屬性名屬性名 l每個屬性都必須有一個名字以區(qū)別于類中的其他每個屬性都必須有一個名字以區(qū)別于類中的其他屬性。屬性。 l屬性名由描述所屬類的特性的名詞或名詞短語組屬性名由描述所屬類的特性的名詞或名詞短語組成。成。 l單字屬性名小寫,如果屬性名包含了多個單詞,單字屬性名小寫,如果屬性名包含了多個單詞,這些單詞要合并,且除了第一個單詞外其余單詞這些單詞要合并,且除了第一個單詞外其余單詞的首字母要大寫。的首字母要大寫。 -建議建議3. 類型類型 l簡單類型:簡單類型:整型整型布爾型布爾型實型實型枚

7、舉類型枚舉類型l系統(tǒng)中的其他類系統(tǒng)中的其他類 4. 初始值初始值 l目的目的:保護系統(tǒng)的完整性,防止漏掉取值或被非法保護系統(tǒng)的完整性,防止漏掉取值或被非法的值破壞系統(tǒng)的完整性。的值破壞系統(tǒng)的完整性。為用戶提供易用性。為用戶提供易用性。 5. 屬性字符串屬性字符串 l屬性字符串是用戶對該屬性性質(zhì)的一個約束說明。屬性字符串是用戶對該屬性性質(zhì)的一個約束說明。l例如例如 只讀只讀這樣的特性說明該屬性的值不能被修改。這樣的特性說明該屬性的值不能被修改。l任何希望添加在屬性定義字符串值但又沒有合適地任何希望添加在屬性定義字符串值但又沒有合適地方可以加入的規(guī)則,都可以放在屬性字符串里。方可以加入的規(guī)則,都可

8、以放在屬性字符串里。 +status:status=unpaidunpaid,paid +color:color=redred,green,yellow確定取值范圍確定取值范圍補充:補充:作用域作用域l作用域(作用域(scope)是與屬性和操作相關(guān)的一是與屬性和操作相關(guān)的一個重要概念。個重要概念。l存在兩種作用域:存在兩種作用域:1.實例(實例(instance)作用域)作用域下,類的每個實例下,類的每個實例對象都有自己的屬性值和操作。對象都有自己的屬性值和操作。2.分類符(分類符(classifier)作用域)作用域下,一個類的所下,一個類的所有實例只存在一個屬性值和操作。分類作用有實例只存

9、在一個屬性值和操作。分類作用域的屬性和操作名字要帶下劃線。域的屬性和操作名字要帶下劃線。類的作用域?qū)傩裕侯惖淖饔糜驅(qū)傩裕簂分類作用域的屬性,它能被所屬類的所分類作用域的屬性,它能被所屬類的所有對象共享。有對象共享。例如:例如:c+中中的靜態(tài)的靜態(tài)成員成員靜態(tài)屬性靜態(tài)屬性屬性聲明的例子屬性聲明的例子points屬性的多重性屬性的多重性為為2.*,表示該屬性,表示該屬性值有值有2個或者多個,個或者多個,同時這些值之間是有同時這些值之間是有序的。序的。name屬性的多重性為屬性的多重性為0.2,表示,表示該屬性值有可能是該屬性值有可能是1個或者個或者2個,也個,也可能值為可能值為null。(3)操作

10、)操作l對類的對象所能做的事務(wù)的抽象。對類的對象所能做的事務(wù)的抽象。l一個類可以有任意數(shù)量的操作或者根本沒有操一個類可以有任意數(shù)量的操作或者根本沒有操作。作。 l返回類型、名稱和參數(shù)一起被稱為操作簽名。返回類型、名稱和參數(shù)一起被稱為操作簽名。 l在在uml中,類操作的語法為:中,類操作的語法為:操作操作l1. 可見性可見性l2. 操作名操作名l3. 參數(shù)表參數(shù)表l4. 返回類型返回類型l5. 特性字符串特性字符串1. 可見性可見性l類型:類型:公有(公有(public) “”私有(私有(private) “”受保護(受保護(protected) “”包內(nèi)公有(包內(nèi)公有(package) “”包

11、內(nèi)公有(包內(nèi)公有(package)“”包內(nèi)公有用來描述操作的可訪問性的包內(nèi)公有用來描述操作的可訪問性的可見性為包內(nèi)公有的操作可以被其所在包的對象訪問??梢娦詾榘鼉?nèi)公有的操作可以被其所在包的對象訪問。2. 操作名操作名 l用來描述所屬類的行為的動詞或動詞短語。用來描述所屬類的行為的動詞或動詞短語。l單字操作名小寫,如果操作名包含了多個單詞,單字操作名小寫,如果操作名包含了多個單詞,這些單詞要合并,并且除了第一個單詞外其余這些單詞要合并,并且除了第一個單詞外其余單詞的首字母要大寫。單詞的首字母要大寫。 3. 參數(shù)表參數(shù)表 l一些按順序排列的屬性定義了操作的輸入。一些按順序排列的屬性定義了操作的輸入

12、。 l是可選的,即操作不一定必須有參數(shù)才行。是可選的,即操作不一定必須有參數(shù)才行。 l定義方式:定義方式:“名稱:類型名稱:類型”。l若存在多個參數(shù),將各個參數(shù)用逗號隔開。若存在多個參數(shù),將各個參數(shù)用逗號隔開。l參數(shù)可以具有默認值。參數(shù)可以具有默認值。 4. 返回類型返回類型l是可選的,即操作不一定必須有返回類型。是可選的,即操作不一定必須有返回類型。 l絕大部分編程語言只支持一個返回值。絕大部分編程語言只支持一個返回值。 l具體的編程語言一般要加一個關(guān)鍵字具體的編程語言一般要加一個關(guān)鍵字void來表來表示無返回值。示無返回值。 5. 特性字符串特性字符串 l在操作的定義中加入一些除了預定義元

13、素之外在操作的定義中加入一些除了預定義元素之外的信息的信息。 l例如:例如: query這樣的特性說明該操作不會修改系統(tǒng)的這樣的特性說明該操作不會修改系統(tǒng)的狀態(tài)。狀態(tài)。 update這樣的特性說明該操作會修改系統(tǒng)的這樣的特性說明該操作會修改系統(tǒng)的狀態(tài)。狀態(tài)。(4)職責)職責 (responsibility)l類圖標中還可以制定另一類圖標中還可以制定另一種類的信息。在操作列表種類的信息。在操作列表框下面的區(qū)域,可以用來框下面的區(qū)域,可以用來說明類的職責。說明類的職責。l職責描述了職責描述了 類做什么類做什么類的屬性和操作能完成什類的屬性和操作能完成什么任務(wù)。么任務(wù)。l例如,一個洗衣機的職責例如,

14、一個洗衣機的職責是將臟衣服作為輸入,輸是將臟衣服作為輸入,輸出洗干凈的衣服。出洗干凈的衣服。職責職責(5)約束)約束l指定了類所要滿足的一個或多個規(guī)則。指定了類所要滿足的一個或多個規(guī)則。 l形式化的方法。形式化的方法。 (6)注釋)注釋l注釋可以包含圖形也可以包含文本。注釋可以包含圖形也可以包含文本。 6.1.3 接口和抽象類接口和抽象類-抽象類抽象類l 抽象操作:抽象操作:是指在指定該操作的類中并沒有該操作是指在指定該操作的類中并沒有該操作的實現(xiàn)方法,而只是顯示了操作簽名的那種操作的實現(xiàn)方法,而只是顯示了操作簽名的那種操作。(例如,(例如, c+中的純虛函數(shù))中的純虛函數(shù))l抽象類抽象類:至

15、少擁有一個抽象操作的類:至少擁有一個抽象操作的類。l在在uml圖中,抽象操作的顯示是在操作簽名后面用特圖中,抽象操作的顯示是在操作簽名后面用特性字符串性字符串a(chǎn)bstract,或者將操作簽名用斜體字體方,或者將操作簽名用斜體字體方式顯示。式顯示。l在在uml圖中,抽象類的顯示是在類名后面用特性字符圖中,抽象類的顯示是在類名后面用特性字符串串a(chǎn)bstract,或者將類名用斜體字體方式顯示。,或者將類名用斜體字體方式顯示。1.如果一個類繼如果一個類繼承了抽象類,承了抽象類,該類要么必須該類要么必須實現(xiàn)所有的抽實現(xiàn)所有的抽象操作稱為具象操作稱為具體類,要么該體類,要么該類也稱為另一類也稱為另一個抽象

16、類。個抽象類。2.抽象類是不能抽象類是不能產(chǎn)生實例的。產(chǎn)生實例的。抽象類名抽象類名用斜體用斜體l接口是一組沒有相應方法實現(xiàn)的描述。接口是一組沒有相應方法實現(xiàn)的描述。l接口通常被描述抽象操作,即之用操作名、參數(shù)接口通常被描述抽象操作,即之用操作名、參數(shù)表和返回類型說明接口行為,而操作的實現(xiàn)部分表和返回類型說明接口行為,而操作的實現(xiàn)部分將出現(xiàn)在實現(xiàn)該接口的元素中。將出現(xiàn)在實現(xiàn)該接口的元素中。l使用接口可以很好地將類所需要的行為與該行為使用接口可以很好地將類所需要的行為與該行為如何被實現(xiàn)完全分開。如何被實現(xiàn)完全分開。l在進行系統(tǒng)建模時,接口起來十分重要的作用,在進行系統(tǒng)建模時,接口起來十分重要的作用

17、,因為模型元素之間的協(xié)作是通過接口進行的。因為模型元素之間的協(xié)作是通過接口進行的。 6.1.3 接口和抽象類接口和抽象類-接口接口 (interface) 6.1.3 接口和抽象類接口和抽象類-接口接口 (interface)luml中接口通常只包含操作不包含屬性。中接口通常只包含操作不包含屬性。l接口不能實例化為對象。接口不能實例化為對象。l一個類可以實現(xiàn)一個或多個接口。一個類可以實現(xiàn)一個或多個接口。l如果類實現(xiàn)了接口,但未實現(xiàn)該接口中的所有操如果類實現(xiàn)了接口,但未實現(xiàn)該接口中的所有操作,那么此類必須聲明為抽象的。作,那么此類必須聲明為抽象的。與與java中接口中接口的概念稍有不的概念稍有不

18、同。同。接口與抽象類的區(qū)別接口與抽象類的區(qū)別l一般接口不含有屬性,抽象類可以含有屬性。一般接口不含有屬性,抽象類可以含有屬性。l接口中聲明的方法都沒有實現(xiàn)部分,而抽象類中接口中聲明的方法都沒有實現(xiàn)部分,而抽象類中的某些方法可以有具體實現(xiàn)。的某些方法可以有具體實現(xiàn)。l使用接口比使用抽象類安全,可以避免許多因為使用接口比使用抽象類安全,可以避免許多因為多繼承產(chǎn)生的問題。多繼承產(chǎn)生的問題。6.1.4 類之間的關(guān)系類之間的關(guān)系 1.關(guān)聯(lián)(關(guān)聯(lián)(association)2.聚合(聚合(aggregation)和組合()和組合(composition)3.泛化泛化 (generalization)4.實現(xiàn)

19、(實現(xiàn)(realization)5.依賴依賴 (dependenc)1.關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系當類之間在概念上有連接關(guān)系時,這種關(guān)系叫做當類之間在概念上有連接關(guān)系時,這種關(guān)系叫做關(guān)聯(lián)關(guān)聯(lián)(association)。l名稱(名稱(name)l角色(角色(role)l多重性(多重性(multiplicity)l限定關(guān)聯(lián)限定關(guān)聯(lián)l自反關(guān)聯(lián)自反關(guān)聯(lián)l關(guān)聯(lián)上的約束關(guān)聯(lián)上的約束l派生關(guān)聯(lián)派生關(guān)聯(lián)l關(guān)聯(lián)類關(guān)聯(lián)類l導航性(導航性(navigation)l聚合關(guān)系(聚合關(guān)系(aggregation)l組合關(guān)系(組合關(guān)系(composition(1) 名稱名稱l關(guān)聯(lián)名來描述關(guān)聯(lián)的作用,清晰而簡潔地說明對關(guān)聯(lián)名來描述關(guān)聯(lián)

20、的作用,清晰而簡潔地說明對象間關(guān)系。使用一個動詞或動詞短語來命名關(guān)聯(lián)。象間關(guān)系。使用一個動詞或動詞短語來命名關(guān)聯(lián)。l關(guān)聯(lián)的名稱并不是必需的。關(guān)聯(lián)的名稱并不是必需的。 l可以前綴或后綴一個指引閱讀方向的可以前綴或后綴一個指引閱讀方向的方向指示符方向指示符,以消除歧義。以消除歧義。 一個關(guān)聯(lián)一個關(guān)聯(lián)隊員和球隊之間的關(guān)聯(lián)。可以用一個隊員和球隊之間的關(guān)聯(lián)。可以用一個短語短語“隊員為籃球隊效力隊員為籃球隊效力(plays on)”來刻劃這個來刻劃這個關(guān)聯(lián)。關(guān)聯(lián)。關(guān)聯(lián)的導航型關(guān)聯(lián)的導航型l單向關(guān)聯(lián)單向關(guān)聯(lián):關(guān)聯(lián)是單向的,從一個類的對象:關(guān)聯(lián)是單向的,從一個類的對象可以找到另一個,反過來卻不可??梢哉业搅硪?/p>

21、個,反過來卻不可。l雙向關(guān)聯(lián)雙向關(guān)聯(lián):關(guān)聯(lián)是雙向的,如果一個對象和:關(guān)聯(lián)是雙向的,如果一個對象和另一個對象關(guān)聯(lián),那么這兩個對象都互相知道另一個對象關(guān)聯(lián),那么這兩個對象都互相知道對方。對方。(2) 角色角色 當一個類和另一個類發(fā)生關(guān)聯(lián)時,每個類通常當一個類和另一個類發(fā)生關(guān)聯(lián)時,每個類通常在關(guān)聯(lián)中部扮演著某種角色。一個類對另一個在關(guān)聯(lián)中部扮演著某種角色。一個類對另一個類所表現(xiàn)出來的職責。類所表現(xiàn)出來的職責。l在隊員和球隊的關(guān)聯(lián)中,如果球隊是職業(yè)籃球在隊員和球隊的關(guān)聯(lián)中,如果球隊是職業(yè)籃球隊,那么它就是隊員的雇主隊,那么它就是隊員的雇主(employer),隊員,隊員就是球隊的雇員就是球隊的雇員(e

22、mployee)。l角色名不是類的組成部分,一個類可以在不同角色名不是類的組成部分,一個類可以在不同的關(guān)聯(lián)中扮演不同的角色。的關(guān)聯(lián)中扮演不同的角色。l由于角色名稱和關(guān)聯(lián)名稱都被用來描述關(guān)系的由于角色名稱和關(guān)聯(lián)名稱都被用來描述關(guān)系的目的,所以角色名稱可以代替關(guān)聯(lián)名稱,或者目的,所以角色名稱可以代替關(guān)聯(lián)名稱,或者兩者同時使用。兩者同時使用。l與關(guān)聯(lián)名稱不同,角色名可以生成代碼。(使與關(guān)聯(lián)名稱不同,角色名可以生成代碼。(使用用rose工具可以直接生成代碼)工具可以直接生成代碼)l角色本身也具有可見性。(角色本身也具有可見性。(uml2.0 不在提倡不在提倡使用角色本身的可見性)使用角色本身的可見性)

23、private class person private string personname; protected company employer; /* * */ public person() public class company private string companyname; public person employee; /* * */ public company() private class password /* * */ public password() public class id public password thepassword; /* * */

24、public id() 單向關(guān)聯(lián)單向關(guān)聯(lián)(3) 多重性多重性l關(guān)聯(lián)的多重性指某個類有多少個對象可以和另一關(guān)聯(lián)的多重性指某個類有多少個對象可以和另一個類的單個對象關(guān)聯(lián)。個類的單個對象關(guān)聯(lián)。l表示多重性的方法是在參與關(guān)聯(lián)的類附近的關(guān)聯(lián)表示多重性的方法是在參與關(guān)聯(lián)的類附近的關(guān)聯(lián)線上注名多重性數(shù)值??梢员磉_一個取值范圍、線上注名多重性數(shù)值。可以表達一個取值范圍、特定值、無限定的范圍或一組離散值。特定值、無限定的范圍或一組離散值。 l格式:格式:“minimum.maximum” (均為(均為int型)。型)。(3) 多重性多重性n uml使用星號使用星號(*)來代表許多來代表許多(more)和多個和多

25、個(many)。n 在一種語境中,兩點代表在一種語境中,兩點代表or(或或)關(guān)系,例如關(guān)系,例如“1.*”代表一個或者多個代表一個或者多個n 在另一種語境中,在另一種語境中,or關(guān)系用逗號來表示,例如關(guān)系用逗號來表示,例如“5,10”代表代表5或者或者10。l如果沒有明確標識多重性,就意味著如果沒有明確標識多重性,就意味著1。思考思考:多重性:多重性 3,6.9 表示什么?表示什么?(4)限定關(guān)聯(lián)()限定關(guān)聯(lián)(qualified association)l帶有限定符的關(guān)聯(lián)稱為帶有限定符的關(guān)聯(lián)稱為限定關(guān)聯(lián)限定關(guān)聯(lián)(受限關(guān)聯(lián)受限關(guān)聯(lián))。l限定關(guān)聯(lián)用于限定關(guān)聯(lián)用于一對多或多對多關(guān)一對多或多對多關(guān)聯(lián)聯(lián)

26、這種情況。這種情況。l限定符的作用就是給定關(guān)聯(lián)一端限定符的作用就是給定關(guān)聯(lián)一端的一個對象和限定符以后,可確的一個對象和限定符以后,可確定另一端的一個對象和對象集。定另一端的一個對象和對象集。l一個一個customer可以在可以在bank中有多個中有多個account,但給定,但給定了一個了一個account值后,就可值后,就可以對應一個以對應一個customer,或,或者沒有。因為多重性為者沒有。因為多重性為0.1。l這里的多重性表示的是這里的多重性表示的是customer和(和(bank,account)之間的關(guān)系。)之間的關(guān)系。(bank,account)0,1 customercusto

27、mer-多個(多個(bank,account)l限定符指定了如何標識一對多關(guān)聯(lián)或多對多關(guān)聯(lián)中限定符指定了如何標識一對多關(guān)聯(lián)或多對多關(guān)聯(lián)中的的多端對象集中的一個特定對象多端對象集中的一個特定對象,并且可以將其看,并且可以將其看做是區(qū)分這種關(guān)聯(lián)中所有對象的一種做是區(qū)分這種關(guān)聯(lián)中所有對象的一種關(guān)鍵字關(guān)鍵字。l限定關(guān)聯(lián)把模型從一對多關(guān)聯(lián)簡化為一對一關(guān)聯(lián)。限定關(guān)聯(lián)把模型從一對多關(guān)聯(lián)簡化為一對一關(guān)聯(lián)。l限定符是關(guān)聯(lián)線的一個附加信息,而不是類的。限定符是關(guān)聯(lián)線的一個附加信息,而不是類的。限定符限定符針對于學生端的針對于學生端的針對于關(guān)聯(lián)針對于關(guān)聯(lián)l限定符這個概念在設(shè)計軟件時非常有用,如果一限定符這個概念在設(shè)

28、計軟件時非常有用,如果一個應用系統(tǒng)需要根據(jù)關(guān)鍵字對一個數(shù)據(jù)集做查詢個應用系統(tǒng)需要根據(jù)關(guān)鍵字對一個數(shù)據(jù)集做查詢操作,則經(jīng)常會用到限定關(guān)聯(lián)。操作,則經(jīng)常會用到限定關(guān)聯(lián)。l引入限定符的一個目的就是把多重性從引入限定符的一個目的就是把多重性從n降到降到1或或0.1,這樣如果做查詢操作,則返回的對象至多,這樣如果做查詢操作,則返回的對象至多是一個,而不會是一個對象集。如果查詢操作的是一個,而不會是一個對象集。如果查詢操作的結(jié)果是單個對象,則這個查詢操作的效率會較高。結(jié)果是單個對象,則這個查詢操作的效率會較高。l所以在使用限定符時,如果限定符另一端的多重所以在使用限定符時,如果限定符另一端的多重性仍為性仍

29、為n,則引入這個限定符的作用就不是很大。,則引入這個限定符的作用就不是很大。因為查詢結(jié)果任然還是結(jié)果集,所以也可以根據(jù)因為查詢結(jié)果任然還是結(jié)果集,所以也可以根據(jù)多重性來判斷一個限定符的設(shè)計是否合理。多重性來判斷一個限定符的設(shè)計是否合理。(5)自反關(guān)聯(lián))自反關(guān)聯(lián)l一個類可能與它自己發(fā)生一個類可能與它自己發(fā)生關(guān)聯(lián),這樣的關(guān)聯(lián)被稱為關(guān)聯(lián),這樣的關(guān)聯(lián)被稱為自身關(guān)聯(lián)。自身關(guān)聯(lián)。l當一個類的對象可以充當當一個類的對象可以充當多種角色時,自身關(guān)聯(lián)就多種角色時,自身關(guān)聯(lián)就可能發(fā)生。可能發(fā)生。lcaroccupant(車上的人車上的人)既既可能是一個司機可能是一個司機(driver)也也可能是一個乘客可能是一個

30、乘客(passenger)。(6)關(guān)聯(lián)上的約束)關(guān)聯(lián)上的約束l兩個類之間的一個關(guān)聯(lián)有一個規(guī)則約束。兩個類之間的一個關(guān)聯(lián)有一個規(guī)則約束。有序關(guān)聯(lián)有序關(guān)聯(lián)或關(guān)聯(lián)或關(guān)聯(lián)(7)派生屬性和派生關(guān)聯(lián)派生屬性和派生關(guān)聯(lián)l派生屬性(派生屬性(derived attribute)和派生關(guān)聯(lián))和派生關(guān)聯(lián)(derived association)是指可以從其他屬性和)是指可以從其他屬性和關(guān)聯(lián)計算推演得到的屬性和關(guān)聯(lián)。關(guān)聯(lián)計算推演得到的屬性和關(guān)聯(lián)。l派生屬性和派生關(guān)聯(lián)的名字前需要加一個斜杠派生屬性和派生關(guān)聯(lián)的名字前需要加一個斜杠“/”。l在生成代碼時,派生屬性和派生關(guān)聯(lián)都不產(chǎn)生相在生成代碼時,派生屬性和派生關(guān)聯(lián)都不產(chǎn)

31、生相應的代碼。應的代碼。(8)關(guān)聯(lián)類)關(guān)聯(lián)類l 和類一樣,關(guān)聯(lián)也可以有自己的屬性和操作。此和類一樣,關(guān)聯(lián)也可以有自己的屬性和操作。此時,這個關(guān)聯(lián)實際上是個關(guān)聯(lián)類。時,這個關(guān)聯(lián)實際上是個關(guān)聯(lián)類。l 關(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)聯(lián)的一些附加信息。來標識關(guān)聯(lián)的一些附加信息。l 關(guān)聯(lián)類也可以與其他類關(guān)聯(lián)。關(guān)聯(lián)類也可以與其他類關(guān)聯(lián)。關(guān)聯(lián)類關(guān)聯(lián)類private class person private string personname; protecte

32、d company employer; /public class company private string companyname; public person employee ; /private class contract private double salary; /* * */ public contract() 多重性多重性 下圖是下圖是player類和類和team類之間的類之間的plays on關(guān)關(guān)聯(lián)對應的關(guān)聯(lián)類:聯(lián)對應的關(guān)聯(lián)類:contract(契約契約)關(guān)聯(lián)類。關(guān)聯(lián)類。它又同時和它又同時和generalmanager(總經(jīng)理總經(jīng)理)類發(fā)類發(fā)生關(guān)聯(lián)。生關(guān)聯(lián)。關(guān)聯(lián)類也可

33、以關(guān)聯(lián)類也可以與其他類關(guān)聯(lián)與其他類關(guān)聯(lián)2.聚合關(guān)系聚合關(guān)系 l一種特殊類型的關(guān)聯(lián)。一種特殊類型的關(guān)聯(lián)。 l表示整體與部分關(guān)系表示整體與部分關(guān)系的關(guān)聯(lián)。的關(guān)聯(lián)。 l描述了描述了“由由構(gòu)成構(gòu)成”、 “包含包含”、 “是是的的一部分一部分”的關(guān)系。的關(guān)系。 共享聚合共享聚合l如果聚合關(guān)系中的處于部分方的對象同時參與了多個如果聚合關(guān)系中的處于部分方的對象同時參與了多個處于整體方對象的構(gòu)成,則該聚合稱為共享聚合。處于整體方對象的構(gòu)成,則該聚合稱為共享聚合。l例如:一個球隊(整體方)由多個球員(部分方)組例如:一個球隊(整體方)由多個球員(部分方)組成,但是一個球員還可能參加多個球隊,球隊和球員成,但是一

34、個球員還可能參加多個球隊,球隊和球員的這種關(guān)系就是共享聚合。的這種關(guān)系就是共享聚合。l共享聚合關(guān)系可以通過聚合的多重性反應出來。如果共享聚合關(guān)系可以通過聚合的多重性反應出來。如果作為整體方的類的多重性不是作為整體方的類的多重性不是1,該聚合就是共享聚合。,該聚合就是共享聚合??梢栽诳梢栽诰酆详P(guān)系聚合關(guān)系 上建立約束上建立約束2. 組合關(guān)系組合關(guān)系l聚合關(guān)系中的一種特殊情況,是更強形式的聚合關(guān)系中的一種特殊情況,是更強形式的聚合,又稱強聚合。聚合,又稱強聚合。l成員對象的生命周期取決于聚合的生命周期。成員對象的生命周期取決于聚合的生命周期。 l部分類完全隸屬于整體類。部分類完全隸屬于整體類。l聚

35、合不僅控制著成員對象的行為,而且控制聚合不僅控制著成員對象的行為,而且控制著成員對象的創(chuàng)建和解構(gòu)。著成員對象的創(chuàng)建和解構(gòu)。 聚合和組合的兩端也可以添加角色和多重性。聚合和組合的兩端也可以添加角色和多重性。組合的實現(xiàn)方組合的實現(xiàn)方式一般是將部式一般是將部分類中的對象分類中的對象作為整體類的作為整體類的成員對象,將成員對象,將部分類封裝在部分類封裝在整體類中。整體類中。聚合和組合的區(qū)別聚合和組合的區(qū)別l聚合關(guān)系表示事物的整體聚合關(guān)系表示事物的整體/部分關(guān)系的較弱的情況,組合部分關(guān)系的較弱的情況,組合關(guān)系表示事物的整體關(guān)系表示事物的整體/部分關(guān)系的較強的情況。部分關(guān)系的較強的情況。l在聚集關(guān)系中,代

36、表部分事物的對象可以屬于多個聚集在聚集關(guān)系中,代表部分事物的對象可以屬于多個聚集對象,可以為多個聚集對象所共享,而且可以隨時改變對象,可以為多個聚集對象所共享,而且可以隨時改變它所從屬的聚集對象。代表部分事物的對象與代表聚集它所從屬的聚集對象。代表部分事物的對象與代表聚集事物的對象的生存期無關(guān),一旦刪除了聚集對象,不一事物的對象的生存期無關(guān),一旦刪除了聚集對象,不一定也隨即刪除代表部分事物的對象。定也隨即刪除代表部分事物的對象。l在組合關(guān)系中,代表整體事物的對象負責創(chuàng)建和刪除代在組合關(guān)系中,代表整體事物的對象負責創(chuàng)建和刪除代表部分事物的對象,代表部分事物的對象只屬于一個組表部分事物的對象,代表

37、部分事物的對象只屬于一個組合對象。一旦刪除了組合對象,也就隨即刪除了相應的合對象。一旦刪除了組合對象,也就隨即刪除了相應的代表部分事物的對象。代表部分事物的對象。3.泛化關(guān)系泛化關(guān)系l存在于存在于一般元素和特殊元素一般元素和特殊元素間的分類關(guān)系。間的分類關(guān)系。 l可以用于類、用例以及其他模型元素??梢杂糜陬?、用例以及其他模型元素。 l描述了一種描述了一種“is a kind of” 的關(guān)系。的關(guān)系。l類的泛化關(guān)系可以是多層的。類的泛化關(guān)系可以是多層的。rose中,中,只有父類只有父類的共有的共有(public)和和保護保護(protect)成員會被成員會被子類繼承。子類繼承。泛化的好處泛化的好

38、處l把一般的公共信息放在一般元素中,處理某個具體特把一般的公共信息放在一般元素中,處理某個具體特殊情況時只需定義該情況的個別信息,公共信息從一殊情況時只需定義該情況的個別信息,公共信息從一般元素中繼承得到,增強了系統(tǒng)的靈活性、易維護性般元素中繼承得到,增強了系統(tǒng)的靈活性、易維護性和可擴充性。(繼承性)和可擴充性。(繼承性)l程序員只要定義新擴充或更改的信息就可以了,舊的程序員只要定義新擴充或更改的信息就可以了,舊的信息完全不必修改(仍可以繼續(xù)使用),大大縮短了信息完全不必修改(仍可以繼續(xù)使用),大大縮短了維護系統(tǒng)的時間。維護系統(tǒng)的時間。l可實現(xiàn)多態(tài)。一般元素出現(xiàn)的地方都可以用特殊元素可實現(xiàn)多態(tài)

39、。一般元素出現(xiàn)的地方都可以用特殊元素來代替。(子類代替父類)來代替。(子類代替父類)l多態(tài)技術(shù)利用抽象類定義操作,而用子類實現(xiàn)該操作多態(tài)技術(shù)利用抽象類定義操作,而用子類實現(xiàn)該操作的方法,達到單一接口,多種功能的目的。的方法,達到單一接口,多種功能的目的。l人人“駕駛駕駛”交通工具這個交通工具這個關(guān)聯(lián)關(guān)系。當人執(zhí)行(調(diào)關(guān)聯(lián)關(guān)系。當人執(zhí)行(調(diào)用)用)drive( )操作時,如操作時,如果當時可用的對象是汽車,果當時可用的對象是汽車,那么汽車輪子將被轉(zhuǎn)動;那么汽車輪子將被轉(zhuǎn)動;如果當時可用的對象是船,如果當時可用的對象是船,那么螺旋槳就會動起來,那么螺旋槳就會動起來,這種就是在運行時可能執(zhí)這種就是在

40、運行時可能執(zhí)行的多種情況,稱為行的多種情況,稱為“多多態(tài)態(tài)”。lc+中,多態(tài)利用虛函數(shù)中,多態(tài)利用虛函數(shù)或純虛函數(shù)實現(xiàn)。(使用或純虛函數(shù)實現(xiàn)。(使用指向基類的指針進行函數(shù)指向基類的指針進行函數(shù)調(diào)用)調(diào)用)l替換原則:父類出現(xiàn)的任何地方都可以用子類代替。替換原則:父類出現(xiàn)的任何地方都可以用子類代替。泛化關(guān)系上的約束泛化關(guān)系上的約束-受限泛化受限泛化uml預定義的泛化約束有:多重,不相交,完全,不完全預定義的泛化約束有:多重,不相交,完全,不完全受限泛化的表示形式:受限泛化的表示形式:l1.多重繼承多重繼承:子類的子類可以同時繼承多個上一級子類。:子類的子類可以同時繼承多個上一級子類。l例如:水陸

41、兩用繼承了交通工具兩次。例如:水陸兩用繼承了交通工具兩次。l2.不相交繼承:不相交繼承:與多重繼承對立,一個子類不能同時繼承多個上一級與多重繼承對立,一個子類不能同時繼承多個上一級子類。如果不做特別聲明,一般的繼承都是不相交繼承(默認的繼承子類。如果不做特別聲明,一般的繼承都是不相交繼承(默認的繼承標準)。上例如果沒有多重約束,則不允許水陸兩用類多重繼承,只標準)。上例如果沒有多重約束,則不允許水陸兩用類多重繼承,只允許繼承其中之一。允許繼承其中之一。分辨器:把一般類和具體類劃分分辨器:把一般類和具體類劃分開的依據(jù)。開的依據(jù)。l3.完全繼承完全繼承指父類的所有子類都被窮舉完畢,不可能再指父類的

42、所有子類都被窮舉完畢,不可能再有其它的未列出的子類存在。有其它的未列出的子類存在。l4.非完全繼承非完全繼承與完全繼承相反,父類的子類并不是都列與完全繼承相反,父類的子類并不是都列出來了,而是隨著問題的不斷解決,不斷的補充和完善,出來了,而是隨著問題的不斷解決,不斷的補充和完善,也正是這一點為日后系統(tǒng)的擴充和維護帶來極大的方便。也正是這一點為日后系統(tǒng)的擴充和維護帶來極大的方便。(是默認的繼承標準)。(是默認的繼承標準)。4.實現(xiàn)關(guān)系實現(xiàn)關(guān)系l一個元素完成另一個元素的操作功能。(實現(xiàn)是一個元素完成另一個元素的操作功能。(實現(xiàn)是規(guī)格說明和其實現(xiàn)之間的關(guān)系。)規(guī)格說明和其實現(xiàn)之間的關(guān)系。)l如接口類

43、及其實現(xiàn):接口沒有屬性,只有聲明的如接口類及其實現(xiàn):接口沒有屬性,只有聲明的操作方法(對方法沒有實現(xiàn)部分),而由其實現(xiàn)操作方法(對方法沒有實現(xiàn)部分),而由其實現(xiàn)類具體定義實現(xiàn)部分。類具體定義實現(xiàn)部分。l如用例以及實現(xiàn)該用例的協(xié)作之間也是實現(xiàn)關(guān)系。如用例以及實現(xiàn)該用例的協(xié)作之間也是實現(xiàn)關(guān)系。泛化關(guān)系和實現(xiàn)關(guān)系的異同點泛化關(guān)系和實現(xiàn)關(guān)系的異同點l泛化和實現(xiàn)關(guān)系都可以將一般描述與具體描述聯(lián)泛化和實現(xiàn)關(guān)系都可以將一般描述與具體描述聯(lián)系起來。系起來。l泛化將同一語義層上的元素連接起來,并且通常泛化將同一語義層上的元素連接起來,并且通常在同一個模型內(nèi)。在同一個模型內(nèi)。l實現(xiàn)關(guān)系則將不同語義層內(nèi)的元素連接起

44、來,通實現(xiàn)關(guān)系則將不同語義層內(nèi)的元素連接起來,通常建立在不同模型內(nèi)。在不同發(fā)展階段可能有兩常建立在不同模型內(nèi)。在不同發(fā)展階段可能有兩個或多個類等級存在,這些類等級的元素通過實個或多個類等級存在,這些類等級的元素通過實現(xiàn)關(guān)系聯(lián)系在一起?,F(xiàn)關(guān)系聯(lián)系在一起。5.依賴關(guān)系依賴關(guān)系l關(guān)聯(lián)、實現(xiàn)和泛化都是依賴關(guān)系。但它們有更特別的語義,關(guān)聯(lián)、實現(xiàn)和泛化都是依賴關(guān)系。但它們有更特別的語義,所以在所以在uml中被分離出來作為獨立的關(guān)系。中被分離出來作為獨立的關(guān)系?;镜囊蕾囮P(guān)系基本的依賴關(guān)系在依賴關(guān)系上可以用在依賴關(guān)系上可以用構(gòu)造型構(gòu)造型來更具體化依賴的種類。來更具體化依賴的種類。l1. 使用依賴(使用依賴(

45、usage)l2. 抽象依賴(抽象依賴(abstraction)l3. 授權(quán)依賴(授權(quán)依賴(permission)l4. 綁定依賴(綁定依賴(binding) 1. 使用依賴使用依賴 -最常使用的依賴最常使用的依賴l表示一種元素表示一種元素(客戶客戶)使用其它元素使用其它元素(提供者提供者)提提供的服務(wù)以實現(xiàn)它的行為,包括:供的服務(wù)以實現(xiàn)它的行為,包括:使用(使用(use)調(diào)用(調(diào)用(call)參數(shù)(參數(shù)(parameter)發(fā)送(發(fā)送(send)實例化(實例化(instantiate)使用使用use:聲明使用一個模型元素需要用聲明使用一個模型元素需要用到已存在的另一個模型元素,這樣才能實現(xiàn)到

46、已存在的另一個模型元素,這樣才能實現(xiàn)使用者的功能(包括調(diào)用、實例化、參數(shù)、使用者的功能(包括調(diào)用、實例化、參數(shù)、發(fā)送)。發(fā)送)。調(diào)用調(diào)用call:聲明一個類調(diào)用其他類的操聲明一個類調(diào)用其他類的操作的方法。作的方法。參數(shù)參數(shù)parameter:聲明一個操作和它的聲明一個操作和它的參數(shù)之間的關(guān)系。參數(shù)之間的關(guān)系。發(fā)送發(fā)送send:聲明信號發(fā)送者和信號接聲明信號發(fā)送者和信號接受者之間的關(guān)系。(受者之間的關(guān)系。(例如遙控器和電視機例如遙控器和電視機)實例化實例化instantiate:聲明一個類的方法聲明一個類的方法創(chuàng)建了另一個類的實例。創(chuàng)建了另一個類的實例。注意:注意: 與關(guān)聯(lián)關(guān)系不一樣的是,依賴關(guān)

47、系本身不生成與關(guān)聯(lián)關(guān)系不一樣的是,依賴關(guān)系本身不生成專門的實現(xiàn)代碼。專門的實現(xiàn)代碼。2. 抽象依賴抽象依賴l表示客戶與提供者之間的關(guān)系,依賴于在不表示客戶與提供者之間的關(guān)系,依賴于在不同抽象層次上的事物,包括:同抽象層次上的事物,包括:跟蹤(跟蹤(trace)精化(精化(refine)派生(派生(derive)跟蹤跟蹤trace:表示兩個元素代表的是不同模型中的同:表示兩個元素代表的是不同模型中的同一個概念。通常這些模型分屬于開發(fā)過程中不同階段。一個概念。通常這些模型分屬于開發(fā)過程中不同階段。精化精化refine:表示位于不同的開發(fā)階段或處于不同的:表示位于不同的開發(fā)階段或處于不同的抽象層次中

48、的一個概念的兩種形式之間的映射關(guān)系。并抽象層次中的一個概念的兩種形式之間的映射關(guān)系。并不意味這兩種形式會在最后的模型中共存,它們中一個不意味這兩種形式會在最后的模型中共存,它們中一個通常是另一個的未完善形式。通常是另一個的未完善形式。設(shè)計類將設(shè)計類將refine在分析在分析過程中描述的類。過程中描述的類。派生派生derive:聲明一個實例可以從另一個實例導出。聲明一個實例可以從另一個實例導出??梢愿鶕?jù)提供方的信息計算出客戶方??梢愿鶕?jù)提供方的信息計算出客戶方。3. 授權(quán)依賴授權(quán)依賴 l表達一個事物訪問另一個事物的能力,被依表達一個事物訪問另一個事物的能力,被依賴元素通過規(guī)定依賴元素的權(quán)限,可以

49、控制賴元素通過規(guī)定依賴元素的權(quán)限,可以控制和限制對其進行訪問的方法。包括:和限制對其進行訪問的方法。包括:訪問(訪問(access)導入(導入(import)友元(友元(friend)訪問訪問access:允許一個包訪問另一個包:允許一個包訪問另一個包的內(nèi)容。(的內(nèi)容。(必須使用路徑名稱訪問必須使用路徑名稱訪問)導入導入import:允許一個包訪問另一個包:允許一個包訪問另一個包的內(nèi)容,并為被訪問的包的組成部分增加別的內(nèi)容,并為被訪問的包的組成部分增加別名。名。友元友元friend:允許一個元素訪問另一個:允許一個元素訪問另一個元素,不管被訪問的元素是否具有可見性。元素,不管被訪問的元素是否具

50、有可見性。4. 綁定依賴綁定依賴l較高級的依賴類型,用于綁定模板以創(chuàng)建新的較高級的依賴類型,用于綁定模板以創(chuàng)建新的模型元素,包括:模型元素,包括:l綁定(綁定(bind)例如:例如:c+中的函數(shù)模板、類模板中的函數(shù)模板、類模板 與具體函數(shù)與具體函數(shù)和具體類之間的關(guān)系。和具體類之間的關(guān)系。類模板(帶參數(shù)的類類模板(帶參數(shù)的類parameterized class)luml中,類矩形框右上角掛著一個小的虛線框,中,類矩形框右上角掛著一個小的虛線框,框中是為了生成具體類所需要指值的參數(shù)列表??蛑惺菫榱松删唧w類所需要指值的參數(shù)列表。當為這些參數(shù)指定值時,就說這些參數(shù)被綁定到當為這些參數(shù)指定值時,就說

51、這些參數(shù)被綁定到這些值上。這些值上。l右上角虛線框中的右上角虛線框中的“t”是一個分類,它說明這個是一個分類,它說明這個類是創(chuàng)建其他類的模板。類是創(chuàng)建其他類的模板。c+提供模板機制,提供模板機制,java中沒有與此等價的語法結(jié)構(gòu)中沒有與此等價的語法結(jié)構(gòu)類模板類模板c+代碼代碼#include using namespace std;template /聲明一個模板,虛擬類型名為聲明一個模板,虛擬類型名為tclass compare /類模板名為類模板名為comparepublic: compare(t a, t b) /構(gòu)造函數(shù)構(gòu)造函數(shù) x=a;y=b; t max( ) return (xy

52、)?x:y; t min( ) return (xy)?x:y; private: t x,y;int main( )compare cmp1(3,7); /定義對象定義對象cmp1,用于兩個整數(shù)的比較,用于兩個整數(shù)的比較coutcmp1.max( )“ is the maximum of two integer numbers.”endl;coutcmp1.min( )“ is the minimum of two integer numbers.”endlendl;compare cmp2(45.78,93.6); /定義對象定義對象cmp2,用于兩個浮點數(shù)的比,用于兩個浮點數(shù)的比較較co

53、utcmp2.max( )“ is the maximum of two float numbers.”endl;coutcmp2.min( )“ is the minimum of two float numbers.”endlendl;compare cmp3(a,a); /定義對象定義對象cmp3,用于兩個字符的比較,用于兩個字符的比較coutcmp3.max( )“ is the maximum of two characters.”endl;coutcmp3.min( )“ is the minimum of two characters.”endl;return 0;運行結(jié)果運行結(jié)

54、果7 is the maximum of two integers.3 is the minimum of two integers.93.6 is the maximum of two float numbers.45.78 is the minimum of two float numbers.a is the maximum of two characters.a is the minimum of two characters.兩種表示參數(shù)化類的方法兩種表示參數(shù)化類的方法l1. 顯式綁定(顯式綁定(explicit binding):):明確顯示出明確顯示出生成的類和參數(shù)化類之間的依賴

55、關(guān)系,并提供生成的類和參數(shù)化類之間的依賴關(guān)系,并提供生成類的名字。生成類的名字。l2. 隱式綁定(隱式綁定(implicit binding):):不顯示出不顯示出依賴關(guān)系,綁定參數(shù)出現(xiàn)在產(chǎn)生的類名后面,依賴關(guān)系,綁定參數(shù)出現(xiàn)在產(chǎn)生的類名后面,并用尖括號括起來。并用尖括號括起來。6.2 類圖的繪制類圖的繪制類圖的抽象層次類圖的抽象層次l在軟件開發(fā)的不同階段,使用的類圖具有不同的在軟件開發(fā)的不同階段,使用的類圖具有不同的抽象層次。抽象層次。類圖的類圖的3個個層次之間沒層次之間沒有一個很清有一個很清晰的界限,晰的界限,類圖從概念類圖從概念層到實現(xiàn)層層到實現(xiàn)層的過度是一的過度是一個漸進的過個漸進的過

56、程。程。6.3 對象圖對象圖對象和類的關(guān)系對象和類的關(guān)系鏈鏈l對象是類的實例,鏈是類圖中關(guān)聯(lián)的實例。對象是類的實例,鏈是類圖中關(guān)聯(lián)的實例。l鏈連接的是對象,可以有鏈名,和對象名一樣都要加鏈連接的是對象,可以有鏈名,和對象名一樣都要加下劃線。下劃線。注意:注意:鏈可以有名稱、鏈可以有名稱、角色、但沒有多角色、但沒有多重性,所有的鏈重性,所有的鏈都是一對一的關(guān)都是一對一的關(guān)系。系。對象圖對象圖l對象是類的實例,對象圖也可看作是類圖的實例。對象是類的實例,對象圖也可看作是類圖的實例。l對象圖描述了參與交互的各個對象在交互過程中對象圖描述了參與交互的各個對象在交互過程中某一時刻的狀態(tài)??梢哉J為對象圖是類圖在某一某一時刻的狀態(tài)。可以認為對象圖

溫馨提示

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

評論

0/150

提交評論