Ответ 1
Постоянные (т.е. окончательные) поля указываются с помощью соглашения об именах: константы должны быть в ALL_CAPS
Я разрабатываю диаграмму классов для игры scrabble. В одном из классов я объявляю окончательную переменную. Может ли кто-нибудь сказать мне, как я могу указать переменную как final в диаграмме классов UML?
Постоянные (т.е. окончательные) поля указываются с помощью соглашения об именах: константы должны быть в ALL_CAPS
Существуют разные понятия финала, которые представлены разными способами:
окончательное определение, то есть оно не может быть переопределено в подклассах - это соответствует свойству isLeaf атрибута:
isLeaf: Boolean - Указывает, можно ли еще переопределить переопределяемый элемент. Если значение истинно, тогда невозможно еще раз переопределите RedefinableElement. (UML Superstructure, стр. 132)
Нет официальной записи атрибутов с isLeaf = true, но добавление "{leaf}" является общим.
окончательное значение, т.е. его значение не может быть изменено - это соответствует свойству isReadOnly атрибута:
isReadOnly: Boolean - Если true, атрибут может быть прочитан и не написан. Значение по умолчанию неверно. (UML Superstructure, стр. 125)
Обозначение атрибутов только для чтения состоит из добавления "{readOnly}" к строке атрибута.
константа обычно относится к неотменяемому атрибуту самого класса, а не к экземпляру (статический конечный атрибут). В UML он имеет оба свойства, упомянутые выше, и дополнительно статические, что соответствует свойству isStatic:
isStatic: Boolean. Указывает, относится ли эта особенность к отдельным экземплярам, классифицированным классификатором (false) или классификатору себя (правда). Значение по умолчанию - false. (UML Superstructure, стр. 69)
Статические атрибуты указаны путем подчеркивания определения атрибута. Константы, как уже упоминалось, обычно являются UPPERCASE, но это просто соглашение.
Итак, чтобы подвести итог, постоянный атрибут FOO типа String со значением "x" будет выглядеть так и подчеркнуть дополнительно (что здесь не поддерживается):
+ FOO: String = "x" {readOnly, leaf}
Объявление окончательного значения переменной/атрибута является детальностью реализации. Поэтому вам не нужно указывать его в вашей диаграмме CLASS, но вы можете следовать соглашению, как предложено eboix
.
Спецификация UML ничего не говорит об этом конкретно; поэтому вы можете следовать соглашению о его показе в ALL CAPS
.