Sunteți pe pagina 1din 8

Comment : gnrer du code partir des diagrammes de classes UML

http://msdn.microsoft.com/fr-fr/library/ff657795.aspx

Comment : gnrer du code partir des diagrammes de classes UML


Visual Studio 2010 Ce Feature Pack Visual Studio 2010 vous permet de crer du code partir des lments UML dans Visual Studio 2010 Ultimate l'aide de la commande Generate Code. Par dfaut, la commande gnre un type C# pour chaque type que vous slectionnez sur un diagramme de classes UML. Vous pouvez modifier et tendre ce comportement en modifiant ou en copiant les modles de texte qui gnrent le code. Vous pouvez spcifier un comportement distinct pour les types contenus dans les diffrents packages de votre modle. Pour plus d'informations, consultez Packs de fonctionnalits Visual Studio.

Important
Vous devez installer un pack Visual Studio 2010 Feature Pack pour utiliser cette fonctionnalit. Si vous avez remplac Visual Studio 2010 Visualization and Modeling Feature Pack par Visual Studio 2010 Feature Pack 2, vous devez remapper tous les modles personnaliss pour les projets de gnration de code l'emplacement suivant : \Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft \<InsrerNomFeaturePackVisualStudio>\<InsrerNumroVersionFeaturePackVisualStudio> Pour plus d'informations, consultez Personnalisation de la commande Generate Code. La commande Generate Code est particulirement adapte la gnration de code partir de la slection d'lments de l'utilisateur, et la gnration d'un fichier pour chaque classe UML ou autre lment. Par exemple, la capture d'cran prsente deux fichiers C# gnrs partir de deux classes UML. Si, en revanche, vous voulez gnrer du code dans lequel les fichiers gnrs n'ont pas de relation 1:1 avec les lments UML, vous pouvez envisager d'crire des modles de texte appels avec la commande Transformer tous les modles. Pour plus d'informations sur cette mthode, consultez Comment : gnrer des fichiers partir d'un modle UML.

1 sur 8

22/10/2011 11:07

Comment : gnrer du code partir des diagrammes de classes UML

http://msdn.microsoft.com/fr-fr/library/ff657795.aspx

Pour plus d'informations sur les diagrammes de classes UML dans Visual Studio Ultimate, consultez les rubriques suivantes : Diagrammes de classes UML : rfrence Diagrammes de classes UML : indications

Utilisation de la commande Generate Code


La procdure suivante dcrit le comportement par dfaut de la commande Generate Code :

Pour gnrer un fichier spar pour chaque lment


1. Crez un modle UML qui contient des classes. Vous pouvez appliquer des strotypes aux lments de modle. Pour plus d'informations, consultez Transformations de gnration de code par dfaut. 2. Sur un diagramme de classes ou dans l'Explorateur de modles UML, slectionnez les lments partir desquels vous voulez gnrer le code. Vous pouvez slectionner l'un des lments suivants : Un ensemble spcifique d'lments. Un package ou le modle, pour gnrer le code partir de son contenu. Le diagramme, pour en slectionner tous les lments. 3. Cliquez avec le bouton droit sur un lment slectionn, puis cliquez sur Generate Code. La premire fois que vous utilisez la commande Generate Code dans un modle particulier, une bote de dialogue s'affiche. Cette bote de dialogue vous permet de modifier les paramtres de gnration de code du modle. Cliquez sur OK, sauf si vous voulez modifier ces paramtres. Pour retourner ultrieurement cette bote de dialogue, cliquez avec le bouton droit sur le diagramme, puis cliquez sur Configure Default Code Generation Settings (Configurer les paramtres de gnration de code par dfaut). Pour plus d'informations, consultez Personnalisation de la commande Generate Code. Les fichiers qui contiennent le code C# sont gnrs. Dans le cas par dfaut, un fichier est gnr pour chaque type, et les fichiers sont gnrs dans un projet de bibliothque de classes C#. Vous pouvez toutefois personnaliser ce comportement. Pour plus d'informations, consultez Personnalisation de la commande Generate Code. Certains tests de validation sont appliqus au modle pour vrifier qu'il peut tre traduit en C#. Si ces tests chouent, un message d'erreur est affich et la gnration de code n'est pas excute. Si vous avez cr une commande de menu de validation, le code n'est pas gnr pour tout lment pour lequel votre commande de validation choue. Pour plus d'informations, consultez Comment : dfinir des contraintes de validation pour les modles UML.

