UML中描述對象和類之間相互關(guān)系的方式包括:依賴(Dependency),關(guān)聯(lián)(Association),聚合(Aggregation),組合(Composition),泛化(Generalization),實(shí)現(xiàn)(Realization)等。
依賴(Dependency):元素A的變化會影響元素B,但反之不成立,那么B和A的關(guān)系是依賴關(guān)系,B依賴A;類屬關(guān)系和實(shí)現(xiàn)關(guān)系在語義上講也是依賴關(guān)系,但由于其有更特殊的用途,所以被單獨(dú)描述。uml中用帶箭頭的虛線表示Dependency關(guān)系,箭頭指向被依賴元素。
泛化(Generalization):通常所說的繼承(特殊個體iskindof一般個體)關(guān)系,不必多解釋了。uml中用帶空心箭頭的實(shí)線線表示Generalization關(guān)系,箭頭指向一般個體。
實(shí)現(xiàn)(Realize):元素A定義一個約定,元素B實(shí)現(xiàn)這個約定,則B和A的關(guān)系是Realize,BrealizeA。這個關(guān)系最常用于接口。uml中用空心箭頭和虛線表示Realize關(guān)系,箭頭指向定義約定的元素。
關(guān)聯(lián)(Association):元素間的結(jié)構(gòu)化關(guān)系,是一種弱關(guān)系,被關(guān)聯(lián)的元素間通??梢员华?dú)立的考慮。uml中用實(shí)線表示Association關(guān)系,箭頭指向被依賴元素。
聚合(Aggregation):關(guān)聯(lián)關(guān)系的一種特例,表示部分和整體(整體hasa部分)的關(guān)系。uml中用帶空心菱形頭的實(shí)線表示Aggregation關(guān)系,菱形頭指向整體。
組合(Composition):組合是聚合關(guān)系的變種,表示元素間更強(qiáng)的組合關(guān)系。如果是組合關(guān)系,如果整體被破壞則個體一定會被破壞,而聚合的個體則可能是被多個整體所共享的,不一定會隨著某個整體的破壞而被破壞。uml中用帶實(shí)心菱形頭的實(shí)線表示Composition關(guān)系,菱形頭指向整體。
其中依賴(Dependency)的關(guān)系最弱,而關(guān)聯(lián)(Association),聚合(Aggregation),組合(Composition)表示的關(guān)系依次增強(qiáng)。換言之關(guān)聯(lián),聚合,組合都是依賴關(guān)系的一種,聚合是表明對象之間的整體與部分關(guān)系的關(guān)聯(lián),而組合是表明整體與部分之間有相同生命周期關(guān)系的聚合。
而關(guān)聯(lián)與依賴的關(guān)系用一句話概括下來就是,依賴描述了對象之間的調(diào)用關(guān)系,而關(guān)聯(lián)描述了對象之間的結(jié)構(gòu)關(guān)系。
UML類圖之間的關(guān)系
1、泛化(Generalization)
【泛化關(guān)系】:是一種繼承關(guān)系,表示一般與特殊的關(guān)系,它指定了子類如何特化父類的所有特征和行為。例如:老虎是動物的一種,即有老虎的特性也有動物的共性。
【箭頭指向】:帶三角箭頭的實(shí)線,箭頭指向父類
2、實(shí)現(xiàn)(Realization)
【實(shí)現(xiàn)關(guān)系】:是一種類與接口的關(guān)系,表示類是接口所有特征和行為的實(shí)現(xiàn)。
【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口
3、關(guān)聯(lián)(Association)
【關(guān)聯(lián)關(guān)系】:是一種擁有的關(guān)系,它使一個類知道另一個類的屬性和方法;如:老師與學(xué)生,丈夫與妻子關(guān)聯(lián)可以是雙向的,也可以是單向的。雙向的關(guān)聯(lián)可以有兩個箭頭或者沒有箭頭,單向的關(guān)聯(lián)有一個箭頭。
【代碼體現(xiàn)】:成員變量
【箭頭及指向】:帶普通箭頭的實(shí)心線,指向被擁有者
上圖中,老師與學(xué)生是雙向關(guān)聯(lián),老師有多名學(xué)生,學(xué)生也可能有多名老師。但學(xué)生與某課程間的關(guān)系為單向關(guān)聯(lián),一名學(xué)生可能要上多門課程,課程是個抽象的東西他不擁有學(xué)生。
下圖為自身關(guān)聯(lián):
4、聚合(Aggregation)
【聚合關(guān)系】:是整體與部分的關(guān)系,且部分可以離開整體而單獨(dú)存在。如車和輪胎是整體和部分的關(guān)系,輪胎離開車仍然可以存在。
聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強(qiáng)的關(guān)聯(lián)關(guān)系;關(guān)聯(lián)和聚合在語法上無法區(qū)分,必須考察具體的邏輯關(guān)系。
【代碼體現(xiàn)】:成員變量
【箭頭及指向】:帶空心菱形的實(shí)心線,菱形指向整體
5、組合(Composition)
【組合關(guān)系】:是整體與部分的關(guān)系,但部分不能離開整體而單獨(dú)存在。如公司和部門是整體和部分的關(guān)系,沒有公司就不存在部門。
組合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強(qiáng)的關(guān)系,它要求普通的聚合關(guān)系中代表整體的對象負(fù)責(zé)代表部分的對象的生命周期。
【代碼體現(xiàn)】:成員變量
【箭頭及指向】:帶實(shí)心菱形的實(shí)線,菱形指向整體
6、依賴(Dependency)
【依賴關(guān)系】:是一種使用的關(guān)系,即一個類的實(shí)現(xiàn)需要另一個類的協(xié)助,所以要盡量不使用雙向的互相依賴。
【代碼表現(xiàn)】:局部變量、方法的參數(shù)或者對靜態(tài)方法的調(diào)用
【箭頭及指向】:帶箭頭的虛線,指向被使用者
各種關(guān)系的強(qiáng)弱順序:
泛化=實(shí)現(xiàn)》組合》聚合》關(guān)聯(lián)》依賴
下面這張UML圖,比較形象地展示了各種類圖關(guān)系:
-
UML
+關(guān)注
關(guān)注
0文章
122瀏覽量
30907 -
UML建模
+關(guān)注
關(guān)注
0文章
7瀏覽量
6828
發(fā)布評論請先 登錄
相關(guān)推薦
![](https://file1.elecfans.com/web2/M00/87/AF/wKgaomRmlIWAOms7AADSk-T8MIU069.png)
UML狀態(tài)圖和Petri網(wǎng)絡(luò)在類測試用例生成的應(yīng)用
編寫電視類TV,UML類圖和說明
一文解析sal socket與其他socket之間的關(guān)系
基于UML的考試管理系統(tǒng)設(shè)計(jì)
![基于<b class='flag-5'>UML</b>的考試管理系統(tǒng)設(shè)計(jì)](https://file.elecfans.com/web2/M00/49/3F/pYYBAGKhtEGAIevxAAAJqjZklgc427.jpg)
時(shí)序圖和類圖的關(guān)系
![時(shí)序<b class='flag-5'>圖</b>和<b class='flag-5'>類</b><b class='flag-5'>圖</b>的<b class='flag-5'>關(guān)系</b>](https://file1.elecfans.com//web2/M00/A6/D8/wKgZomUMQNSACilVAAA0C8BOXVg469.png)
Uml建模三種模型_uml建模的步驟
![<b class='flag-5'>Uml</b>建模三種模型_<b class='flag-5'>uml</b>建模的步驟](https://file.elecfans.com/web1/M00/A8/4D/pIYBAF2Kx5KAY9dfAAC5U2z12fk869.jpg)
什么是UML圖?常見的UML圖工具有哪些?
![什么是<b class='flag-5'>UML</b><b class='flag-5'>圖</b>?常見的<b class='flag-5'>UML</b><b class='flag-5'>圖</b>工具有哪些?](https://file.elecfans.com/web1/M00/BF/A2/pIYBAF7xUoOAGIsBAAAVjelUpRc014.png)
利用UML(圖)表示類之間的6種關(guān)系
![利用<b class='flag-5'>UML</b>(<b class='flag-5'>圖</b>)表示<b class='flag-5'>類</b><b class='flag-5'>之間</b>的6種<b class='flag-5'>關(guān)系</b>](https://file1.elecfans.com/web2/M00/82/77/wKgaomRUZyiAehrHAAAIxI4zWBE648.jpg)
UML相關(guān)基本知識介紹
![<b class='flag-5'>UML</b>相關(guān)基本知識介紹](https://file1.elecfans.com/web2/M00/82/77/wKgZomRUZ_SAFH_aAABczcHCTHU348.jpg)
UML類圖符號等詳細(xì)介紹
![<b class='flag-5'>UML</b><b class='flag-5'>類</b>圖符號等詳細(xì)介紹](https://file1.elecfans.com/web2/M00/82/78/wKgaomRUbD6AMLruAAATjzUtZ4M336.jpg)
UML時(shí)序圖詳解
![<b class='flag-5'>UML</b>時(shí)序<b class='flag-5'>圖</b>詳解](https://file1.elecfans.com//web2/M00/82/CB/wKgZomRiSCiAJNKBAAAqAN5Omvk963.png)
評論