В настоящее время я строю модель из существующего кода на C++. Существует (динамически загружаемая) библиотека, которая должна поэтому реализовать/предоставить определенный интерфейс (класс). Класс, который используется, имеет некоторые чистые виртуальные функции, но он - по общему признанию - не чистый интерфейс (в смысле Java), поскольку он также является базовым классом, содержащим состояние (члены) и несколько реализаций методов.Enterprise Architect & UML: тонкости при выборе интерфейса или абстрактного класса
Так что это своего рода гибрид - базового класса в C++ реальности, но интерфейс в своей основной целью .
Примечание. Я не намерен генерировать код, но модель должна быть правильной для целей документации.
При рисовании пример в EA (12), возникают некоторые вопросы:
а) есть какие-либо важные причины предпочесть класс и сделать его «абстрактный» (серый ящик «Base»), или я должен напрямую использовать интерфейс из панели инструментов (фиолетовый блок «Base2»)? До сих пор я не мог заметить никакой поведенческой разницы в EA, кроме цвета.
б) Как я могу подавить стереотип {абстрактный}, написанный за методами? Когда я делаю не, установите их в «абстрактные», они не нарисованы курсивом. Но я хочу, чтобы они были курсивом, без «{abstract}».
c) Аналогичный вопрос, касающийся полей класса/интерфейса: не являются абстракциями по определению? Итак, почему EA добавляет {абстрактный} текст здесь? Достаточно было нарисовать имя класса курсивом.
d) Я думаю, что самая левая стрелка (обобщение базового класса) и самая правая стрелка (реализация интерфейса) правильны, а средняя - нет. Правильно?
Для кого вы задокументируете? * Пользователь * библиотеки или коллеги * разработчиков * кода библиотеки? - Возможно, вам нужно создать * две диаграммы. – JimmyB
«Абстрактный» не является стереотипом. Интересно, как вы это производите? –
Документация в основном относится к нормативным причинам (stndard требует документированного программного обеспечения для такого бизнеса), и, конечно же, для разработчиков и меня тоже мотивация - это 80:20. Для любого человека-читателя каждый выбор (abtract class/interface, with/without «{abstract}», по-моему, достаточно абсурден. Но поскольку я только что начал EA для этой задачи, я хотел бы изучить его с самого начала В EA любое действие может вызвать удары по другой части модели, это не так в чистом инструменте рисования, таком как Visio. – minastaros