2010-01-17 25 views
8

I tienen la siguiente interfaz:Representando una Genérico Método C# en una clase UML Diagrama

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

User es una clase abstracta, y ICanLogin es otra interfaz.

Ahora, quiero representar la interfaz anterior con su método en un diagrama de clase UML, en Visio.

¿Cómo puedo representar el método genérico anterior con sus restricciones en un Diagrama de clase?

Respuesta

3

UML no soporta métodos paramétricos tipo directamente.

Lo más cercano que obtendrá es definir una clase anidada que tenga las restricciones de tipo con un estereotipo que interpretará como que es un parámetro de tipo, y defina la operación Register en términos de eso.

+---------------------------------------------------+ 
|     «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 HACE de apoyo tipos paramétricos (otras cosas puede parametrizarse, así, y otras cosas que los tipos se puede utilizar como parámetros también).

+1

¿Podría citar alguna "fuente confiable" para eso? Tengo curiosidad por saber más, especialmente sobre el uso de "cosas que no sean tipos [...] como parámetros también" –

+0

Para métodos y No clases? –

+0

Vea esta publicación de blog como "[Cliffs Notes] (https://blog.abstratt.com/2007/11/01/uml-101-the-templates-package/)", el UML2 API javadoc (comenzando por [TemplateableElement] (http://download.eclipse.org/modeling/mdt/uml2/javadoc/5.0.0/org/eclipse/uml2/uml/TemplateableElement.html)), y busca el [ Especificación UML] (http://www.omg.org/spec/UML/) para las cadenas TemplateableElement, TemplateSignature, TemplateParameter, ClassifierTemplateParameter, OperationTemplateParameter. –

Cuestiones relacionadas