Symbole de diagramme de classes UML pour une fonction de niveau supérieur

13

Dans la notation de diagramme de classes UML, comment désigner une fonction de niveau supérieur qui n'a pas de classe d'encapsulation ou autre structure?

Par exemple, j'ai une fonction utilisée pour récupérer des données à partir d'une URL. Puisqu'il s'agit d'une fonction (au sens mathématique) de seulement ses paramètres et d'un état global partagé, la fonction n'est pas placée dans une classe mais laissée comme méthode de niveau supérieur.

Maintenant, cependant, je dois créer un diagramme UML pour un programme l'utilisant, et je ne trouve rien sur la façon de désigner une fonction de niveau supérieur. Comment puis-je faire cela?

AJMansfield
la source
Vous pouvez le modéliser comme staticméthode d'une classe spéciale appelée par exempleglobal
xmojmr
1
Les réponses ci-dessous sont bonnes. Cependant, plutôt que d'appeler la classe ou le stéréotype "global", je pense que "StandaloneFunction" est mieux car il est très explicite à votre intention. Cela dit, IMO serait encore mieux de placer les fonctions de "haut niveau" dans un espace de noms bien nommé qui permet d'organiser les fonctions et vous donne ensuite une classe pour les mettre. Ainsi, mettre la fonction dans un espace de noms appelé UrlUtilities est de loin supérieur à ce que cette fonction soit de "haut niveau". Mais là encore, à ce stade, vous pouvez aussi bien le mettre dans une classe UrlUtilities en tant que méthode statique qui est la meilleure option.
Dunk

Réponses:

10

Le langage UML ne prend pas en charge la notion de fonctions autonomes. Dans UML, toutes les fonctions doivent faire partie d'une classe.

Pour contourner ce problème, vous pouvez modéliser vos fonctions autonomes en tant que membres statiques d'une classe à laquelle elles sont étroitement liées. S'il n'y a pas une telle classe, vous pouvez modéliser ces fonctions comme faisant partie d'une classe factice, comme la globalclasse mentionnée par @xmojmr dans les commentaires.

Bart van Ingen Schenau
la source
7

Créez un stéréotype que vous pouvez attacher au classificateur "classe", par exemple <<global function>>. Vous pouvez ensuite créer une seule "classe" stéréotypée pour chaque fonction globale contenant une opération statique entièrement spécifiée.

Le stéréotype que je propose dit à la personne qui lit le diagramme d'interpréter le classificateur comme une fonction. Le rectangle (avec le stéréotype) sur un diagramme donné représenterait une seule fonction, tandis que ses dépendances représentent les dépendances de cette seule fonction.

Doug Knesek
la source
J'ai du mal à voir en quoi votre réponse est différente de celle de Bart ...
Adam Zuckerman
3
@AdamZuckerman - Bart crée une classe unique appelée "globale" qui regroupe toutes les fonctions globales, ce qui rend difficile de savoir quelle fonction globale et quelles dépendances s'appliquent dans le contexte de donner. Le stéréotype que je propose indique à la personne qui lit le diagramme d'interpréter la classe comme une fonction à la place. Un rectangle de classe (avec le stéréotype) représenterait une seule fonction, tandis que ses dépendances représentent les dépendances de cette seule fonction.
Doug Knesek