Символ диаграммы классов UML для функции верхнего уровня

13

Как обозначить диаграмму классов UML как функцию верхнего уровня, которая не имеет инкапсулирующего класса или другой структуры?

например, у меня есть функция, используемая для извлечения данных из URL. Поскольку это функция (в математическом смысле) только ее параметров и общего глобального состояния, функция не помещается в класс, а остается в качестве метода верхнего уровня.

Однако теперь мне нужно создать диаграмму UML для программы, использующей ее, и я не могу найти ничего о том, как обозначить функцию верхнего уровня. Как мне это сделать?

AJMansfield
источник
Вы можете смоделировать его как staticметод специального класса, который называется напримерglobal
xmojmr
1
Ответы ниже хорошие. Тем не менее, вместо того, чтобы называть класс или стереотип «глобальным», я думаю, что «StandaloneFunction» лучше, поскольку это очень явно для вашего намерения. С учетом вышесказанного, IMO еще лучше было бы поместить функции «верхнего уровня» в хорошо именованное пространство имен, которое позволяет организовать функции, а затем дает вам класс для их размещения. Таким образом, помещение функции в пространство имен, называемое UrlUtilities намного превосходит просто функцию «верхнего уровня». Но с другой стороны, в этот момент вы можете также поместить его в класс UrlUtilities в качестве статического метода, который является наилучшим вариантом.
Данк

Ответы:

10

Язык UML не поддерживает понятие автономных функций. В UML все функции должны быть частью класса.

В качестве обходного пути вы можете смоделировать свои автономные функции как статические члены класса, с которым они тесно связаны. Если такого класса нет, вы можете смоделировать эти функции как часть фиктивного класса, как globalкласс, упомянутый @xmojmr в комментариях.

Барт ван Инген Шенау
источник
7

Создайте стереотип , что вы можете прикрепить к «классу» классификатора, например, <<global function>>. Затем вы можете создать один стереотипный «класс» для каждой глобальной функции, содержащей одну полностью указанную статическую операцию.

Стереотип, который я предлагаю, говорит человеку, читающему диаграмму, интерпретировать классификатор как функцию. Прямоугольник (со стереотипом) на данной диаграмме будет представлять отдельную функцию, в то время как ее зависимости представляют зависимости этой отдельной функции.

Дуг Кнезек
источник
Мне трудно понять, чем твой ответ отличается от ответа Барта ...
Адам Цукерман
3
@AdamZuckerman - Барт создает один класс, называемый «глобальным», который объединяет все глобальные функции, что затрудняет определение того, какие глобальные функции и зависимости применяются в контексте контекста. Стереотип, который я предлагаю, говорит человеку, читающему диаграмму, вместо этого интерпретировать класс как функцию. Прямоугольник класса (со стереотипом) будет представлять одну функцию, в то время как его зависимости представляют зависимости этой единственной функции.
Дуг Кнезек