Я использовал стереотипы <<get>>
и <<set>>
рядом с именами свойств, поэтому они выглядят как поля, но позволяют различать модификаторы доступа для get
или set
:
+=============================+
| ClassName |
+-----------------------------+
| +<<get>> Id : int |
| -<<set>> Id : int |
| +<<get>> IsSomething : bool |
+-----------------------------+
| + Method1(arg1 : string) |
+=============================+
В качестве альтернативы, если вы не хотите более одного вхождения свойства, это также может сработать:
+=============================+
| ClassName |
+-----------------------------+
| +<<get>> -<<set>> Id : int |
И чтобы уменьшить беспорядок, если get
и set
имеют одинаковый модификатор доступа:
+====================================+
| ClassName |
+------------------------------------+
| +<<get, set>> Description : string |
| +<<get>> -<<set>> Id : int |
Это ясно показывает, есть ли у свойства значение get или set, и доступно ли оно только для чтения (из-за отсутствия <<set>>
в диаграмме классов). Так что в основном то, что вы сказали в своем вопросе.
Хотя свойства являются синтаксическим сахаром для методов получения и установки, они должны восприниматься как поля, и я считаю, что диаграмма UML должна отражать этот факт и в то же время сообщать, что является общедоступным, а что - частным, а также существует ли сеттер или нет.