2010-01-17 15 views
8

je l'interface suivante:Représentant un C# Méthode générique dans un diagramme de classes UML

public interface IRegisterable 
{ 
    T Register<T>(string username, string passw) where T : User, ICanLogin, new(); 
} 

User est une classe abstraite et ICanLogin est une autre interface.

Maintenant, je veux représenter l'interface ci-dessus avec sa méthode dans un diagramme de classes UML, dans Visio. Comment représenter la méthode générique ci-dessus avec ses contraintes dans un diagramme de classes?

Répondre

3

UML ne prend pas en charge les méthodes paramétriques de type directement. A propos de la plus proche, vous obtiendrez de définir une classe imbriquée qui a les contraintes de type avec un stéréotype que vous interpréterez comme un paramètre de type, et définissez l'opération Register en termes de cela.

+---------------------------------------------------+ 
|     «interface»      | 
|     IRegisterable     | 
+---------------------------------------------------+ 
| + Register (string username, string passw) : T | 
+---------------------------------------------------+ 

    +---------------+   +---------------+ 
    | «abstract» |   | «interface» | 
    |  User  |   | ICanLogin | 
    +---------------+   +---------------+ 
      .       . 
      /_\       /_\ 
      |       . 
      +-----------+ ............. 
         | . 
       +-------------------+    
       | «typeParameter» | 
       | IRegisterable::T | 
       +-------------------+   
       | + new()   | 
       +-------------------+   

    note: T is a nested class within IRegisterable 
1

UML DOES types paramétriques de soutien (autres choses peuvent être paramétrés aussi bien, et d'autres choses que les types peuvent être utilisés comme paramètres aussi bien).

+1

Pourriez-vous citer une source fiable pour cela? Je suis juste curieux d'en savoir plus, en particulier sur l'utilisation de "choses autres que les types [...] comme paramètres" –

+0

Pour les méthodes et Not classes? –

+0

Voir ce blog comme "[Notes Cliffs] (https://blog.abstratt.com/2007/11/01/uml-101-the-templates-package/)", le Javadoc de l'API UML2 (à partir de [TemplateableElement] (http://download.eclipse.org/modeling/mdt/uml2/javadoc/5.0.0/org/eclipse/uml2/uml/TemplateableElement.html)), et recherchez le [ Spécification UML] (http://www.omg.org/spec/UML/) pour les chaînes TemplateableElement, TemplateSignature, TemplateParameter, ClassifierTemplateParameter, OperationTemplateParameter. –

Questions connexes