【问题标题】:Representing a C# accessor property in a UML Class Diagram?在 UML 类图中表示 C# 访问器属性?
【发布时间】:2011-03-28 15:43:37
【问题描述】:

如何在 UML 类图中表示 C# 属性(setter 和 getter 访问器)?

你只是把它写成常规的 setter 和 getter 方法吗?

或者还有其他的表示方式吗?

我对访问器如何在 UML 类图中的类和接口中表示感兴趣。

【问题讨论】:

  • 开始看起来这不是这个问题的好答案,好像它太客观了。

标签: c# properties uml accessor


【解决方案1】:

一些开发人员/分析师:

(1) 将属性显示为一个非常概念化的东西,并且每个属性只显示一行。

(2) 其他,更具体,显示3行,属性,“getter”函数,“setter”函数。

(3) 有时,只显示 2,用于访问者。

(4) 一些 U.M.L.绘图应用程序。允许您选择要显示的先前的哪一个。

还有……

...据我调查,所有选项都是正确的。请记住,刻板印象(“>”,可以帮助记录类。

(注意:我用点代替空格)

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

+================================================== ================+ |………………我的班级………… .........| +-------------------------------------------------- ---------------+ |..[+]..|..void....|..MyClass()...|..>....| |..[+]..|..void....|..~MyClass()..|..>........| +================================================== ================+ |..[+]..|..字符串..|..文本........|..>................ | +================================================== ================+

(2) 仅“访问器”,(C++、Java、样式):

+================================================== ================+ |………………我的班级………… .........| +-------------------------------------------------- ---------------+ |..[+]..|..void....|..MyClass()...|..>....| |..[+]..|..void....|..~MyClass()..|..>........| +================================================== ================+ |..[#]..|..string..|..FText........|..>........ ..| +================================================== ================+ |..[+]..|..string..|..getText()...|..>,..>...| +-------------------------------------------------- ---------------+ |..[+]..|..string..|..setText()...|..>,..>..| +================================================== ================+

(2) 一切(非常程序员,Object Pascal / Delphi 风格):

+================================================== ================+ |………………我的班级………… .........| +-------------------------------------------------- ---------------+ |..[+]..|..void....|..MyClass()...|..>....| |..[+]..|..void....|..~MyClass()..|..>........| +================================================== ================+ |..[#]..|..string..|..FText........|..>........ ..| +================================================== ================+ |..[+]..|..字符串..|..文本........|..>................ | +-------------------------------------------------- ---------------+ |..[+]..|..string..|..getText()...|..>,..>...| +-------------------------------------------------- ---------------+ |..[+]..|..string..|..setText()...|..>,..>..| +================================================== ================+

您是否正在向分析师交付产品? 您的 C++/Java 程序员是否知道,如果图表仅显示属性,他们必须对 acccesors 进行编码,或者您的公司需要在图表中明确声明它们?

选择更适合您需求的那一款。 (删除点)。

【讨论】:

  • 好答案。我想这取决于谁将阅读文档以及他们的期望。如果您不知道他们在期待什么,我想我将不得不使用 (2),尽管它看起来有点冗长。
【解决方案2】:

我认为您真的不需要担心如何在 UML 图中表示特定于语言的约定。毕竟,这是一个实现问题,而不是设计问题。我建议您像在任何其他 UML 图中一样表示您的访问器方法,然后在您到达项目中的那个点时制定您的设计的实现,而不是提前一分钟。

抱歉,我知道这并不是对您问题的直接回答,但它仍然是一种很好的做法。

【讨论】:

  • @Martinho:理论上,您的假设与我的回答无关。人们仍然会将 getXXX 和 setXXX 方法写入 UML。然而,在实践中,我怀疑许多系统架构师会创建公共属性来表示它们。
  • 不要把访问器转换成类似的东西: public string get_MyProp() { return foo; } public void set_myProp(string value) { foo = value; }?
  • @MattC 使用哪种语言。在 .NET (C#, VB) 3.0 版本中,编译器允许您自动生成访问器,以防不需要额外的操作,非常有帮助。
  • 马蒂尼奥是对的。 U.M.L.可用于描述不成为软件应用程序的操作。
【解决方案3】:

它应该被设置为一个属性。如果它只有一个 getter,请将其设置为只读。 C# 属性没有特定的 UML。

【讨论】:

  • 对。没有具体的 U.M.L.适用于任何语言。它取决于每个软。开发。部门如何实施概念 U.M.L.类图到一个特定的程序。朗。我不喜欢 C# 允许的“只读”属性,我宁愿使用受保护的字段、公共 readAttribute 函数,并在代码的其他部分修改该字段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多