Supposons une classe abstraite X et ses sous-classes Y et Z. Comment représenter dans les diagrammes de classes UML que Y et Z doivent être des singletons. Est-il possible de représenter que toutes les sous-classes X doivent être des singletons?
3 Réponses :
Pour spécifier que toutes les sous-classes de X sont des singletons, vous pouvez écrire une contrainte entre accolades: {chaque sous-classe de X est un singleton}. Cette contrainte doit être placée dans un compartiment de contraintes dans le rectangle de classe.
La spécification UML 2.5, §7.6.4 définit la notation des contraintes en général et §9.2.4 spécifie comment afficher les contraintes d'un classifieur:
Si un classificateur possède des contraintes, un outil conforme peut implémenter un compartiment pour afficher les contraintes possédées répertoriées dans un compartiment séparé du rectangle du classificateur propriétaire. Le nom de ce compartiment optionnel est "Contraintes".
Alternativement, vous pouvez donner une indication singleton sur chaque sous-classe de X. D'après votre libellé, je suppose que ce n'est pas ce que vous voulez. Quoi qu'il en soit, la dernière version d'UML (2.5.1) n'a pas de méthode standard pour indiquer qu'une classe est un singleton. Certaines personnes l'indiquent en écrivant 1 dans le coin supérieur droit du rectangle. Cependant, ce n'est pas UML valide. Vous pouvez l'utiliser pour les pièces, mais pas pour les cours. Au lieu de cela, vous pouvez inventer votre propre stéréotype «singleton ».
@JimL. , qwerty_so: Vous avez raison, j'avais tort. Je modifierai ma réponse.
Si vous supprimiez le lien vers l'autre réponse, je voterais pour car celle liée est simplement obsolète.
Le §11.4.4 de la spécification UML 2.5 dit:
Une dépendance d'utilisation peut associer une spécification d'instance à une constructeur pour une classe, décrivant la valeur unique renvoyée par le Opération constructeur. L'Opération est le client, le créé instance le fournisseur.
Si vous créez un GeneralizationSet qui a la méta-propriété isComplete = true
(pour dire que toutes les sous-classes possibles sont prises en compte), et que vous connectez une InstanceSpecification à chaque constructeur par une dépendance d'utilisation, le model signifie que chaque classe est un singleton.
Veuillez préciser. Quelle est la réponse à la question "Est-il possible de représenter dans un diagramme de classes que toutes les sous-classes X doivent être des singletons?" Oui ou non? Dans l'affirmative, comment représentez-vous une spécification d'instance qui garantit cette contrainte dans un diagramme de classes?
D'accord, j'ai élaboré.
Voici une autre possibilité: vous pouvez orner la classe avec un stéréotype <
. Je l'ai toujours utilisé de cette façon et le codeur sait comment gérer cela. Ce n'est pas un standard UML, mais voyez la dernière phrase.
Qu'entendez-vous par «voir la dernière phrase»?
Eh bien, celui-là avant: le codeur sait comment gérer ça
Penser à cela me fait me demander quelle est la raison pour laquelle forcer les sous-classes à être des singletons?