Class Diagram: 抽象類 (Abstract) vs 具體類 (Concrete)

Class Diagram :抽像類vs具體的類的概念

 

抽像或具體: 並說明這些類和具體類之間的差異。

 

所有類(Class) 都可以指定為抽像或具體。Concrete是默認值。這意味著該類可以具有(直接)實例(instances) 。相反,抽象意味著一個類不能擁有自己的(直接)實例(instances) 。抽像類純粹是為了概括通用行為,否則這些行為將在(子)類之間重複。我們將通過下圖說明這一點。

 

 

在上圖中,有一個名為Employee的抽像類。在UML中,抽像類的名稱以斜體字體編寫。該類包含一個名為calculatePay的抽象方法,它以斜體字體編寫。抽象方法沒有實現。通常,抽像類包含一個或多個抽象方法。該圖還顯示了三個繼承Employee類的行為和數據屬性的子類。這些是可以實例化的具體類; 抽像類不能直接實例化。可以認為抽像類提供了一些通用行為,但也將一些行為委託給子類。子類必須提供委託行為,否則它也必須標記為抽象,因此無法實例化。

 

關鍵點:在擴展抽像類時,子類必須實現所有抽象方法才能被歸類為具體類。

 

回到圖中,每個子類都提供了自己的calculatePay方法實現。這意味著每個類都提供了抽象行為的實現,但是每個子類以稍微不同的方式執行它。

 

通常假設所有超類都必須是抽象的。事實並非如此。具體超類的實例代表“正常”案例; 其子類的實例表示特殊異常。

 

例如:

 

  • SavingsProduct實例是“普通”產品; 
  • TaxExemptSavingsProduct的實例也是節省產品。

關鍵點:底層類必須具體,否則將不會創建具有定義行為的實例!

 

GoF Design Patterns - Prototype

 

(單擊並編輯上面的示例)

 

 

Unified Modeling Language (UML)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章