Как лучше всего представить конструкцию события c # .net на диаграмме классов UML?

Я разрабатываю систему сущностей / компонентов, в которой проблема коммуникации внутри сущности решается с помощью системы сообщений о событиях. Компоненты разбиты на две части, одна в сущности и своего рода «прокси сущности». в подсистеме, синхронизированной через систему типа наблюдателя. Я пытаюсь реализовать с событиями и делегатами.

Я пытаюсь смоделировать структуру системы событий / сообщений моего приложения, и у меня возникли проблемы с делегатами. Теперь он представляет собой диаграмму (прикрепленную), на которой показаны делегат, eventArgs и сущности в системе, однако характер их отношений представлен только в виде общих ассоциаций. У меня также есть вторая диаграмма, показывающая интерфейсы системы. Мне нужно показать события, которые возникают в этих объектах, как это, где большая часть сложности в системе.

Я знаю, что мне также нужны динамические диаграммы взаимодействия и синхронизации, но я пытаюсь выяснить, какой тип и сколько различных классов поддержки событий мне нужно, а также как будет выглядеть структура наследования. Я хочу дать себе выбор типов сообщений, которые, как я знаю, будут работать вместе. Затем я могу выбрать производную EventArgs и тип делегата из этих предопределенных типов для повторного использования во время динамического построения диаграмм и построения компонентов.

Главное, что я не могу понять, это моделировать ли событие как атрибут или операцию. Я пытался использовать класс ассоциации для делегата и операцию типа OnSomeEvent () со стереотипом события. Мне это не нравится, потому что событие не является операцией. Я уже защищал методы в коде с этим соглашением об именовании On **** (). Подпись делегата, многоадресное поведение и шаблон наблюдателя в действительности не учитываются этим подходом.

Какой метод используют другие, чтобы выразить эти сложные и тесно связанные классы? Суть диаграмм для меня заключается в том, чтобы документировать и более полно понимать интерфейсы в системе. На этом этапе моего процесса я надеюсь заморозить интерфейсы и перейти к реализации самих компонентов. enter image description here

Ответы на вопрос(2)

Ваш ответ на вопрос