Transformations de gnration de code par dfaut


Cette section rsume les rsultats produits par la commande Generate Code, sauf si vous personnalisez la commande. Pour plus d'informations, consultez Personnalisation de la commande Generate Code. Un type C# est produit pour chaque type que vous avez slectionn dans le modle UML. 2 sur 8 22/10/2011 11:07

Comment : gnrer du code partir des diagrammes de classes UML

http://msdn.microsoft.com/fr-fr/library/ff657795.aspx

Un type C# est produit pour chaque type que vous avez slectionn dans le modle UML. Chaque type est plac dans un fichier de code spar dans le dossier GeneratedCode. Si le type UML est contenu dans un package, le type C# gnr est plac l'intrieur d'un espace de noms et le fichier est gnr dans un dossier portant le mme nom que l'espace de noms. Une proprit C# est gnre pour chaque Attribute d'une classe UML. Une mthode C# est gnre pour chaque Operation d'un type UML. Un champ C# est gnr pour chaque association navigable laquelle la classe participe. En ajoutant un strotype chaque type UML, vous pouvez contrler un plus grand nombre de proprits du type C# gnr.

Pour crer ce type C#


Classe

Dessiner ce type UML


Classe

Appliquer ce strotype
<aucune> ou C# class

Interface

Interface

<aucune> ou C# interface

numration

numration

<aucune> ou C# enum

Dlgu Struct

Classe Classe

C# delegate C# struct

Pour dfinir un strotype sur un type ou un autre lment


1. Cliquez avec le bouton droit sur l'lment sur un diagramme ou dans l'Explorateur de modles UML, puis cliquez sur Proprits. 2. Dans la fentre Proprits, cliquez sur la flche de droulement dans la proprit Strotypes, puis activez la case cocher pour le strotype que vous voulez appliquer.

Conseil
Si les strotypes C# ne s'affichent pas, activez le profil C# pour le modle ou pour un package qui contient les lments de modle auxquels vous vous intressez. Slectionnez le package ou la racine du modle dans l'Explorateur de modles UML. Ensuite, dans la fentre Proprits, cliquez sur Profil, puis activez le profil C#. 3. Dveloppez la proprit Strotypes pour voir les proprits supplmentaires que vous pouvez dfinir. Les proprits Description de types, d'attributs, d'oprations et d'associations sont crites dans les commentaires <summary> dans le code gnr. Les lments de commentaire lis aux types sont crits dans les commentaires <remarks>.

Variation du code gnr


3 sur 8 22/10/2011 11:07

Comment : gnrer du code partir des diagrammes de classes UML

http://msdn.microsoft.com/fr-fr/library/ff657795.aspx

Le code gnr varie en fonction des proprits de chaque type, attribut ou opration. Par exemple, si vous affectez la proprit Is Abstract d'une classe la valeur true, le mot cl abstract s'affichera sur la classe gnre. Si vous affectez la proprit Multiplicit d'un attribut la valeur 0..*, le type de la proprit gnre sera IEnumerable<>. De plus, chaque strotype fournit plusieurs proprits supplmentaires que vous pouvez dfinir. Ces valeurs sont traduites en mots cls appropris dans le code C#. Par exemple, si vous dfinissez la proprit Is Static sur une classe, la classe C# sera static. Pour dfinir ces proprits supplmentaires, slectionnez la classe ou un autre lment dans le diagramme. Dans la fentre Proprits, dveloppez Strotypes, puis dveloppez le strotype C#, tel que Classe C#. Pour les classes, ces proprits supplmentaires incluent : CLR Attributes Is Partial Is Static Is Unsafe Package Visibility Chaque attribut et opration dispose galement de proprits de strotype que vous pouvez dfinir. Si vous ne voyez pas les proprits sur un nouvel attribut, excutez la commande Generate Code.

