如何在UML类图中表示C#属性(setter和getter访问器)?在UML类图中表示C#访问器属性?
你只是把它写成普通的setter和getter方法吗?
或者还有其他方式表示它吗?
我对如何在UML类图的类和接口中表示访问器感兴趣。
如何在UML类图中表示C#属性(setter和getter访问器)?在UML类图中表示C#访问器属性?
你只是把它写成普通的setter和getter方法吗?
或者还有其他方式表示它吗?
我对如何在UML类图的类和接口中表示访问器感兴趣。
一些开发商/分析师:
(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进行编码,或者您的公司需要在图表中明确声明它们?
选择一个更适合您的需求。 (删除点)。
很好的答案。我想这取决于谁将阅读文档以及他们期望的内容。如果你不知道他们期待的是什么,我想我不得不与(2)一起去,尽管它看起来有点冗长。 – leeand00 2011-03-25 18:35:19
我不认为你真的需要担心如何在UML图表中表示语言特定的约定。毕竟,这是一个实施问题,而不是设计问题。我建议用你在任何其他的UML图中表示你的访问器方法,然后在你到达项目中的那个点时计算出你的设计的实现,而不是提前一分钟。
对不起,我意识到这不是对你的问题的直接回答,但它仍然是一个好的做法。
如果您从现有代码生成图表会怎么样? – 2011-03-25 12:55:45
@Martinho:理论上,你的假设对我的答案没有影响。仍然可以将getXXX和setXXX方法写入UML。然而,在实践中,我怀疑许多系统架构师会创建公共财产来代表它们。 – 2011-03-25 12:59:03
不要将访问器转换成类似于: public string get_MyProp(){return foo; } public void set_myProp(string value){foo = value; }? – MattC 2011-03-25 13:28:59
它应该被设置为属性。如果它只有一个吸气剂,请将其设置为只读。没有针对C#属性的特定UML。
对。没有具体的U.M.L.适用于任何语言。它达到每个软。开发。部。如何实施概念性的U.M.L.将类图插入特定的程序中。郎。我不是C#允许的“只读”属性的粉丝,而是使用受保护的字段,公共readAttribute函数,并修改其他部分代码中的字段。 – umlcat 2011-03-26 17:54:02
它似乎开始好像对这个问题不是一个好的答案,就像它太客观或者是某种东西。 – leeand00 2011-03-25 14:46:44