Title: G
1Génération de code JAVA
Module Application de Synthèse UML/JAVA
- à partir dun modèle UML
- sous PowerAMC
- V. Deslandres, IUTA Lyon
2Introduction
- Génération totale ou restreinte
- La génération de code, ça nest pas immédiat
processus en 3 étapes - Compléter le modèle danalyse (nous, on se limite
au diagramme de classes) - modèle de conception
- Vérifier le modèle
- Générer le code
3Génération partielle de code
- Il est possible de restreindre la portée de la
génération au contenu d'un package particulier - Cest très utile lorsque les différents packages
sont affectés à différents développeurs. - Chacun d'entre eux peut alors générer son package
indépendamment des autres. - La génération depuis un package permet de
produire un modèle indépendant.
4Processus de génération de code
3 étapes
- Étape 1 Ajouter au MOO danalyse les détails
dimplémentation nécessaires pour obtenir un MOO
dit de conception - Identifiants
- Types des données, visibilité
- Supprimer les relations entre les classes et les
transformer en attributs - Migrer un rôle navigable en tant qu'attribut dans
une classe - Définir les objets persistants
- Classes techniques (calendrier, classes
abstraites, design pattern) - Etc
5Étape 2 Vérification du modèle
- La procédure de génération de fichiers source
.java, d'objets PowerBuilder, ou de fichiers XML
commence toujours par une vérification de la
validité du MOO - Si le modèle est incorrect ou si une erreur est
détectée, la génération est interrompue.
6Paramétrage de la vérification
- Les erreurs et avertissements sont affichés dans
la fenêtre Paramètres de vérification du modèle. - Vous pouvez définir le degré de sévérité pour les
problèmes que la vérification détecte - et faire en sorte que certains problèmes soient
corrigés automatiquement
7Degré de sévérité de la vérification
erreur
avertissement
correction automatique par lAGL
8Règles de vérification de PowerAMC
- Par exemple
- Les noms et les codes de classe doivent être
uniques dans le modèle ou le package (dans le
même espace de nom) - Correction auto modifie le nom ou le code de
classe en y ajoutant un numéro - Lorsqu'il existe une réalisation entre une classe
et une interface, vous devez mettre en oeuvre les
opérations de l'interface au sein de la classe - Les fichiers externes incorporés dans les classes
doivent avoir un chemin d'accès valide - Etc.
9Règles de vérification de PowerAMC
- Pour voir toutes les règles de vérification du
modèle MOO - Regarder Guide de lutilisateur
- Chapitre 14 Gestion des MOO
- Page Objets contrôlés lors de la vérification
de modèle
10Étape 3 du Processus génération de code vers un
SGBD
Une fois le MOO complété et vérifié deux
alternatives
- Si on désire utiliser un SGBD et JDBC
- Depuis le MOO de conception, générer dabord un
Modèle Physique de Données (MPD) - Générer ensuite les tables de la Base de Données
avec le SGBD souhaité - Rq on peut choisir le SGBD lors de la génération
du MPD
11Étape 3 avec des fichiers
- Si on souhaite fonctionner avec des fichiers
(sérialiser les objets créés lors de
lapplication Java) - Générer directement les classes Java depuis le
MOO Conception
12Correspondance objet-relationnel
- La correspondance O/R permet de gérer la
persistance des objets dans une base de données
relationnelle. - Ainsi dans un MOO, vous pouvez lier des classes à
des tables - en générant dans PowerAMC un modèle physique de
données, à partir du modèle orienté objet - cette opération est appelée correspondance
objet-relationnel
13Correspondance Objet/Relationnel
MPD
- Classe ? Table
- Attribut ? Colonne
- Opération ? Requêtes SELECT ou UPDATE
- associées à une table
- Association ? Référence, référence de vue,
- table ou vue
- La correspondance O/R permet notamment
- de définir les requêtes SQL pour les opérations
des classes concernées - Deux types de correspondances
- Automatiques
- Définies par lutilisateur
Cf Guide Utilisateur, Chapitre 14 - MOO, Mise
en correspondance d'objets dans un MOO
14Attention !
- Création des noms de tables avec guillemets !
- (fonction de la version du SGBD mentionnée ??)
- ? utiliser les guillemets aussi dans les ordres
SQL - select from "Article"
15Remarque
- Si on veut implémenter le modèle danalyse avec
différents langages (.NET, XML, JAVA) - mieux vaut générer un MOO dabord par type
dimplémentation - avant de transformer le MOO danalyse en MOO de
conception - Puis faire la génération de code depuis chaque
MOO obtenu
16Générer plusieurs MOO
Phase danalyse
Phase de conception
Phase de mise en œuvre
17Sur la génération de modèles à partir du MOO
- On peut donc générer à partir dun MOO
- des MPD, dautres MOO, mais aussi des MCD !
- Deux possibilités depuis le MOO
- Créer un nouveau modèle (option par défaut)
contenant les objets convertis - MàJ un modèle existant, issu dune ancienne
génération
18MàJ un modèle généré précédemment
- En fait lAGL va créer un modèle par défaut
contenant les objets convertis depuis le MOO puis
les fusionner ensuite dans un modèle existant. - Des options sont disponibles pour la fusion
- vous pouvez choisir de mettre à jour, supprimer
ou ajouter des objets dans le modèle existant
(modèle à fusionner, dans le volet droit) en
fonction des modifications apportées dans le
modèle par défaut (dans le volet gauche)
19Modèle de conception
- Définir les identifiants
- Identifiant de MOO clef primaire de MPD
- Fenêtre Propriété de lattribut
- Case à cocher dans longlet Détail
identifiant primaire - On obtient la fenêtre Propriété en cliquant sur
lattribut de la classe dans le navigateur
dobjet - (ou Double clic sur la ligne de lattribut depuis
la fenêtre Propriété de la Classe)
20Créer un identifiant
double-clic
21Modèle de conception
- Identifiants combinés
- (clef relative)
- Lorsquun identifiant est défini à partir dune
combinaison d'attributs de classe - Créer un nouvel identifiant pour la classe
(onglet Identifiant), puis cliquer sur l'outil
Afficher les propriétés. - Cliquer sur l'onglet Attributs
- Cliquer sur l'outil Ajouter des attributs et
sélectionner les attributs qui composent
lidentifiant.
22Création dune clef relative
Fenêtre de la Classe
23Génération de code JAVA
- Vous pouvez générer des fichiers source Java à
partir des classes et interfaces d'un modèle - Classes que vous aurez sélectionnées
- Un fichier séparé, doté du suffixe .java, est
généré pour chaque classe ou interface choisie - Un fichier de génération est également créé. Vous
ne pouvez générer du code qu'à partir d'un seul
modèle à la fois. - Rappel une source Java peut contenir plusieurs
classes, alors qu'un fichier Java .class ne peut
contenir qu'une seule classe.
24Pour générer le code Java
- Depuis le MOO conception
- Sélectionnez Langage-Générer du code Java pour
afficher la boîte de dialogue de génération.
(Sélectionner les classes voulues en cas de
génération restreinte)
25Sélection des tâches
(tâches à exécuter lors de la génération)
On peut ne rien sélectionner ! Bien souvent le
code java devra être complété
26Résultats
27Pour lapplication DA ou encore ODBC
- Sérialisation
- on connaît déjà
- cest facile
- pas besoin dORACLE pour faire tourner
- - pas de SGBD (on doit gérer soi-même la
cohérence des données) - - Moins bien noté dans lévaluation
- JDBC
- on met en œuvre ce quon na quentrevu
- avantages du SGBD (données cohérentes, clefs,
jointures) - MySQL server, OK chez soi
- mieux noté dans lévaluation
- Plus complexe
- Choix dORACLE exécution solo à lIUT
28Pour lapplication DA sérialisation, JDBC ou .
- ODBC
- avantages du SGBD (données cohérentes, clefs,
jointures) - on utilise ACCESS, plus simple et OK chez soi
- Procédure dinstallation pas vue en cours ?
29Configuration
- On a la possibilité de définir les exécutables
Java qui seront utilisés dans le processus de
génération de code - jar, java, javac, javadoc
30Configuration avec litem Variables boîte de
dialogue Options générales (menu Outils)
31Options de génération pour Java
- Options Pour Description
- Critère principal de tri des membres de
classe Java Trie les attributs et opérations par
type ou par visibilité - Génération des imports de package Java A
utiliser pour déclarer l'importation de tout le
package - Tri des membres de classe par type Java Trie les
attributs et opérations par type dabord - Tri des membres de classe par visibilité Java Trie
les attributs et opérations par visibilité - Génération du fichier build.xml Ant Java Génère
le fichier build.xml. - (Vous pouvez utiliser ce fichier si
vous avez installé Ant) - Génération d'opérations Get et Set de champ
- CMP dans les interfaces de composant EJB Génère
des opérations Get et - Set de champ CMP dans les interfaces EJB
- Génération d'opérations Get et Set de champ CMR
- dans les interfaces de composant EJB Génère des
opérations Get et - Set de champ CMR dans les interfaces EJB
- Ajout du code source des classes Java dans le
- fichier JAR EJB Inclut le code des classes
Java dans le fichier JAR - Etc.
32Reverse Engineering
- Pour ceux qui auront fini
- Une fois lapplication réalisée en JAVA,
reconstruire le modèle UML associé - par Reverse Engineering et comparer avec le
modèle initial !