Personnalisation de la commande Generate Code


La commande Generate Code transforme vos lments de modle l'aide d'un ensemble de modles de texte. Pour plus d'informations sur les modles de texte, consultez Gnration de code et modles de texte T4. Les modles sont spcifis dans un ensemble de liaisons de modles de texte. Une liaison de modle de texte spcifie quel modle doit tre appliqu, o la sortie gnre doit tre place, ainsi que d'autres paramtres de la commande Generate Code. Lorsque vous excutez pour la premire fois la commande Generate Code sur un modle particulier, elle joint un ensemble par dfaut de liaisons de modles la racine du modle. Ces liaisons s'appliquent tous les lments du modle. Toutefois, vous pouvez effectuer des substitutions et des ajouts pour ces liaisons par dfaut, en joignant vos propres liaisons des packages, des classes ou d'autres lments. Une liaison s'applique tous les lments contenus dans l'lment auquel elle est jointe. Par exemple, si vous voulez que tous les types d'un package particulier soient transforms par un ensemble de modles diffrent ou soient sortis dans un dossier distinct, vous pouvez joindre des liaisons de modles au package. Pour inspecter les liaisons de modles jointes un lment de modle, cliquez sur les points de suspension [...] dans la proprit Text Template Bindings dans la fentre Proprits. La commande Generate Code applique des modles chaque lment de modle que vous avez slectionn. Pour chaque lment, l'ensemble de modles appliqu est l'ensemble combin des modles joints ses conteneurs, jusqu' la racine du modle incluse. Si deux liaisons de modles dans cet ensemble ont le mme nom, la liaison dans le plus petit conteneur substitue celle dans le plus grand conteneur. Par exemple, la racine modle a une liaison avec le nom Class Template. Pour que votre propre modle soit appliqu au contenu d'un package particulier, dfinissez votre liaison de modle avec le nom Class Template. Plusieurs modles peuvent tre appliqus un lment de modle. Vous pouvez gnrer plusieurs fichiers partir de chaque lment de modle.

Remarque
Les liaisons jointes la racine du modle agissent comme des valeurs par dfaut pour tous les lments du modle. Pour afficher ces liaisons par dfaut, cliquez avec le bouton droit sur 4 sur 8 22/10/2011 11:07

Comment : gnrer du code partir des diagrammes de classes UML

http://msdn.microsoft.com/fr-fr/library/ff657795.aspx

les lments du modle. Pour afficher ces liaisons par dfaut, cliquez avec le bouton droit sur la surface de diagramme, puis cliquez sur Configure Default Code Generation Settings (Configurer les paramtres de gnration de code par dfaut). Vous pouvez galement slectionner la racine du modle dans l'Explorateur de modles UML, puis cliquer sur [...] dans la proprit Text Template Bindings. Les liaisons ne s'affichent pas tant que vous n'avez pas utilis la commande Generate Code au moins une fois. Les liaisons de modles ne peuvent pas tre jointes un diagramme.

Pour joindre des liaisons de modles de texte un package ou un autre lment de modle
1. Dans l'Explorateur de modles UML, cliquez avec le bouton droit sur un lment de modle, puis cliquez sur Proprits. En gnral, vous joignez des liaisons de modles de texte un package ou la racine du modle. 2. Dans la fentre Proprits, cliquez sur le bouton de slection ([...]) dans la proprit Text Template Bindings. La bote de dialogue Liaisons de modles de texte s'affiche. 3. Cliquez sur Ajouter pour crer une liaison de modle de texte. - ou Cliquez sur une liaison existante pour la modifier. Chaque liaison de modle dfinit la manire dont un modle spcifi doit tre appliqu l'lment de modle que vous avez slectionn, et aux autres lments de modle qu'il contient. 4. Dans la bote de dialogue, dfinissez les proprits de la liaison de modle de texte.

