UML: внутренний класс в диаграмме классов
-
04-07-2019 - |
Вопрос
Есть ли в диаграмме классов способ указать, что класс является внутренним классом другого класса? Р>
Или это считается чистым выбором реализации? Р>
Решение
Подумайте об использовании отношения вложения (строка с '+' в кружке на родительском конце).
Другие советы
Поскольку UML не должен напрямую зависеть от реализации, я бы использовал соглашение об именах, например:
OuterClass vs OuterClass::InnerClass
Я бы подумал, если вы надеетесь провести обратный инжиниринг или генерацию кода в / из UML, чтобы разные инструменты использовали разные методы (если они вообще их поддерживают).
Быстрый тест некоторых методов обратного инжиниринга с использованием Enterprise Architect (EA v7) подтверждает, что они используют приведенный выше синтаксис InnerClass :: OuterClass
при обработке некоторого C # с открытым внутренним классом.
Для такого рода вещей у вас есть отдельные диаграммы, показывающие внутреннюю структуру или обработку класса.
Как правило, эти дополнительные диаграммы являются диаграммами активности, чтобы показать обработку. Иногда по одному на метод. У вас также может быть внутренняя диаграмма последовательности, показывающая взаимодействия API.
Нет причин, по которым у вас не может быть дополнительной диаграммы классов для отображения внутренней структуры класса.
Или вы можете показать внутренний класс, полностью заключенный во внешний класс, один прямоугольник внутри другого.