UML: внутренний класс в диаграмме классов - PullRequest
14 голосов
/ 27 октября 2008

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

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

Ответы [ 4 ]

10 голосов
/ 28 октября 2008

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

7 голосов
/ 27 октября 2008

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

OuterClass vs OuterClass::InnerClass

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

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

1 голос
/ 27 октября 2008

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

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

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

0 голосов
/ 28 октября 2008

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

...