日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

UML类图符号 各种关系说明以及举例

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UML类图符号 各种关系说明以及举例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

UML中描述對象和類之間相互關系的方式包括:依賴(Dependency),關聯(Association),聚合(Aggregation),組合(Composition),泛化(Generalization),實現(Realization)等。

  • 依賴(Dependency):元素A的變化會影響元素B,但反之不成立,那么B和A的關系是依賴關系,B依賴A;類屬關系和實現關系在語義上講也是依賴關系,但由于其有更特殊的用途,所以被單獨描述。uml中用帶箭頭的虛線表示Dependency關系,箭頭指向被依賴元素。
  • 泛化(Generalization):通常所說的繼承(特殊個體 is kind of 一般個體)關系,不必多解釋了。uml中用帶空心箭頭的實線線表示Generalization關系,箭頭指向一般個體。
  • 實現(Realize):元素A定義一個約定,元素B實現這個約定,則B和A的關系是Realize,B realize A。這個關系最常用于接口。uml中用空心箭頭和虛線表示Realize關系,箭頭指向定義約定的元素。
  • 關聯(Association):元素間的結構化關系,是一種弱關系,被關聯的元素間通常可以被獨立的考慮。uml中用實線表示Association關系,箭頭指向被依賴元素。
  • 聚合(Aggregation):關聯關系的一種特例,表示部分和整體(整體 has a 部分)的關系。uml中用帶空心菱形頭的實線表示Aggregation關系,菱形頭指向整體。
  • 組合(Composition):組合是聚合關系的變種,表示元素間更強的組合關系。如果是組合關系,如果整體被破壞則個體一定會被破壞,而聚合的個體則可能是被多個整體所共享的,不一定會隨著某個整體的破壞而被破壞。uml中用帶實心菱形頭的實線表示Composition關系,菱形頭指向整體。

其中依賴(Dependency)的關系最弱,而關聯(Association),聚合(Aggregation),組合(Composition)表示的關系依次增強。換言之關聯,聚合,組合都是依賴關系的一種,聚合是表明對象之間的整體與部分關系的關聯,而組合是表明整體與部分之間有相同生命周期關系的聚合。

而關聯與依賴的關系用一句話概括下來就是,依賴描述了對象之間的調用關系,而關聯描述了對象之間的結構關系。

后面的例子將針對某個具體目的來獨立地展示各種關系。雖然語法無誤,但這些例子可進一步精煉,在它們的有效范圍內包括更多的語義。

1.1.1?????? 依賴(Dependency):虛線箭頭表示

1、依賴關系也是類與類之間的聯結
2、依賴總是單向的。(#add 注意,要避免雙向依賴。一般來說,不應該存在雙向依賴。)
3、依賴關系在 Java 或 C++ 語言中體現為局部變量、方法的參數或者對靜態方法的調用。

class Person

?{

void buy(Car car)

?{

????????? ...

?}

?}

?

虛線加箭頭
? ? ? ? ? ? ? ? ? ? ? ?

1.1.2?????? 關聯(Association):實線箭頭表示

1、關聯關系是類與類之間的聯結,它使一個類知道另一個類的屬性和方法。
2、關聯可以是雙向的,也可以是單向的(#add還有自身關聯)。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
3、在 Java 或 c++ 中,關聯關系是通過使用成員變量來實現的。

?

class 徒弟

{ ?

};

?

class 唐僧

?{

??? ?protected: list<徒弟> tdlist;

};

?

?

1.1.3?????? 聚合(Aggregation):帶空心菱形頭表示

1、聚合關系是關聯關系的一種,是強的關聯關系。
2、聚合是整體和部分之間的關系,例如汽車由引擎、輪胎以及其它零件組成。
3、聚合關系也是通過成員變量來實現的。但是,關聯關系所涉及的兩個類處在同一個層次上,而聚合關系中,兩個類處于不同的層次上,一個代表整體,一個代表部分。
4、關聯與聚合僅僅從 Java 或 C++ 語法上是無法分辨的,必須考察所涉及的類之間的邏輯關系。

class 引擎

?{

?};

?

?class 輪胎

?{

?};

?

?class 汽車

?{

??????? protected:引擎 engine;

??????? protected:輪胎 tyre[4];

?};

?

?

1.1.4?????? 合成(Composition):帶實心菱形頭的實線表示

1、合成關系是關聯關系的一種,是比聚合關系還要強的關系。
2、它要求普通的聚合關系中代表整體的對象負責代表部分的對象的生命周期。

class 肢

?{

?};

?

?class 人

?{

?????? ?protected: ?肢 ? limb[4];

?};

一般是實心菱形加實線箭頭表示

一般化關系(泛化和實現):表示類與類之間的繼承關系,接口與接口之間的繼承關系,或類對接口的實現關系。一般化關系是子類指向父類的,或從實現接口的類指向被實現的接口,與繼承或實現的方向相反。如下圖所示:

?

?

?

?


圖:一般化關系

1.1.5?????? 泛化(Generalization):

帶空心箭頭的實線線表示

泛化(圖H)表示一個更泛化的元素和一個更具體的元素之間的關系。泛化是用于對繼承進行建模的UML元素。在Java中,用extends關鍵字來直接表示這種關系。

泛化關系表示類與類之間的繼承關系,接口與接口之間的繼承關系。圖H

?

?

1.1.6?????? 實現(Realization):空心箭頭和虛線表示

?

實例(圖I)關系指定兩個實體之間的一個合同。換言之,一個實體定義一個合同,而另一個實體保證履行該合同。對Java應用程序進行建模時,實現關系可直接用implements關鍵字來表示。

圖I

?

from:http://www.cnblogs.com/duanxz/archive/2012/06/13/2547801.html


總結

以上是生活随笔為你收集整理的UML类图符号 各种关系说明以及举例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。