2010-01-17 10 views
8

Ich habe die folgende Schnittstelle:Vertretung eine C# generische Methode in einem UML-Klassendiagramm

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

User ist eine abstrakte Klasse, und ICanLogin ist eine weitere Schnittstelle.

Nun möchte ich die obige Schnittstelle mit seiner Methode in einem UML-Klassendiagramm, in Visio darzustellen.

Wie kann ich stelle die oben generische Methode mit seinen Einschränkungen in einem Klassendiagramm?

Antwort

3

UML nicht direkt Typ parametrische Methoden unterstützen.

Über die nächste, die Sie erhalten werden, ist eine verschachtelte Klasse zu definieren, die die Typ-Constraints mit einem Stereotyp hat, die Sie als einen Typparameter interpretieren, und definieren Sie die Register Operation in Bezug darauf.

+---------------------------------------------------+ 
|     «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 Unterstützung parametrische Typen (andere Dinge können auch parametrisiert werden und andere Dinge als Typen können auch als Parameter verwendet werden).

+1

) Können Sie mir eine "zuverlässige Quelle" nennen? Ich bin nur neugierig darauf, mehr darüber zu lernen, insbesondere über "andere Dinge als Typen [...] als Parameter". Klassen. –

+0

Für Methoden und Not? –

+0

dieses Blog-Post anzeigen als "[Cliffs Notes] (https://blog.abstratt.com/2007/11/01/uml-101-the-templates-package/)", die UML2 API Javadoc- (ausgehend von [TemplateableElement] (http://download.eclipse.org/modeling/mdt/uml2/javadoc/5.0.0/org/eclipse/uml2/uml/TemplateableElement.html)), und die Suche der [ UML-Spezifikation] (http://www.omg.org/spec/UML/) für die Saiten TemplateableElement, TemplateSignature, Template, ClassifierTemplateParameter, OperationTemplateParameter. –