UML的構造快包含3種:
(1) 事物(4種):結構事物,行爲事物,分組事物,註釋事物
(2) 關係(4種):泛化關係,實現關係,依賴關係,關聯關係
(3) 圖(10種):用例圖,類圖,對象圖,包圖,組件圖,部署圖,狀態圖,活動圖,序列圖,協作圖
事物是對模型中最具代表性的成分的抽象;關係把事物結合在一起;圖聚集了相關的事物。
UML中有四種關係:
泛化generalization、實現realization、關聯association、依賴dependency。
1.泛化關係generalization:
即繼承關係。是一種特殊/一般關係,特殊元素的對象可代替一般元素的對象。繼承指的是一個類(稱爲子類、子接口)繼承另外的一個類(稱爲父類、父接口)的功能,並可以增加它自己的新功能的能力,繼承是類與類或者接口與接口之間最常見的關係之一;通過關鍵字extends明確標識。
圖示:實線+空心三角
舉例:employee和manager、engineer。engineer和manager都是僱員。
一個類實現了一個接口。通過關鍵字implements明確標識。
圖示:虛線+空心箭頭
舉例:
描述了兩個或多個類之間的結構性關係。
圖示:直線
舉例:一個person屬於一個company,一個company有多個person。
一般關聯:
關聯可以使用單箭頭表示單向關聯,使用雙箭頭或不使用箭頭表示雙向關聯,不建議使用雙向關聯。關聯有兩個端點,在每個端點可以有一個基數,表示這個關聯的類可以有幾個實例。
常見的基數及含義:
0..1:0或1個實例;
0..*:對實例的數目沒有限制;
1:只能有一個實例;
1..*:至少有一個實例。
他體現的是兩個類、或者類與接口之間語義級別的一種強依賴關係,比如我和我的朋友;這種關係比依賴更強、不存在依賴關係的偶然性、關係也不是臨時性的,一般是長期性的,而且雙方的關係一般是平等的,表現在代碼層面,爲被關聯類B以類屬性的形式出現在關聯類A中,也可能是關聯類A引用了一個類型爲被關聯類B的全局變量;在java語言中關聯關係是使用實例變量實現的。
是關聯關係的一種,是一種強關聯關係。聚合關係是整體和部分之間的關係。他體現的是整體與部分、擁有的關係,即has-a的關係,聚合關係是關聯關係的一種,是強的關聯關係;關聯和聚合在語法上無法區分,必須考察具體的邏輯關係。
圖示:空心菱形+實線+箭頭
舉例:汽車與輪胎、引擎
也是關聯關係的一種,但他是比聚合關係更強的關係。要求聚合關係中代表整體的對象要負責代表個體的對象的整個生命週期。如果代表整體的對象被銷燬或破壞,那麼代表個體/部分的對象也一定會被銷燬或破壞,而聚在合關係中,代表個體/部分的對象則有可能被多個代表整體的對象所共享,而不一定會隨着某個代表整體的對象被銷燬或破壞而被銷燬或破壞;是整體與部分的關係,但部分不能離開整體而單獨存在。他體現的是一種contains-a的關係.
圖示:實心菱形+實線+箭頭
舉例:人和肢
一個類或者包依賴另一個類或者包。
圖示:虛線加箭頭。箭頭指向的是被依賴的那一方。
舉例:client類依賴supplier類,client類中的一個參數是是supplier類。是一種使用的關係,即一個類的實現需要另一個類的協助,所以要儘量不使用雙向的互相依賴。
代碼表現:局部變量、方法的參數或者對靜態方法的調用。