La transformation UML vers Java transforme les spécifications UML 2.0
en classes Java. Vous pouvez utiliser la transformation pour donner des
valeurs de départ à un projet
Java à partir de spécifications UML 2.0. Vous pouvez aussi appliquer la
transformation après avoir donné des valeurs de départ initiales pour
fusionner les modèles UML mis à jour avec le code Java existant.
La procédure suivante montre l'utilisation la plus simple de la transformation Java.
Transformer un modèle UML vers Java :
1. Basculez en perspective Modélisation.
2. Dans la vue Explorateur de modèle, cliquez à l'aide du bouton droit de la
souris sur une classe UML (par exemple, Class1).
3. Cliquez sur Transformation > Exécuter la transformation > UML2 à Java.
4. La boîte de dialogue Exécution de la transformation s'ouvre. Cliquez
sur le bouton Créer le conteneur de cible.
5. La boîte de dialogue Nouveau projet Java s'ouvre. Entrez simple
dans le champ Nom de projet et cliquez sur Fin.
6. Dans la boîte de dialogue Exécution de la transformation, cliquez sur Fin.
Le nouveau projet Java contient un package par défaut qui contient la nouvelle classe Java : Class1.
La transformation peut aussi effectuer plusieurs autres fonctions plus
complexes telles que la substitution de noms sans modification du modèle
source, le remplacement de l'objet UML avec une visualisation, la
fusion de modifications dans le modèle UML et la source Java et
enfin, la validation du modèle UML pour les incidents de
transformation potentiels.
UML | Java |
Package | Package Java avec le même nom* |
Package stéréotypé <<perspective>> | Ignoré |
Package avec mot-clé <<Analyse>> ou <<analyse>> | Ignoré |
Classe | Classe Java avec le même nom* et la même visibilité |
(Classe) Propriété isLeaf | La classe Java est "finale" si vraie |
(Classe) Propriété isAbstract | La classe Java est "résumé" si vraie |
(Classe) Généralisation | La classe Java "agrandit" la superclasse indiquée |
Implémentation | La classe Java "implémente" la superclasse indiquée |
(Classe à interface) Généralisation |
La classe Java "implémente" la superclasse indiquée |
Interface | Interface Java avec le même nom* et la même visibilité |
(Interface) Généralisation | L'interface Java "agrandit" la superclasse indiquée |
Enumération |
Interface Java avec le même nom* et la même visibilité |
EnumerationLiteral |
Champ Java avec le même nom* et la même visibilité |
Opération | Méthode Java avec le même nom* et la même visibilité |
(Opération) Propriété isStatic | La méthode Java est "statique" si vraie |
(Opération) Propriété isAbstract | La méthode Java est "résumé" si vraie |
(Opération) Propriété isLeaf | La méthode Java est "finale" si vraie |
(Opération) avec le même nom que sa classe | Constructeur Java |
(Opération) <<créer>> stéréotype | Constructeur Java |
Paramètre | Paramètre Java avec le même nom* |
(Paramètre) Propriété de type | Le paramètre Java a le type indiqué. Il peut s'agir d'une autre classe ou d'un type primitif |
(Paramètre) Propriété de sens | La méthode Java a "retour <type de paramètre>" si elle est définie sur "retour" ; sinon, elle ajoute "<type de paramètre> <nom de paramètre>" à la signature de la méthode |
(Paramètre) Propriété de multiplicité | Voir le tableau suivant pour avoir des informations sur la multiplicité |
Propriété | Champ Java avec le même nom* et la même visibilité |
(Propriété) Propriété isStatic | Le champ Java est "statique" si vrai |
(Propriété) Propriété isLeaf | Le champ Java est "final" si vrai |
(Propriété) Propriété de type | Le champ Java a le type indiqué. Il peut s'agir d'une autre classe ou d'un type primitif |
(Propriété) Propriété de multiplicité | Voir le tableau suivant pour avoir des informations sur la multiplicité |
* Certains caractères ne sont pas valides dans les identificateurs Java (comme un espace). La transformation Java remplace automatiquement les caractères non valides par un trait de soulignement (_) afin de créer un identificateur valide. Ce remplacement peut occasionner des conflits de nom qui empêchent la transformation de générer des interfaces et des classes de duplication. Vous pouvez utiliser la fonction de validation pour détecter ces problèmes. Pour éviter ces problèmes de remplacement, renommez les éléments ou utilisez la fonction de mappage pour indiquer un nom secondaire qui ne modifie pas le modèle source.
Types Java pour les propriétés et les paramètres
Multiplicité UML | Type Java généré |
0..1 | Attribut, pointeur ou référence (par exemple, Chaîne) |
1 | Attribut (par exemple, Chaîne) |
N (N > 1) | Tableau (par exemple, Chaîne[]) |
1..*, *, ou x..y | Collection, voir le tableau suivant |
Collections Java pour multiplicités 1..*, * ou x..y
Propriété isOrdered | Propriété isUnique | Collection UML |
Type Java généré |
True | True | Ensemble ordonné |
java.util.SortedSet |
True | False | Séquence |
java.util.List |
False | True | Défini |
java.util.Set |
False | False | Sac |
java.util.Collection |
Avancé
L'onglet Avancé fournit certaines options de génération
de code. cliquez sur Modélisation > Transformation > Configurer des transformations,
sélectionnez une configuration UML vers Java, puis sélectionnez l'onglet
Avancé. L'onglet contient la case à cocher
Générer "getter " et "setter" et le groupe
Collections.
Lorsque cette cas est cochée, la transformation génère une zone
privée avec des méthodes "getter" et "setter" pour chaque propriété UML. Si la valeur "true" est attribuée
à isLeaf (final) ou isReadOnly de la propriété, aucun "setter" n'est généré. Si la valeur "true" est
attribuée à isDerived de la propriété, l'implémentation de "setter" est vide.
Vous pouvez spécifier les collections générées par la transformation UML vers Java dans le groupe
Collections. Par exemple, sélectionnez "java.util.Vector" dans la liste
déroulante Séquence pour que la transformation génère des vecteurs et non des
listes. Vous pouvez également préciser des classes de collection personnalisées en entrant le nom de la classe dans
la liste déroulante. Si vous entrez "custom.Bag" dans la liste déroulante
Sac, la transformation génère des sacs et non des collections.
Lorsque vous cliquez sur Créer un modèle de mappage, la
transformation Java crée un modèle de mappage qui est un modèle séparé
avec un artefact pour chaque élément transformable. L'artefact fait référence
à l'élément transformable original et porte le même nom. Pour indiquer un nom secondaire pour l'élément original, entrez un nom secondaire dans la propriété de nom de
fichier de l'artefact. Si vous ne modifiez pas la propriété de nom de fichier
de l'artefact, la transformation génère l'élément avec le nom par défaut de
l'artefact.
Si vous indiquez des noms secondaires pour les packages, ces noms secondaires
affectent tous les discriminants de ce package (à moins que le discriminant ne
définisse un nom complet). Le tableau suivant donne une liste d'exemples de noms
secondaires.
Source UML | Nom de fichier d'artefact de mappage | Java généré |
"Package1" | "" | "Package1" |
"Package2" | "com.ibm.test" | "com.ibm.test" |
"Class1" dans Package1 | "" | Package1.Class1 |
"Interface1" dans Package2 | "ITestable" | com.ibm.test.ITestable |
"Class2" dans Package2 | "com.ibm.test.Testable" | com.ibm.test.Testable |
Pour utiliser un modèle de mappage, suivez les étapes ci-dessous :
1. Basculez en perspective Modélisation.
2. Dans la vue Explorateur de modèle, cliquez sur un modèle UML.
3. Sur la barre de menus, cliquez sur Modélisation > Transformation > Configurer les transformations.
4. Créez une nouvelle transformation UML vers Java (par exemple, nommez
la transformation Utiliser le mappage.)
5. Sur la page Mappage, cliquez sur Transformer en utilisant un modèle de mappage.
6. Cliquez sur le modèle de mappage que vous avez créé précédemment et sur
Exécuter.
Lorsque la transformation s'exécute, elle utilise n'importe lequel des noms
secondaires que vous avez indiqués dans le modèle de mappage.