Génération de code JAVA

Preview:

DESCRIPTION

Module Application de Synthèse UML/JAVA. Génération de code JAVA. à partir d’un modèle UML sous PowerAMC V. Deslandres, IUTA Lyon. Introduction. Génération totale ou restreinte La génération de code, ça n’est pas immédiat : processus en 3 étapes - PowerPoint PPT Presentation

Citation preview

Génération de code JAVA

à partir d’un modèle UMLsous PowerAMC

V. Deslandres, IUTA Lyon

Module Application de Synthèse UML/JAVA

module UML/JAVA 2

Introduction

Génération totale ou restreinte La génération de code, ça n’est pas

immédiat : processus en 3 étapes Compléter le modèle d’analyse (nous,

on se limite au diagramme de classes) modèle de conception

Vérifier le modèle Générer le code

module UML/JAVA 3

Génération partielle de code Il est possible de restreindre la portée de la

génération au contenu d'un package particulier

C’est 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.

module UML/JAVA 4

Processus de génération de code

Étape 1: Ajouter au MOO d’analyse les détails d’implé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…

3 étapes :

module UML/JAVA 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.

module UML/JAVA 6

Paramé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

module UML/JAVA 7

Degré de sévérité de la vérification

erreur

avertissement

correction automatique par l’AGL

En cliquant sur les icônes, on ajuste la sévérité à la règle

module UML/JAVA 8

Rè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.

module UML/JAVA 9

Règles de vérification de PowerAMC

Pour voir toutes les règles de vérification du modèle MOO :

Regarder « Guide de l’utilisateur » Chapitre 14 – Gestion des MOO Page « Objets contrôlés lors de la

vérification de modèle »

module UML/JAVA 10

Si on désire utiliser un SGBD et JDBC: Depuis le MOO de conception, générer d’abord

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

Une fois le MOO complété et vérifié… deux alternatives :

Étape 3 du Processus :génération de code vers un SGBD

module UML/JAVA 11

Si on souhaite fonctionner avec des fichiers (sérialiser les objets créés lors de l’application Java) :

Générer directement les classes Java depuis le MOO Conception

Étape 3 avec des fichiers

module UML/JAVA 12

Correspondance 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 »

module UML/JAVA 13

Correspondance Objet/RelationnelClasse TableAttribut ColonneOpération Requêtes SELECT ou UPDATE

associées à une tableAssociation 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 l’utilisateur

Cf Guide Utilisateur, Chapitre 14 - MOO, « Mise en correspondance

d'objets dans un MOO »

MPD

module UML/JAVA 14

Attention !

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"

module UML/JAVA 15

Remarque

Si on veut implémenter le modèle d’analyse avec différents langages (.NET, XML, JAVA) : mieux vaut générer un MOO d’abord

par type d’implémentation avant de transformer le MOO d’analyse

en MOO de conception Puis faire la génération de code

depuis chaque MOO obtenu

module UML/JAVA 16

Générer plusieurs MOO

Phase d’analyse

Phase de conception

Phase de mise en œuvre

MOOanalyse

MOOConception(VB.NET)

MOOConception

(XML)

MOOConception

(Java)

génération de modèles

génération de codes

codeVB.NET

FichiersXML

ClassesJava

module UML/JAVA 17

Sur la génération de modèles à partir du MOO…

On peut donc générer à partir d’un MOO : des MPD, d’autres 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 d’une

ancienne génération

module UML/JAVA 18

MàJ un modèle généré précédemment

En fait l’AGL 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)

module UML/JAVA 19

Modèle de conception

Définir les identifiants Identifiant de MOO = clef primaire de MPD Fenêtre Propriété de l’attribut Case à cocher dans l’onglet Détail :

« identifiant primaire »

On obtient la fenêtre Propriété en cliquant sur l’attribut de la classe dans le navigateur d’objet

(ou Double clic sur la ligne de l’attribut depuis la fenêtre Propriété de la Classe)

module UML/JAVA 20

Créer un identifiant

double-clic

module UML/JAVA 21

Modèle de conception

Identifiants combinés(clef relative)

Lorsqu’un identifiant est défini à partir d’une 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 l’identifiant.

module UML/JAVA 22

Création d’une clef relativeFenêtre de la Classe

module UML/JAVA 23

Gé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.

module UML/JAVA 24

Pour 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)

module UML/JAVA 25

Sé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é

module UML/JAVA 26

Résultats

module UML/JAVA 27

Pour l’application DA :… ou encore ODBC

Sérialisation+ on connaît déjà+ c’est facile+ pas besoin d’ORACLE

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

Sérialisation+ on connaît déjà+ c’est facile+ pas besoin d’ORACLE

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

qu’on n’a qu’entrevu+ avantages du SGBD

(données cohérentes, clefs, jointures…)

+ MySQL server, OK chez soi

+ mieux noté dans l’évaluation

- Plus complexe- Choix d’ORACLE :

exécution solo à l’IUT

JDBC+ on met en œuvre ce

qu’on n’a qu’entrevu+ avantages du SGBD

(données cohérentes, clefs, jointures…)

+ MySQL server, OK chez soi

+ mieux noté dans l’évaluation

- Plus complexe- Choix d’ORACLE :

exécution solo à l’IUT

module UML/JAVA 28

Pour l’application 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 d’installation pas vue en cours ?

ODBC+ avantages du SGBD

(données cohérentes, clefs, jointures…)

+ on utilise ACCESS, plus simple et OK chez soi

- Procédure d’installation pas vue en cours ?

module UML/JAVA 29

Configuration

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…

module UML/JAVA 30

Configuration avec l’item Variables

boîte de dialogue Options générales (menu Outils)

module UML/JAVA 31

Options de génération pour JavaOptions 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 d’abord

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.

module UML/JAVA 32

Reverse Engineering

Pour ceux qui auront fini Une fois l’application réalisée en

JAVA, reconstruire le modèle UML associé par « Reverse Engineering » et

comparer avec le modèle initial !

Recommended