2011-03-25 110 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