泛化(Generalization)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2Zu42bpRXY6lGbhJXZuV2Rf92LcJzN5EzLclHbpx2Lc12bj91ZvxmY0lmbj9CXzV2Zh1WavwVbvNmLn9GbiRXauNmL3d3dvw1LcpDc0RHaiojIsJye.gif)
圖表 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 會受到影響