2013-03-11 4 views
9

Ich muss eine konkrete generische Klasse modellieren, die von einer generischen Basisklasse erbt. Zuerst siehe unten:Visual Studio UML Klassendiagramm & Modellierung generischer Typen

enter image description here

ActivityFacade sollte auf diese Weise realisiert werden:

public class ActivityFacade : BaseFacade<Activity, int> 
{ 
} 

Wie kann ich dies in einem VS2012 UML-Klassendiagramm modellieren? Betrachtet man das Diagramm, ist es offensichtlich, dass ActivityFacade von BaseFacade erbt, aber was nicht offensichtlich ist, sind die generischen Typparameter, die übergeben werden, nämlich: Activity und int.

Antwort

12

Sie müssen sich mit einem Vorlage Bindung Anschlusseine neue Bindungsklasse (BaseFacade <Activity, int>) verbinden Sie es mit Ihrer parametrisierte Klasse (BaseFacade<T, TKey>) hinzufügen und dann Ihr Kind Klasse (ActivityFacade) von der Bindungsklasse spezialisiert.

enter image description here

Von der OMG UML-Spezifikation

„Eine Vorlage ist ein parametrisierte Element ... verwendet, um andere Modellelemente Beziehungen mit Template zu erzeugen. Die Template-Parameter für die Vorlage Unterschrift der formalen Parameter angeben, die wird durch tatsächliche Parameter (oder den Standardwert) in einer Bindung ersetzt. "

UPDATE:

Das Diagramm I enthalten gezogen wird EA verwendet wird. Dasselbe Konzept kann in Visual Studio UML-Tool modelliert werden. Siehe den Abschnitt "Template types: To use a template type" in msdn.

+0

-1: Ist das ein VS2012 UML-Diagramm? Sieht eher aus wie Sparx EA. –

+1

@JohnSaunders Wichtig ist das Konzept und nicht das Werkzeug. Das Diagramm in der Frage ist falsch, da ActivityFacade nicht von BaseFacade, sondern von BaseFacade geerbt werden sollte. Hier zeige ich das Konzept der Modellierung von Generika in UML. Ich bin mir sicher, sobald das OP über TemplateBinding Bescheid weiß, können sie es im Visual Studio finden. – jurgenreza

+0

Die Frage lautete: "Wie kann ich das in einem VS2012-UML-Klassendiagramm modellieren?" Wenn Sie VS2012 verwenden können, um dies korrekt zu modellieren, sollten Sie diese Lösung veröffentlichen. Ansonsten ist Ihre Antwort für diese Frage nicht relevant. –