Modèles UML

Vous pouvez appliquer le stéréotype cpp_namespace à un modèle. Vous pouvez utiliser l'attribut du stéréotype NamespaceName pour définir l'espace de nom à tous les éléments dans le modèle.

Packages UML

Les packages UML deviennent des dossiers dans le projet cible (et, par conséquent, des dossiers sur le système de fichiers). La transformation place les éléments dans le dossier du package.

La transformation ignore les packages qui sont marqués comme des packages d'analyse. Un utilisateur marque un package comme un package d'analyse en y appliquant le stéréotype <<perspective>>, ou en appliquant un mot "analyse" oy "Analyse".

Similaire au modèle, vous pouvez appliquer le stéréotype cpp_namespace à un package pour spécifier l'espace de nom pour tous les éléments dans le package. La transformation ne supporte pas actuellement les espaces de nom imbriqués. L'espace de nom précisé sur le package interne remplace l'espace de nom indiqué sur le package externe.

Si deux packages UML ont le même nom au même niveau de modèle, la transformation crée seulement un dossier sur le système de fichiers et place le contenu des deux packages UML dans ce dossier.

Classes UML

Pour les classes UML, la transformation génère une paire de fichiers : un fichier d'en-tête et un fichier de corps. Si nécessaire, la transformation convertit le nom de la classe pour se conformer aux règles C++ et s'assurer que le nom est unique. Le fichier de corps contient toujours la directive à inclure pour le fichier d'en-tête correspondant. Par défaut, le fichier d'en-tête généré a le nom de fichier <ClassName>.h et le fichier de corps généré a le nom de fichier <ClassName>.cpp. 

Les relations de généralisation et d'association affectent la génération de code. Pour plus d'informations, voir "Relations d'associations UML" et "Relations de généralisation UML"

Vous pouvez appliquer les stéréotypes suivants aux classes UML :

·         cpp_struct : ce stéréotype génère C++ struct au lieu de la classe.

·        cpp_union : ce stéréotype génère l'union C++ au lieu de la classe C++. Le profil C++ permet à une union imbriquée d'être anonyme. Par défaut, aucune opération standard n'est générée pour les unions.

·        cpp_typedef : ce stéréotype génère C++  typedef à la place de la classe C++. Vous devez utiliser l'attribut de stéréotype "ImplementationType" pour préciser la signature du type défini actuellement.

Enumérations UML

La transformation transforme l'énumération UML en "enum" C++. Le nom de l'énumération C++ est tiré de l'énumération UML. Si nécessaire, la transformation convertit le nom de l'énumération pour se conformer aux règles C++ et s'assurer que le nom est unique. La transformation génère les attributs UML comme des attributs C++, et applique les valeurs par défaut du modèle.

Contrairement aux classes UML, la transformation génère uniquement le fichier d'en-tête pour les énumérations.

Enumérations et classes UML imbriquées

Les classes peuvent comporter des énumérations et des classes imbriquées. La transformation génère des objets imbriqués de même que leurs équivalents non imbriqués. Néanmoins, la transformation ne crée pas de fichiers d'en-tête et de corps séparés pour les objets imbriqués ; elle s'ajoute aux fichiers d'en-tête et de corps de la classe qui les contient.

Les émulations et les classes imbriquées ont aussi les différences suivantes :

·         La visibilité des éléments imbriqués est analysée dans leurs parents

·         Des instructions de la fonction include pour les éléments imbriqués sont ajoutées aux instructions de la fonction include des classes qui les contiennent

·         Les corps d'opération pour les éléments imbriqués ont pour préfixe les noms des classes qui les contiennent

·         Les définitions des attributs statiques pour les éléments imbriqués incluent aussi les noms des classes qui les contiennent

Haut

Conditions d'utilisation | Retours d'informations
(C) Copyright IBM Corporation 2004. All rights reserved.