Les classes et la génération de code sous Bouml


précédentsommairesuivant

IV. Génération de code, deployment view, artifact

Peut être aviez-vous vu l'entrée Generate dans le menu des classes, essayez de générer le code pour C1 : quelque soit le langage cible vous avez l'erreur C1 : does not have associated artifact. En UML 2 les artifacts représentent les fichiers sources, objet, librairie, exécutable, jar etc. La génération produit des fichiers source, et les artifacts sont utilisés pour dire quels sont ces fichiers sources, . Dans les premières versions de BOUML la génération de code était associée aux components mais cela n'est pas compatible avec UML 2 (UML 1 était très évasif sur le sujet), j'ai donc préféré faire la modification, contrairement à plusieurs autres modeleurs UML ...

Un artifact ne peut être placé que dans une deployment view. Créez une deployment view dans le package Package3 (cela n'est pas obligatoire, vous pouvez la placer dans n'importe quel package), et supposons qu'elle s'appelle Deployment view6.

Maintenant vous avez deux façons d'associer chaque classe à un artifact de type source. La façon la plus longue est de faire pour chaque classe : créer un artifact dans Deployment view6, éditez le pour l'appeler comme la classe, changez son stéréotype en source et associez le à la classe. La seconde méthode est plus rapide pour créer des artifacts pour plusieurs classes : associez Deployment view6 à Class view4 (parce qu'il contient C1 etc), pour cela éditez Class view4 :

Image non disponible

Grâce à cette association, quand vous appelez le menu de C1 ou des autres classes de Class view4 dans le browser, vous pouvez choisir l'entrée create source artifact et l'artifact correspondant sera crée. Faites cela pour C1 et vous obtiendrez:

Image non disponible
Image non disponible

Éditez l'artifact (vous pouvez le sélectionner rapidement en appelant le menu de C1 et en choisissant select associated artifact) et allez dans l'intercalaire associated classes :

Image non disponible

C1 est associée à l'artifact auquel vous pouvez associer plusieurs classes, dans ce cas ces classes seront produites dans le même fichier source. Vous pouvez changer l'ordre de génération de ces classes en utilisant les boutons go up/down. Les classes seront générées dans l'ordre d'affichage.

Trois intercalaires ne sont pas disponibles :

  • Php source car la classe associée (ici C1) n'a pas de définition en Php ;
  • Idl source car la classe associée (ici C1) n'a pas de définition en IDL ;
  • Associated artifact parce que le stéréotype de l'artifact est source. Lorsque le stéréotype n'est pas source vous pouvez associer plusieurs autres artifacts à l'artifact par exemple pour indiquer que ces artifacts forme un exécutable (cette convention est suivit pas le plug-out genpro).

Regardez les autres intercalaires et reportez-vous au manuel de référencemanuel de référence de Bouml pour plus de détails.

Créez un artifact pour les classes T, O et OE.

Essayez de nouveau de générer le code, cela est possible en appelant le menu sur chaque classe, ou au niveau des class view les contenant, ou au niveau du package contenant les vues etc jusqu'au niveau du projet. En le faisant au niveau du projet vous demandez la génération de tous les artifact et des classes qui leur sont associées. Provoquer la génération via le menu Tools est une autre façon de demander la génération au niveau projet.

Cette nouvelle tentative de génération de code produira un autre message d'erreur, car BOUML ne sait pas où les fichiers sources doivent être produits : les artifacts donnent le nom des fichiers, pas leur emplacement !

Il est possible d'indiquer un répertoire de génération pour chaque package (vous pouvez également spécifier un namespace, package ou module), il est également possible de spécifier un répertoire de génération (ou un répertoire de base) pour tout le projet via les generation settings. Appelez le menu du projet dans le browser (clic droit sur foo) et choisissez generation settings, allez dans le dernier intercalaire appelé Directory et spécifiez un répertoire pour C++ et Java, par exemple /tmp pour les deux (utilisez d'autres et meilleurs répertoires dans le futur !), validez le changement (bouton Ok).

Maintenant si vous demandez la génération de code, celle-ci se fera. Demandez à générer le code une deuxième fois pour le même langage : la trace indique que rien n'est produit car c'est inutile. Notez que le générateur de code vérifie véritablement que chaque fichier présent a le bon contenu, si vous changez le contenu d'un de ces fichiers à la main et redemandez la génération de code, le fichier en cause sera réécrit. Cela signifie que même si ce n'est pas toujours approprié au niveau vitesse (surtout si seul un fichier est modifié sur 1000), vous pouvez toujours demander la génération au niveau du projet et aucune modification inutile ne sera faite, au plus grand plaisir de vos Makefile et gestionnaires de configuration.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La modification par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.