【问题标题】:C#: Help understanding <<property>> in UML Class DiagramsC#:帮助理解 UML 类图中的 <<property>>
【发布时间】:2019-02-10 21:37:55
【问题描述】:

我目前正在做一个项目,我们必须从 UML 图制作代码。我了解 UML 类图的结构,但我无法理解 &lt;&lt;property&gt;&gt; 的含义以及如何在我的代码中实现它。

【问题讨论】:

  • 这看起来就像一个 Python 设计走了 C 路径 ;-)

标签: c# class uml diagram


【解决方案1】:

&lt;&lt;property&gt;&gt; 是一个刻板印象(就像 &lt;&lt; &gt;&gt; 所接受的 UML 中的大多数东西一样)。在这种情况下,它表明您应该为类的相应命名的私有属性实现 getter 和 setter。例如。对于Status,您将实现getStatussetStatus(或为此目的在目标语言中使用的任何内容)。因为Name 也有约束{ readonly },所以您只需实现getName。您可能不得不猜测属性的名称是_bookName

【讨论】:

  • 谢谢,我相信这就是答案,我只是无法理解它。我刚刚遇到的最后一个问题;当我在 Book() 中遇到类似 ReturnBook() 的方法时,它提供了数据类型 Timespan、int 和 decimal。如何将 3 种数据类型分配给一个方法?
  • 在评论中回答这个有点太难了。请为此提出一个新问题。我明天去看看(除非其他人早点回答)。
  • 既然您将其标记为[C#],您应该知道property 是C# 语言的一流部分。类可以具有任何类型的属性。 getter 和 setter 可以具有不同的访问级别(例如,getter 是公共的,而 setter 是私有的)。只读属性(无 setter)和只写(无 getter)属性可用。如果属性有一个简单的定义(getter 和 setter 只是访问一个私有的支持字段),那么您可以使用具有简单、易于表达和理解的语法的 auto-property
【解决方案2】:

由于您将其标记为[C#],因此您应该知道属性是 C# 语言的一流部分。类可以具有任何类型的属性。 getter 和 setter 可以具有不同的访问级别(例如,getter 是公共的,而 setter 是私有的)。只读属性(无 setter)和只写(无 getter)属性可用。如果属性有一个简单的定义(getter 和 setter 只是访问一个私有的支持字段),那么您可以使用具有简单、易于表达和理解的语法的自动属性。

class MyClass {
    //this is a simple property with a backing field
    private int _someInt = 0;
    public int SomeInt {
        get { return _someInt; }
        set { _someInt = value; }    //"value" is a keyword meaning the rhs of a property set expression
    }

    //this is a similar property as an "auto property", the initializer is optional
    public int OtherInt { get; set; } = 0;

    //this is an auto-property with a public getter, but a protected setter
    public string SomeString { get; protected set; }
}

如果省略了 setter(或 getter),则属性变为只读(或只写)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多