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


précédentsommairesuivant

III. Classes spéciales

III-A. Définir des structures

Pour définir une structure en C++ ou IDL il faut changer le stéréotype d'une classe en struct, et utiliser le bouton Default declaration dans le(s) langage(s) désiré(s). En Java et Php une structure est implémentée via une classe standard, bien sûr la projection d'un stéréotype d'UML vers un langage donné est définie via les generation settings, regardez la boîte de dialogue précédente et reportez-vous au manuel de référencemanuel de référence de Bouml.

III-B. Définir des unions

Pour définir une union en C++ ou IDL utilisez le stéréotype de classe union, puis utiliser le bouton Default declaration dans le(s) langage(s) désiré(s).

III-C. Définir des typedefs

Pour définir en C++ le typedef T étant un pointeur sur C1 : créez la classe T, et dessinez une dépendance de T vers C1 :

Image non disponible

Éditez la classe et mettez son stéréotype à typedef : le dialogue change et indique un type de base (base type), grâce à la dépendance ce type de base et mis à C1, mais vous pouvez le changer.

Image non disponible

Bien évidemment la dépendance n'est pas obligatoire, par exemple pour avoir typedef int turlututu.

Allez dans l'intercalaire C++ et ajoutez une '*' entre ${type} et ${name} :

Image non disponible

III-D. Définir des énumérations

Les énumérations sont supportées via les stéréotypes de classe enum et enum_pattern.

Créez la classe E, éditez E et changez son stéréotype en enum puis validez par Ok. Appelez le menu de la classe E dans le browser et choisissez add item et nommez le a. Maintenant rappelez le menu et choisissez add attribute et nommez le b. Éditez la classe E et allez dans l'intercalaire C++, demandez la définition par défaut :

Image non disponible

Comme vous le voyez, ${items} produit 'a' (les '...' indiquant que seul le nom est affiché, pas la définition complète) mais pas 'b', ceci parce qu'en C++ une énumération peut seulement avoir des items, les attributs et opérations étant illégaux.

Allons dans l'intercalaire Java, c'est une énumération pour au moins la JDK 5 :

Image non disponible

'b' est produit par ${member}, le stéréotype attribute permet de distinguer items et attributs.

Allons dans l'intercalaire pour Php, comme en C++ 'b' n'apparaît pas :

Image non disponible

Allons dans l'intercalaire pour IDL, comme en C++ et Php 'b' n'apparaît pas :

Image non disponible

De la même façon, si vous ajoutez une opération à une énumération, celle-ci ne sera pas définie en C++ ni en IDL.

Maintenant créez la classe OE, éditez la pour mettre son stéréotype à enum_pattern puis validez ma modification via Ok. Regardez le menu de OE dans le browser : il est seulement possible d'ajouter des items. Il n'y a aucune différence entre E et OE en C++ et en IDL mais tout change en Java où ce type d'énumération est supportée par une classe standard , ceci permet de définir des Énumérations pour des versions de Java précédant la JDK 5:

Image non disponible

Comme d'habitude cette forme est définie via les generation settings vous permettant de la modifier.

Je vous propose d'éditer la définition de 'a' dans les classes E et OE et de regarder leur définition pour tous les langages.

III-E. Définir des interfaces

Pour définir une interface en Java ou IDL, utilisez le stéréotype de classe interface, puis utiliser le bouton Default declaration dans le(s) langage(s) désirés.

Le stéréotype @interface est également pris en compte pour la gestion des annotations en Java.

III-F. Définir des exceptions

Pour définir une exception en IDL, utilisez le stéréotype de classe exception, puis utiliser le bouton Default declaration dans le(s) langage(s) désiré(s).

III-G. Templates et Génériques

Une classe template en C++ ou générique en Java est une classe ayant des formals définis via l'intercalaire parametrized de l'éditeur de classe.

Lorsqu'une classe généralise ou réalise une classe paramétrée, l'intercalaire instantiate de l'éditeur de classe vous permet d'indiquer les actuals. Bien évidemment une classe paramétrée peut hériter d'une autre, dans ce cas celle-ci possède à la fois des formals et des actuals.


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.