2011-03-25 54 views
1

如何在UML類圖中表示C#屬性(setter和getter訪問器)?在UML類圖中表示C#訪問器屬性?

你只是把它寫成普通的setter和getter方法嗎?

或者還有其他方式表示它嗎?

我對如何在UML類圖的類和接口中表示訪問器感興趣。

+0

它似乎開始好像對這個問題不是一個好的答案,就像它太客觀或者是某種東西。 – leeand00 2011-03-25 14:46:44

回答

2

一些開發商/分析師:

(1)顯示性能是一個非常概念性的東西,並且只顯示每個屬性一行。 (2)其他更具體,並顯示3行,屬性,「getter」函數,「setter」函數。

(3)有時,只顯示2,爲accesors。

(4)一些U.M.L.繪製應用。允許您選擇先前的哪一項,是否要顯示。

而且......

......據我調查了,所有的選擇是正確的。記住,刻板印象( 「< <一些東西> >」,被允許幫助文檔類

(注:我用點代替空格)

(1)只有普通財產(C#,非常概念化):

 
+================================================================+ 
|..........................MyClass...............................| 
+----------------------------------------------------------------+ 
|..[+]..|..void....|..MyClass()...|..<<constructor>>.............| 
|..[+]..|..void....|..~MyClass()..|..<<destructor>>..............| 
+================================================================+ 
|..[+]..|..string..|..Text........|..<<property>>................| 
+================================================================+ 

(2)只有 「accesors」(C++,Java和風格):

 
+================================================================+ 
|..........................MyClass...............................| 
+----------------------------------------------------------------+ 
|..[+]..|..void....|..MyClass()...|..<<constructor>>.............| 
|..[+]..|..void....|..~MyClass()..|..<<destructor>>..............| 
+================================================================+ 
|..[#]..|..string..|..FText.......|..<<field>>...................| 
+================================================================+ 
|..[+]..|..string..|..getText()...|..<<function>>,..<<getter>>...| 
+----------------------------------------------------------------+ 
|..[+]..|..string..|..setText()...|..<<procedure>>,..<<setter>>..| 
+================================================================+ 

(2)對一切g(Very Programmer,Object Pascal/Delphi style):

 
+================================================================+ 
|..........................MyClass...............................| 
+----------------------------------------------------------------+ 
|..[+]..|..void....|..MyClass()...|..<<constructor>>.............| 
|..[+]..|..void....|..~MyClass()..|..<<destructor>>..............| 
+================================================================+ 
|..[#]..|..string..|..FText.......|..<<field>>...................| 
+================================================================+ 
|..[+]..|..string..|..Text........|..<<property>>................| 
+----------------------------------------------------------------+ 
|..[+]..|..string..|..getText()...|..<<function>>,..<<getter>>...| 
+----------------------------------------------------------------+ 
|..[+]..|..string..|..setText()...|..<<procedure>>,..<<setter>>..| 
+================================================================+ 

您是否向分析師提供? 您的C++/Java程序員是否知道如果圖表只顯示屬性,他們必須對acccesors進行編碼,或者您的公司需要在圖表中明確聲明它們?

選擇一個更適合您的需求。 (刪除點)。

+0

很好的答案。我想這取決於誰將閱讀文檔以及他們期望的內容。如果你不知道他們期待的是什麼,我想我不得不與(2)一起去,儘管它看起來有點冗長。 – leeand00 2011-03-25 18:35:19

1

我不認爲你真的需要擔心如何在UML圖表中表示語言特定的約定。畢竟,這是一個實施問題,而不是設計問題。我建議用你在任何其他的UML圖中表示你的訪問器方法,然後在你到達項目中的那個點時計算出你的設計的實現,而不是提前一分鐘。

對不起,我意識到這不是對你的問題的直接回答,但它仍然是一個好的做法。

+2

如果您從現有代碼生成圖表會怎麼樣? – 2011-03-25 12:55:45

+0

@Martinho:理論上,你的假設對我的答案沒有影響。仍然可以將getXXX和setXXX方法寫入UML。然而,在實踐中,我懷疑許多系統架構師會創建公共財產來代表它們。 – 2011-03-25 12:59:03

+0

不要將訪問器轉換成類似於: public string get_MyProp(){return foo; } public void set_myProp(string value){foo = value; }? – MattC 2011-03-25 13:28:59

0

它應該被設置爲屬性。如果它只有一個吸氣劑,請將其設置爲只讀。沒有針對C#屬性的特定UML。

+0

對。沒有具體的U.M.L.適用於任何語言。它達到每個軟。開發。部。如何實施概念性的U.M.L.將類圖插入特定的程序中。郎。我不是C#允許的「只讀」屬性的粉絲,而是使用受保護的字段,公共readAttribute函數,並修改其他部分代碼中的字段。 – umlcat 2011-03-26 17:54:02