2011-11-06 111 views
8

類可見性是對象設計的重要組成部分。我還沒有看到任何示例圖在多個UML書籍中顯示非公共類,也沒有看到在Enterprise Architect中顯示類可見性的方法以及其他工具。 Enterprise Architect和其他工具允許您在元模型中設置類的可見性,但我還沒有看到在圖表中顯示的方法。可以在UML類圖上顯示類的可見性嗎?

+0

我不認爲UML標準提供了可見性的具體表示法,因爲它是一種語言相關的功能。 – Heisenbug

+0

謝謝@Heisenbug。我能夠看到Enterprise Architect軟件包圖上的類可見性。這可能是在此特定工具中查看它的唯一方法。我的下一步是回顧UML規範的相關部分。 –

+2

我相當肯定的是,一個包圖實際上是在Enterprise Architect中查看元素可見性(即範圍)的唯一方法。因爲您已經做過偵探工作,所以我不會將其作爲答案發布,但請您自己考慮這樣做(並且將回答的問題標記爲未來的搜索者)。 – Uffe

回答

0

在Eclipse中,您可以看到圖標。我的意思是你有一個綠色的班級圖標,如果是私人的,那麼一個p就放在最上面。 如果選擇該選項,該圖標在類圖中也可見。 希望得到這個幫助。

0

UML支持以編程語言無關的方式提供可見性,無論是在元模型還是代表中。

有一個名爲VisibilityKind的枚舉在各個地方使用(請參閱UML 2.3 superstructure spec第7.3.5.5節p142)。

在類圖上有多種方式來說明可見性。最常見的是用' - '代表私人特徵,用'+'代表公開。例如:關於多個示例the spec P52

---------------------------- 
| Class     | 
|--------------------------| 
| +publicAttribute: Type | 
| -privateAttribute: Type | 
|--------------------------| 
| +publicMethod()   | 
| -privateMethod()   | 
---------------------------- 

參見圖7.28/7.29。

hth。

+1

你的答案屬於類成員可見性,而不是類本身的可見性。 –

+0

@BjörnPollex可視性與某個範圍有關,沒有範圍可視性沒有意義。類實例可以是另一個類實例的成員,在這種情況下,它的可見性可以像在這個答案中看到的一樣。 – SomeWittyUsername

0

我只是看着它在UML 2.4.1基礎設施。在圖10.3頁。 95你看到類被定義爲一個類型,它是一個元素的NamedElement。使用可見性包,NamedElement具有第9.21.1頁中定義的可見性。 88,如果它屬於一個命名空間。所以如果你有可見性,Class就具有可見性。您可以使用+ - #和〜(第89頁)的常用符號。

VisualParadigm可以做到這一點。

1

按照UML規範2.5版的β2不僅NamedElement而且PackageableElement具有類型的屬性能見度VisibilityKind

從P48

PackageableElement [抽象類]

.. [剪斷] ..

屬性

  • visibility:VisibilityKind [0..1] = public如果一個PackageableElement由一個名稱空間擁有,則它必須具有指定的可見性。默認可見度是公開的。

約束

  • namespace_needs_visibility 一個PackageableElement一個命名空間擁有一定要有知名度。 INV:知名度= null表示命名空間= NULL

我還沒有找到這種可見的任何符號指引然而

0

如果你有成見定義的類(比如< <類> >)然後可以將形狀腳本分配給原型。如果您指定的裝飾,這應該使用默認繪製的一類,並添加裝飾,它可以基於類的作用域屬性是有條件的:

decoration X 
{ 
    if(hasproperty("scope","public")) 
    print("P"); 
} 

這將打印在P的頂公共課的左角。但是,您可以同樣有一個圖標。

不幸的是,我找不到一種將形狀腳本分配給默認的非定型類的方法。任何人都知道如何做到這一點?