2012-02-23 74 views
8

在C++中,由於私有繼承不被視爲is-a關係,它應該如何顯示在類圖中,並且如果它顯示爲has-a關係,那麼如何才能它是區分組成和私人遺產?如何在UML類圖中顯示私有繼承關係

+4

這是一個很好的問題。問題是私有繼承是一個矛盾,這就是爲什麼它不是UML字典的一部分。我會將它顯示爲has-a,並說明它是私下繼承的。另一種選擇是重構你的設計以避免私有繼承:你必須擁有它的情況很少,而且很簡單,所以很簡單,一個普通的工具就可以工作得很好。 – dasblinkenlight 2012-02-23 14:57:33

回答

2

這應該是一個組合關係(在子類側固黑鑽),這是因爲:

  • 私有繼承意味着「在以下方面實現」,但在這方面,可以簡單地同等對待「有一種「關係」。
  • 子類的一個實例明確擁有該對象的基本部分,並且所有權不與任何其他對象共享。