C #: помочь понять <<property>> в диаграммах классов UML - PullRequest
0 голосов
/ 11 февраля 2019

В настоящее время я делаю проект, в котором мы должны сделать код из диаграмм UML.Я понимаю анатомию диаграммы классов UML, но мне сложно понять, что означает <<property>> и как внедрить ее в мой код.

enter image description here

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Поскольку вы пометили это как [C#], вы должны знать, что свойство является частью первого класса языка C #.Классы могут иметь свойства любого типа.Получатели и установщики могут иметь разные уровни доступа (например, получатель, общедоступный, в то время как установщик является частным).Доступны свойства только для чтения (без установщика) и только для записи (без установщика).Если у свойства есть тривиальное определение (получатель и установщик просто получают доступ к частному вспомогательному полю), то вы можете использовать автоматическое свойство с простым, простым в выражении и понимании синтаксисом.

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) опущен, свойство становится доступным только для чтения (или только для записи).

0 голосов
/ 11 февраля 2019

<<property>> - это стереотип (как и большинство вещей в UML, охватываемых << >>).В этом случае это указывает на то, что вы должны реализовать методы получения и установки для соответственно названных частных атрибутов класса.Например, для Status вы бы реализовали getStatus и setStatus (или все, что используется на целевом языке для этой цели).Поскольку есть также ограничение { readonly } для Name, вы просто должны реализовать getName.Вы, вероятно, должны догадаться, что имя атрибута _bookName.

...