概念講解
泛化(Generalization)
圖表 1 泛化
在上圖中,空心的三角表示繼承關係(類繼承),在UML的術語中,這種關係被稱爲泛化(Generalization)。Person(人)是基類,Teacher(教師)、Student(學生)、Guest(來賓)是子類。
若在邏輯上B是A的“一種”,並且A的所有功能和屬性對B而言都有意義,則允許B繼承A的功能和屬性。
例如,教師是人,Teacher 是Person的“一種”(a kind of )。那麼類Teacher可以從類Person派生(繼承)。
如果A是基類,B是A的派生類,那麼B將繼承A的數據和函數。
如果類A和類B毫不相關,不可以爲了使B的功能更多些而讓B繼承A的功能和屬性。
若在邏輯上B是A的“一種”(a kind of ),則允許B繼承A的功能和屬性。
聚合(組合)
圖表 2 組合
若在邏輯上A是B的“一部分”(a part of),則不允許B從A派生,而是要用A和其它東西組合出B。
例如,眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是頭(Head)的一部分,所以類Head應該由類Eye、Nose、Mouth、Ear組合而成,不是派生(繼承)而成。
聚合的類型分爲無、共享(聚合)、複合(組合)三類。
聚合(aggregation)
圖表 3 共享
上面圖中,有一個菱形(空心)表示聚合(aggregation)(聚合類型爲共享),聚合的意義表示has-a關係。聚合是一種相對鬆散的關係,聚合類B不需要對被聚合的類A負責。
組合(composition)
圖表 4 複合
這幅圖與上面的唯一區別是菱形爲實心的,它代表了一種更爲堅固的關係——組合(composition)(聚合類型爲複合)。組合表示的關係也是has-a,不過在這裏,A的生命期受B控制。即A會隨着B的創建而創建,隨B的消亡而消亡。
依賴(Dependency)
圖表 5 依賴
這裏B與A的關係只是一種依賴(Dependency)關係,這種關係表明,如果類A被修改,那麼類B會受到影響。