Что у меня есть:
Два разных класса, которые находятся в разных потоках (скажем, classA и classB).
Они ничего не знают друг о друге (без включений / пересылок).
Когда classA завершил что-то, он отправляет сообщение (маршрутизация обрабатывается в другом месте), и classB получает его.
Это все на самом деле. На моей диаграмме классов я хочу показать, что между classA и classB есть сообщения, проходящие между ними (то есть могут общаться) и что они находятся в разных потоках.
Возможно ли это на диаграмме классов UML? — есть ли синтаксис «общается»?
Если UML этого не делает, я просто создам свой собственный метод, чтобы показать это, но если есть какой-то стандарт, я тоже могу его использовать!
Для изображения потоков вы можете использовать диаграммы действий, диаграммы взаимодействия последовательностей и / или диаграммы состояний.
Диаграммы действий — Позволяет разветвляться и указывать
параллелизм / синхронизация с использованием БАР и линии использования.
Диаграммы взаимодействия последовательностей — позволяют указать параллельные
поведение в последовательности путем бокса параллелизуемое поведение с
ярлык «пар»
Диаграмма состояния — Диаграмма состояния так же, как действие позволяет
параллелизм с использованием BAR и строк использования.
Изображение иллюстрирует шаблон «потребитель / производитель» на диаграмме активности UML:
Возможно ли это на диаграмме классов UML? — есть ли синтаксис «общается»?
Просто поместите заметки или (стереотипную) зависимость. Невозможно выразить это в диаграмме классов UML. Диаграммы классов по своей сути предназначены не для отображения поведенческих аспектов, а для структуры и статических отношений типов классов.
Хорошими типами диаграмм для представления параллельного поведения в вашей системе являются диаграммы действий или состояний.
ОБНОВИТЬ
Хотя один разумный, соответствующий стандарту UML способ помечать классы как работает в отдельных потоках, это объявить их как «активный класс»:
Активный объект — это объект, который, как прямое следствие своего создания, начинает выполнять свое поведение классификатора и не прекращает работу, пока не будет выполнено либо полное поведение, либо объект не будет завершен каким-либо внешним объектом. (Это иногда называют «объектом, имеющим собственный поток управления».) Точки, в которых активный объект реагирует на сообщения от других объектов, определяются исключительно поведением активного объекта, а не вызывающим объектом. Если поведение классификатора активного объекта завершается, объект завершается.
Спецификация надстройки UML, v2.1.1, с. 438
Это отображается так:
В любом случае, возможные пути связи между такими элементами класса могут быть выражены через упомянутые стереотипные отношения зависимости.
Для диаграмм действий / состояний вы можете думать о таких асинхронных взаимодействиях сообщений в терминах Signal
а также Event
элементы.