UML: внутренний класс в диаграмме классов

В диаграмме классов существует ли способ указать, что класс является внутренним классом другого класса?

Или это считается чистым выбором реализации?

Ответы

Ответ 1

Рассмотрим использование отношения вложенности (строка с "+" в круге на родительском конце).

Ответ 2

Поскольку UML не должен быть непосредственно специфичным для реализации, я бы использовал соглашение об именах, например:

OuterClass vs OuterClass::InnerClass

Я бы предположил, что если вы надеетесь перепроектировать или сгенерировать код в/из UML, для разных инструментов будут разные методы (если они вообще его поддерживают).

Быстрая проверка какой-либо обратной инженерии с использованием Enterprise Architect (EA v7) подтверждает, что они используют вышеупомянутый синтаксис InnerClass::OuterClass при обработке некоторого С# с общедоступным внутренним классом.

Ответ 3

Для такого рода вещей у вас есть отдельные диаграммы, показывающие внутреннюю структуру или обработку класса.

обычно эти дополнительные диаграммы представляют собой диаграммы активности для отображения обработки. Иногда по одному методу. Вы также можете иметь внутреннюю диаграмму последовательности, показывающую взаимодействия API.

Нет причин, по которым вы не можете иметь дополнительную диаграмму классов, чтобы показать внутреннюю структуру класса.

Ответ 4

Или вы можете показать внутренний класс, полностью закрытый внешним классом, один прямоугольник внутри другого.