UML中幾種類間關系:繼承、實現、依賴、關聯、聚合、組合的聯系與區別
軟件開發過程中經常會遇到UML建模,那么你對UML符號是否熟悉,這里向大家簡單介紹一下UML類圖符號,每種符號都有不同的意義,希望通過本節的學習你對UML類圖符號會有一定的了解,下面就讓我們一起來看一下UML類圖符號的詳細介紹吧。
UML類圖符號
在UML類圖中,常見的有以下幾種關系:泛化(Generalization),實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)
1、泛化(繼承)
【箭頭指向】:帶三角箭頭的實線,表示繼承一個基類,B類繼承A類。
【泛化關系】:是一種繼承關系,表示一般與特殊的關系,它指定了子類如何特化父類的所有特征和行為。
【泛化例子】:老虎是動物的一種,既有老虎的特性也有動物的共性。
2、實現
【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口,表示C類實現接口的定義。
【實現關系】:是一種類與接口的關系,表示類是接口所有特征和行為的實現。
3、關聯
【箭頭指向】:帶普通箭頭的實線,指向被擁有者。
【關聯關系】:是一種擁有的關系,它使一個類知道另一個類的特征和行為,關聯分為單項關聯和雙向關聯兩種;雙向關聯可以用倆頭帶箭頭的實現表示,也可以不要箭頭。
【3.1】、單向關聯:僅能從一個類訪問到另一個類(前者的屬性中有后者),B類單項關聯A類(B中有屬性a為類A的對象);如:學生與課程的單向關聯。
【3.2】、雙向關聯:兩個類之間能相互訪問(兩個類的屬性中都有對方),B類關聯A類(B中有屬性a為類A的對象),A類關聯B類(A中有屬性bs為Set,Set包含B的對象),A和B是1對n(n>0)的關聯;如老師與學生的雙向關聯。
【3.3】、自身關聯:... ...
【代碼體現】:成員變量
4、聚合
【箭頭方向】:帶空心菱形的實線,菱形指向整體;Wheel類扮演wheels角色,聚合4個到Car對象里面去。
【聚合關系】:是整體與部分的關系,且部分可以離開整體而單獨存在。如Car和Wheel是整體與部分的關系,Wheel離開Car仍然可以存在,并不隨Car的創建而創建,銷毀而銷毀。
【代碼體現】:成員變量
【聚合PK關聯】:聚合關系是關聯關系的一種,是強的關聯關系;關聯和聚合在語法上無法區分,必須考察具體的邏輯關系。
5、組合
[圖片上傳中。。。(6)]
【箭頭方向】:帶實心菱形的實線,菱形指向整體;Company對象完全由Department對象組成。
【組合關系】:是整體與部分的關系,但部分不能離開整體而單獨存在。如Company和Department是整體與部分的關系,沒有Company就沒有Department,Department隨Company的創建而創建,銷毀而銷毀。
【代碼體現】:成員變量
【組合PK關聯】:組合關系是關聯關系的一種,是比聚合關系還要強的關系,它要求普通的聚合關系中代表整體的對象負責代表部分的對象的生命周期。
6、依賴
【箭頭指向】:帶箭頭的虛線,指向被使用者,
【依賴關系】:是一種使用關系,表示類之間的調用關系,即一個類的實現需要另一個類的協助,所以盡量不使用互相依賴。
【代碼體現】:如果類A訪問類B的屬性或者方法,或者類A負責實例化類B,那么可以說類A依賴類B(局部變量、方法的參數或者對靜態方法的調用)。
【依賴PK關聯】:和關聯關系不同,無須再類A中定義類B類型的屬性。
各種關系的強弱順序
泛化 == 實現 > 組合 > 聚合 > 關聯 > 依賴
下面這張UML圖,比較形象地展示了各種類圖關系 :