Я студент, изучаю С++. Я создаю диаграмму классов UML для своей программы, которая включает в себя наследование и абстрактные/конкретные классы, но я не слишком уверен, как обозначить чисто виртуальную функцию. Любая помощь приветствуется, спасибо!
Как обозначить чистую виртуальную функцию на диаграмме классов UML?
Ответы (1)
Стандарт UML указывает, что свойство поведения (например, метод/операция) может иметь свойство isAbstract
, указывающее, что оно является абстрактным и не имеет реализации. Однако нет ничего о том, как это должно быть показано на диаграмме.
Согласно uml-diagrams.org и другим источникам, в старых версиях UML (1.4.x ), абстрактная операция показывалась с именем, выделенным курсивом или с текстовым маркером {abstract}
после имени. Широко использовался курсив (см. также здесь).
Текущий UML больше не использует курсив и не указывает, как представлять свойство isAbstract
. Тем не менее, маркер {abstract}
должен оставаться действительным.
person
Christophe
schedule
12.11.2018
P. 99 UML 2.5: Имя абстрактного классификатора отображается курсивом, если это разрешено используемым шрифтом
- person qwerty_so; 13.11.2018
@ThomasKilian да, но это относится только к классификаторам, а не к операциям. Это сильно отличается от стандарта 1.4, где прямо сказано: Если этот класс не реализует операцию; то есть не предоставляет метод, то операция может быть помечена как «{abstract}» или сигнатура операции может быть выделена курсивом, чтобы указать, что она является абстрактной. (стр. 3-46).
- person Christophe; 13.11.2018
@ThomasKilian обозначения поведенческих особенностей и операций больше не упоминают курсивное обозначение (но все еще подчеркивают для статики). Но оба используют нотацию { свойство... } (даже если
abstract
явно не упоминается p108-109 + 116). Однако я согласен с вами в том, что меня не шокирует курсив, поскольку он так активно использовался в прошлом (включая нотации до UML, например, в GoF).
- person Christophe; 13.11.2018
Поскольку как курсив, так и {abstract} указаны только в отношении классификаторов, вы могли бы обновить свой ответ. В настоящее время утверждается, что {abstract} должен быть верным, и в спецификациях нет никаких указаний на то, что он более действителен, чем курсив.
- person Geert Bellekens; 13.11.2018
Я думаю, что комментарии выше достаточно хороши. Ничто не идеально, даже технические характеристики.
- person qwerty_so; 13.11.2018