Если класс Human
наследует некоторые методы из суперкласса Mammal
без изменений (например, laysEggs: () -> false
) и переопределяет другие методы (например, postsToStackOverflow : () -> true
), существует ли какая-либо разница между тем, как различные методы указаны в части диаграмму статического класса UML для Human
? Например, это только переопределенные методы, показанные в поле для Human
, или оба показаны с некоторой аннотацией для переопределенных методов?
Существует ли соглашение для отображения переопределенных методов в диаграммах статического класса UML?
Ответ 1
Сейчас есть. Какой-то аноним заставил меня покопаться в 2.5.1. функции. На стр. 102 сказано
Члены, которые наследуются классификатором, могут быть показаны на диаграмме этого классификатора путем добавления символа вставки ^ к текстовому представлению, которое будет отображаться, если член не был унаследован. Таким образом, запись для унаследованного свойства определяется следующим образом:
<inherited-property> ::= ^ <property>
Сама спецификация (пока) не использует в значительной степени обозначения каретки, за исключением рисунка 9.11 на с. 115 и рисунок 10.9 на с. 173.
В спецификации для 2.5 и до того ответ был: нет, нет. Вы можете только сказать, что метод переопределен, проверяя методы класса, от которого наследуется.
Ответ 2
Хотя это не указано в стандарте UML, следующая - это обозначение, обозначающее, когда одна функция переопределяет другую:
+ toString() : String <<override>>
Ответ 3
Я повторяю объявление метода, если я хочу показать, что унаследованный класс переопределит его, в другом случае просто пропустите объявление.