Proprit
Nom

Description
Nom pour cette liaison. Pour substituer une liaison hrite d'un modle ou d'un package contenant, utilisez le mme nom que la liaison substituer. Si la valeur est true, tout code existant est remplac. Nom du fichier gnr. Vous pouvez insrer des expressions dans cette chane, telles que {Nom} ou {Nom.Propritaire}. Par exemple, vous pouvez crire : {Nom.Propritaire}_{Nom}. L'expression est value sur l'lment de modle. Elle peut utiliser des proprits d'lments, mais pas de mthodes. Pour trouver les proprits pouvant tre utilises, recherchez les proprits de types dans Microsoft.VisualStudio.Uml.*. Important L'expression {Nom} ou {Nom.Propritaire} ne peut tre utilise que dans la proprit Target Name.Pour modifier le nom de la classe gnre, vous devez modifier le modle.Pour plus d'informations, consultez criture d'un modle de texte.

Overwrite Nom de la cible

Chemin d'accs au projet

Spcifie le chemin d'accs au projet Visual Studio qui contiendra les fichiers de sortie de la transformation. Utilisez des valeurs types pour crer un projet. Cliquez sur le bouton de slection ([...]) pour slectionner un projet existant.

5 sur 8

22/10/2011 11:07

Comment : gnrer du code partir des diagrammes de classes UML existant.

http://msdn.microsoft.com/fr-fr/library/ff657795.aspx

Un projet est cr s'il n'existe pas. Il s'agit d'un projet de bibliothque de classes C#. Pour ce faire, vous devez taper le projet directement. Vous pouvez inclure des macros de variables d'environnement telles que %ProgramFiles% ou %LocalAppData%. Rpertoire cible Dossier dans lequel le fichier cible est gnr. Le chemin d'accs est relatif au dossier du projet. Vous pouvez utiliser l'expression {PackageStructure} pour insrer un chemin d'accs qui correspond aux noms des packages contenants. La valeur par dfaut est \GeneratedCode\{PackageStructure}. Vous pouvez galement inclure des variables d'environnement telles que %TEMP% ou %HomePath%. Important {PackageStructure} peut tre utilis uniquement dans la proprit Target Directory.

Nom de fichier du modle

Modle qui excutera la transformation. Vous pouvez utiliser les modles fournis ou crer le vtre. Les modles fournis se trouvent dans les emplacements suivants : Visual Studio 2010 Visualization and Modeling Feature Pack : %LocalAppData%\Microsoft\VisualStudio\10.0\Extensions\Microsoft \<InsrerNomFeaturePackVisualStudio>\1.0\Templates\Text\ Conseil %LocalAppData% est en gnral NomLecteur:\Users\NomUtilisateur \AppData\Local.Sous Windows XP et Windows 2003, utilisez %AppData% au lieu de %LocalAppData%. Visual Studio 2010 Feature Pack 2 : \Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Modeling \<InsrerNomFeaturePackVisualStudio> \<InsrerNumroVersionFeaturePackVisualStudio>

5. Vous pouvez joindre un lment le nombre de liaisons de votre choix.

criture d'un modle de texte


Vous pouvez crire vos propres modles de texte. Les modles de texte peuvent gnrer un code programme ou tout autre type de fichier texte. Nous vous recommandons de commencer par modifier des copies des modles standard. Vous pouvez copier les modles partir des emplacements suivants : Visual Studio 2010 Visualization and Modeling Feature Pack : %LocalAppData%\Microsoft\VisualStudio\10.0\Extensions\Microsoft \<InsrerNomFeaturePackVisualStudio>\1.0\Templates\Text\

Conseil
%LocalAppData% est en gnral NomLecteur:\Users\NomUtilisateur\AppData\Local. Sous Windows XP et Windows 2003, utilisez %AppData% au lieu de %LocalAppData%. 6 sur 8 22/10/2011 11:07

Comment : gnrer du code partir des diagrammes de classes UML

http://msdn.microsoft.com/fr-fr/library/ff657795.aspx

