IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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


précédentsommairesuivant

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

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 artefacts représentent les fichiers sources, objet, librairie, exécutable, jar, etc. La génération produit des fichiers source, et les artefacts sont utilisés pour dire quels sont ces fichiers source. 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 artefact 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 artefact de type source. La façon la plus longue est de faire pour chaque classe : créer un artefact 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 artefacts 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 artefact et l'artefact correspondant sera crée. Faites cela pour C1 et vous obtiendrez :

Image non disponible
Image non disponible

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

Image non disponible

C1 est associée à l'artefact 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 artefact parce que le stéréotype de l'artefact est source. Lorsque le stéréotype n'est pas source vous pouvez associer plusieurs autres artefacts à l'artefact par exemple pour indiquer que ces artefacts forme un exécutable (cette convention est suivie 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 artefact 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 artefacts 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 artefacts 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

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.