2016-05-09 57 views
0

這種情況如何在類圖中表現爲更優雅(和專業)的方式(使用繼承?)?UML建模 - 如何在類圖上表示多路繼承?

演員 [類]可以是體質的人 [類]或公司 [類],但不能同時使用。
演員可以是內部演員 [class]或外部演員 [class],但不是兩者。
內部演員可以是一個自然人或一個公司,但不是兩者兼而有之。
外部演員可以是自然人或公司,但不是兩者兼而有之。

當然,在這裏,每個所述類都有其特定的屬性,方法和與其他類的關係。

+0

身體的人(和公司)可以是演員以外的其他人嗎? – Xaelis

+0

@Oliver:如果你沒有找到你喜歡的答案,請給我留言嗎? –

回答

0

這裏就是代表你想要在UML用最少類的一種優雅的方式: enter image description here

因爲{complete, disjoint}限制,這種模式需要一個實例是準確的Physical PersonCompany之一,而同時正好是Inner ActorExternal Actor之一。底部的實例規範展示瞭如何實例化它。

UML可以代表這個沒有問題。但是,如何將它映射到編程語言是另一回事。 (還有另外一個問題。)許多語言不支持對實例進行多重分類,因此您必須將一個方形釘子錘入圓孔。

1

如果你不介意多繼承,你可以考慮類似的東西:

Multi-Inheritance

(內在演員顯示拖時間,簡化圖,它是同一類)

+0

這個答案忽略了這些詞出現的地方「但不是兩個」的要求。爲此你需要覆蓋和不相交公理。 (即,{complete,disjoint}。) –

+0

是的,它確實如此。每個實例可以是自然人或公司,但不是兩者兼而有之。每個實例可以是外部演員或內部演員,但不是兩者都可以。 – Xaelis

+0

該模型允許創建不是內部或外部參與者的「公司」實例。 –