Переопределить метод в UML - PullRequest
       13

Переопределить метод в UML

3 голосов
/ 24 апреля 2020

Я пытаюсь создать диаграмму UML. Например, у меня есть класс A с методом a () и класс B, который расширяет A и переопределяет метод a (). Есть ли какой-либо стандарт для указания переопределенных методов в UML?

Ответы [ 3 ]

2 голосов
/ 24 апреля 2020

Как указано в этом ответе { ссылка }, есть определенный c индикатор, указывающий, что член (например, операция) наследуется, но этот индикатор не является обязательным, норма гласит:

Члены , которые наследуются Классификатором , могут быть показаны на диаграмме этого классификатора, добавив символ каретки '^' к текстовому представлению, которое было бы показано, если бы член не был унаследован.

Итак, имея:

enter image description here

B не переопределяет oper

Но имея:

enter image description here

мы не можем знать, кроме если мы уверены, что ^ всегда используется в модели, как на предыдущей диаграмме

[править]

Обратите внимание, что норма использует два раза слова member (а не свойства ) в этом предложении, а Class наследует (косвенно) Classifier , поэтому применяется к операциям.

* 10 49 * Как отмечено в другом ответе, норма также гласит:

Унаследованные члены могут также быть показаны более светлым цветом, чтобы помочь различить gui sh их от не унаследованных ** членов *.

еще раз два раза членов вместо свойств и факт использования ими также четко указывает на тот факт, что есть и другой способ - ^. Таким образом, два последовательных предложения, обозначающих ^, относятся к операциям

[предупреждение]

Я использовал BoUML для создания диаграмм, и в первом вы можете увидеть «^ oper ()», но я «обманул», назвав соответствующую операцию «^ oper», нет возможности показать ^ на диаграмме, чтобы указать, что операция или другой член унаследованы

1 голос
/ 24 апреля 2020

Нормы сказано на с. 101:

Унаследованные члены также могут быть показаны более светлым цветом, чтобы отличить их guish от ненаследуемых членов. Соответствующая реализация не должна предоставлять эту опцию.

К сожалению, мой инструмент (EA) не поддерживает это.

Самый простой способ - дублировать только сигнатуры операций тех операции, которые вы собираетесь переопределить. Это прояснит, что вы что-то переоцениваете.

enter image description here

Просто взглянув на Class2, нельзя сказать, что b на самом деле является переопределением. Однако, если кто-то хочет иметь дело с Class2, он должен знать, что это подкласс - и, следовательно, будет знать, что b является переопределением.


Примечание : спецификации UML 2.5 неоднозначны в отношении использования каретки. Хотя (на стр. 100) они говорят:

Члены, которые унаследованы классификатором, могут быть показаны на диаграмме этого классификатора путем добавления символа каретки '^' ...

Синтаксис ниже явно упоминает только свойства и соединители, и этот отрывок

Аналогичные обозначения могут использоваться для всех NamedElements, которые унаследованыMembers классификатора, чтобы указать, что они наследуются.

1 голос
/ 24 апреля 2020

Нет, указатель c не указан для операций, которые переопределяют операции над родительским классом.
Если совпадает подпись, она переопределяет операцию над родителем.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...