Sous Windows XP et Windows 2003, utilisez %AppData% au lieu de %LocalAppData%. Visual Studio 2010 Feature Pack 2 : \Microsoft Visual Studio 10.0\Common7 \IDE\Extensions\Microsoft\Modeling\<InsrerNomFeaturePackVisualStudio> \<InsrerNumroVersionFeaturePackVisualStudio> Pour comprendre les modles de texte, reportez-vous aux rubriques suivantes. Un modle de texte est un prototype du fichier rsultant et contient la fois le texte rsultant et le code de programme qui lit le modle. Pour plus d'informations, consultez Gnration de code et modles de texte T4. Pour naviguer dans le modle UML dans le code de programme, vous devez utiliser l'API UML. Pour plus d'informations, consultez Comment : naviguer dans le modle UML et Rfrence des API pour l'extensibilit de la modlisation UML. Pour utiliser les modles avec la commande Generate Code, vous devez inclure la directive de modlisation. Par exemple : <#@ Modeling ElementType="Microsoft.VisualStudio.Uml.Classes.IClass" Processor="ModelingProcessor" #> L'attribut ElementType dfinit le type d'lment UML auquel ce modle s'applique. Dans le modle, this appartient une classe temporaire qui a les proprits suivantes : Element = IElement UML auquel le modle est appliqu. Errors: CompilerErrorCollection Host: ITextTemplatingEngineHost ModelBus: ModelBus. Pour plus d'informations, consultez Comment : intgrer des modles UML d'autres modles et outils. ProfileName = "C#Profile" ServiceProvider: IServiceProvider Session: TextTemplatingSession. Store: Store. Il s'agit du Magasin du kit de dveloppement logiciel Visualization and Modeling SDK sur lequel ModelStore UML est implment. Pour obtenir le IModelStore UML, utilisez this.Element.GetModelStore(). Les points suivants peuvent vous tre utiles lorsque vous crivez un modle de texte. Ces informations sont dcrites en dtail dans Gnration de code et modles de texte T4. Pour dboguer un modle de texte, insrez ce qui suit dans un segment d'instruction : System.Diagnostics.Debugger.Launch() ; Vous pouvez dfinir l'extension de nom de fichier du rsultat dans la directive Output. Une directive Output est obligatoire dans chaque modle de texte. Certains assemblys sont rfrencs automatiquement par le modle. Ces assemblys incluent par exemple System.dll et Microsoft.VisualStudio.Uml.Interfaces.dll. Pour utiliser d'autres assemblys dans votre code de programme de gnration, vous devez utiliser une directive Assembly. Par exemple : <#@ Assembly Name="%ProgramFiles%\Microsoft Visual Studio 10.0\Common7 \IDE\PublicAssemblies\Microsoft.VisualStudio.ArchitectureTools.Extensibility.dll" #> Certains espaces de noms tels que System sont imports automatiquement dans votre code de programme. Pour d'autres espaces de noms, vous pouvez utiliser la directive Import de la mme manire que vous utiliseriez une instruction using. Par exemple : <#@ Import Namespace="Microsoft.VisualStudio.Uml.Classes" #>

7 sur 8

22/10/2011 11:07

Comment : gnrer du code partir des diagrammes de classes UML

http://msdn.microsoft.com/fr-fr/library/ff657795.aspx

<#@ Import Namespace="Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml" #> Utilisez la directive Include pour rfrencer le texte d'un autre fichier. Les parties du modle places entre crochets <# ... #> sont excutes par la commande Generate Code. Les parties du modle l'extrieur de ces crochets sont copies vers le fichier de rsultats. Il est important de distinguer le code de gnration et le texte gnr. Le texte peut tre gnr dans n'importe quel langage. <#= Expressions #> sont values et converties en chanes.

Voir aussi
Concepts Diagrammes de classes UML : rfrence Diagrammes de classes UML : indications Autres ressources Comment : gnrer des fichiers partir d'un modle UML

8 sur 8

22/10/2011 11:07

S-ar putea să vă placă și