View
7.812
Download
4
Category
Preview:
Citation preview
11
GÉNÉRATION AUTOMATIQUE DU CODE JAVA
Ministère de l'enseignement supérieur et de la recherche scientifique
Préparé par :
MOHAMED OULD YESLEM
HERAGMI KAMEL EDDINE
Centre universitaire de Souk-AhrasCentre universitaire de Souk-Ahras
Dirigé par :
Dr ABDELKRIM AMIRAT
Soutenance en vue de l’obtention du diplôme de LICENCE EN INFORMATIQUE
1. Introduction
2. Modélisation orientée Objet
3. Types de relation
− Héritage
− Association
− Agrégation
− Composition
− Implémentation
− Dépendance
− Classe-association
4. Document XMI
5. Approche de Génération du code
6. Implémentation des relations en java
7. Développement de l’outil(GenJava)
Plan de travail
2
Déploiement
Système réel
RéalisationConceptionAnalyse
Introduction
Modèle d’Analyse
Modèle de Conception
Modèle de Réalisation
Modèle de Déploiement
UML (Unified Modeling Language)
3
4
Introduction
Problématique
Objectif
La conception qui faite par UML doit être implémenter avec un langage de programmation pour réaliser un système réel , cette implémentation peut être automatiser ,a l’aide d’un modèle intermédiaire (XMI).
Model.UML Fichier.XMI Code source
1. réduire le temps de développement,
2. éviter les erreurs de programmation,
3. Facilite le développement de logiciel
Autres méthodes Booch’91 OMT-1 OOSE Partenaires
Booch’93 OMT-2
Méthode unifiée 0.8
UML 0.9
UML 1.0
Octobre 1995
Janvier 1997
Juin 1999
UML 2.0
Historique d’UML
5
UML1.3
Les 13 diagrammes UML
6
Modélisation orientée Objet
Résumé• UML est une notation, pas une méthode.• UML est un langage de modélisation objet.• UML convient pour toutes les méthodes objet.• UML est dans le domaine public.
Programmation Orientée Objetmodéliser informatiquement des éléments d'une partie du monde réel en un ensemble d'entités informatiques (objets)
Intérêt d'une méthode orientée objet • définir le problème à haut niveau sans rentrer dans les spécificités du langage• définir un problème de façon graphique• utiliser les services offertes par l’objet sans rentrer dans le détail de programmation (Encapsulation)• Réutilisation du code
7
Notion d’ObjetUne abstraction du monde réel c.-à-d.. des données informatiques
regroupant des caractéristiques du monde réel
Exempleune personne, une voiture, une maison, ...
Caractérisation d’un objetIdentité
Attributs
Méthodes
FIAT-UNO-17 : Voiture
233434 : Numéro de série1500 kg : Poids8864 YF 17 : Immatriculation133 000 : kilométrage
Démarrer ()Arrêter()Rouler()
Modélisation orientée objet(3)
8
Notion de Classe• Structure d'un objet, c.-à-d. une déclaration de l'ensemble des entités
qui composeront l’objet• Un objet est donc "issu" d'une classe, c'est le produit qui sort d'un
moule
Notation un objet est une instanciation (occurrence) d'une classe
Modélisation orientée objet(4)
Nom_de_la_classe
#Atribut1: type-Attribute2: type
+Methode1()-Methode2()
…
9
FIAT-UNO-17
233434 : Numéro de série1500 kg : Poids8864 YF 17 : Immatriculation33 000 : kilométrage
Renault-Clio-17
5323454 : Numéro de série1500 kg : Poids64 YFT 17 : Immatriculation23 000 : kilométrage
Modélisation orientée objet(5)
Voiture
+Numero_de_serie: int+Poids: double+Immatriculation: String+Kilometrage: double
+Demarrer()+Arreter()+Rouler()
10
3434 : Numéro de série1700 kg : Poids8634 YGG 75 : Immatriculation15 000 : kilométrage
Peugeot-206-75
Visibilité des attributs définissent les droits d'accès aux données (pour la classe elle-même, d'une classe héritière, ou bien d'une classe quelconque)
Publique (+) les classes peuvent accéder aux données et méthodes d'une classe définie avec le niveau de visibilité public
Protégée (#): l'accès aux données est réservé aux fonctions des classes héritières
Privée (-): l'accès aux données est limité aux méthodes de la classe elle-même
Nom_de_la_classe
#Atribut1: type-Attribute2: type
+Methode1()-Methode2()
…
11
Modélisation orientée objet (6)
Principe classe dérivée contient les attributs et les méthodes de sa superclasse
Spécialisation Généralisation
étendre les propriétésd'une classe, sous forme de sous-classes
factoriser les propriétésgroupe de classes sousforme de super-classe
Chaque personne de l’université est identifiée par son nom, prénomLes étudiants ont plus un noEtudiantLes enseignants ont un numéro de téléphone interne
Types de relation : Héritage
12
13
Navigabilité Par défaut une association est navigable dans les deux sens
Chaque instance de voiture a un lien vers le propriétaireChaque instance de Personne a un ensemble de lien vers les voitures
Restriction de la navigabilitéLe service de contravention est associé à une ou plusieurs voiture(s) La voiture ne connaît pas service de contravention
Navigable
Types de relation : Association
14
Multiplicités
1 : la classe est en relation avec un et un seul objet de l’autre classe
1..* : la classe est en relation avec au moins un objet de l’autre classe
0..* : la classe est en relation avec 0 ou n objets de l’autre classe
0..1 : la classe est en relation avec au plus un objet de l’autre classe
Une voiture est achetée par une et une seule personne Une personne peut acheter
0 ou n voitures
Types de relation : Association
15
Type de relations A « contient » des instances de B,
Propriétés de l’agrégation La suppression de A n’implique pas la suppression de B L'élément agrégé peut être partagé
Exemples : L’enseignant est un composantd’une (ou plusieurs) équipe de recherche d’un seul département
La disparition d’une équipe derecherche n’entraine pas la disparition d’un enseignant
BA
Agrégat
Types de relation : Agrégation
16
La suppression de A entraine la suppression de B
Exemple:
« Une présentation PowerPoint est composé de transparents »
La suppression de la présentation entraine la disparition des transparents qui la compose
Types de relation : Composition
Types de relation : Implémentation
17
Une interface est la spécification externe (en terme d’opérations) d’une classe.
Une interface peut donc contenir des opérations. Une classe réalise une interface si elle est capable d’exécuter
toutes les opérations de l’interface. Une classe peut implémente plusieurs interfaces
Notation
Interface
Types de relation : Dépendance
18
La notion de dépendance est plus floue que les précédentes. Il est difficile de faire une nomenclature complète des possibles relations de dépendance.
Notation:
ClassUn ClassException
Types de relation : Classe-association
19
Une classe-association possède les caractéristiques des associations et des classes : elle se connecte à deux ou plusieurs classes et possède également des attributs et des opérations.
Notation:
Diagramme de classes
20
Exemple complet
21
XMLNe tient pas compte de la mise en forme, mais seulement du contenu.Un système de balises permet de décrire les éléments de structure du document, ainsi que les relations entre ces élémentsChaque balise peut disposer d'un ou plusieurs attributs
Document XMI
<EtatCivile>
<Nom>Heraguemi</Nom>
<Prenom>Kamel eddine </Prenom>
<Naicence>
<Date>
<Jour>30</Jour>
<Moi>05</Moi>
<Annee>1989</Annee>
</Date>
</Naicence>
</EtatCivile>
22
XMI (XML Métadata Interchange)Exprimer les concepts de la modélisation objet.possible d'encoder un modèle UML dans un fichier au format XML
Document XMI (suite)
23
1. Etapes de génération de code
Génération structurelle de code Génération comportementale du code Génération de la spécification
2. Approche Il existe 2 approches principaux:
mapping direct des modèles UML vers un langage de programmation
Génération de code avec un modèle intermédiaire
Approche de génération du code
24
Modèle UML
Modèle JAVA
Modèle C#
Description de la Platform C#
Description de la Platform JAVA
Transfo
rmati
on
Transfo
rmati
on
Approche de génération du code (suite)
Figure 3. 2- Génération de code avec Un modèle Intermédiaire.
T
ran
sform
ati
on
Tra
nsfo
rmatio
n
Modèle UML
Modèle JAVA
Modèle Intermédiaire
Description de la Platform JAVA
Génération de code avec Un modèle Intermédiaire
Génération de code avec le mapping direct
Implémentation des relations en Java
25
26
Implémentation des relations en Java (2)
27
Implémentation des relations en Java (3)
28
Développement de l’outil (GenJava)
Environnement de développement
Environnement matériel
• « HP » avec un processeur Intel(R) Core(TM)2 Duo CPU T5870@ 2.00GHz 2.00 GHz d'une Ram de 2 G et d'un disque dur de 250 Go
• « Acer » avec un processeur Intel Pentium dual-core processor de vitesse 800 MHz, doté d'une Ram de 2 G et d'un disque dur de 160 Go.
Environnement logiciel
• Environnement de développement : Eclipse Galileo 3.5.• Outil de conception : StarUML 5.0.2.
29
Développement de l’outil (GenJava)(suite)
Vue dynamique de GenJava
Etat Initiale
Création de Workspace
Etat 3Etat 2
Charger XMI
Nettoyage
Traitement
Design Model.xml
Classe.java
Etat Finale
Charger StarUML
Exportation
Model. uml
File.xml
30
Nettoyage
Design Model.xml
Ce fait a l’aide de deux classes responsable sur ce traitement sont la classe principal.java et la classe parser.java , la première recherche l’emplacement
de design model et la deuxième pour faire l’extraction de design model
Etape de nettoyage
Design Model.xml : Contient seulement tous les concepts qui concerne le diagramme de classe
Vue statique de GenJavaLa structure interne de GenJava et Compose en 3 paquetages :
1. Classe_Interface_Pack.2. Relation.3. Interface.
31
Etape de Traitement
Cl_int_Pack
SwingInterface
Relation
USE
US
EU
SE
Diagramme de paquetage de GenJava
Le paquetage « Relation » Contient les Classes qui représentent les déférentes relations représenter par
Diagramme de classe , Comme l’héritage ,l’implémentation …
Le paquetage « CL_Int_Pack » Contient les Classes qui représentent les déférents concepts représenter par Diagramme de classe , Comme Les classes ,les
Interfaces …,
Le paquetage « Interface » Contient les Classes qui construire l’interface de GenJava
32
Extraire les concepts qui concerne
les méthodes« UML:Operation»
Extraire les concepts qui concerne
les parametre des méthodes
« UML:Parametre»
Extraire les concepts qui concerne les attributs
« UML:Attribut»
Extraire tout les concepts qui concernant
les classes exceptions« UML:ClassException»Extraire tout les concepts
qui concerne les classes association
« UML:AssociationClass »
Extraire tout les concepts qui
concerne les classes
« UML:Class »
Extraire tous les concepts qui concerne
les interfaces« UML:Interface »
Crée les fichiers qui concerne
chaque concept
Scanner le fichier XML pour obtenue un fichier Design model.xml. et Extraire les package
« UML:Package»
Extraire les valeurs de chaque concepts a partir de
Design Model. xmlExtraire les types
des attributs et des méthodes
«UML: DataType »
Etape de Traitement (2)
33
Relation
Generalisation
Dependance
Association
+1
1..*
1 2 Associationend
Implementation
Multiplicite
Extraire les concepts qui concerne
les relations associations« UML:Association »
Extraire les concepts qui concerne
Les sous relation associationEnd« UML:AssociationEnd »
Extraire les concepts qui concerne
les implémentations« UML:Realization »
Extraire les concepts qui concerne
les dépendance s« UML:Dependency »
Extraire les concepts qui concerne
les généralisations « UML:Generalization »
Extraire les concepts qui concerne
les multiplicités « UML:Multiplicity
»
Etape de Traitement (3)
Fonctionnement de GenJava
34
Icone GenJava
Changer le Workspace
Chemin de Workspace
validation de projet
Nom projet
La page d’accueil de GenJava
Fonctionnement de GenJava (2)
35
Interface de travaille
On clic sur le Botton(StarUML) pour ouvrir
StarUml et crier le diagramme de classe
Fonctionnement de GenJava(3)
36
Exemple
Fonctionnement de GenJava (4)
37
Ouvrir le fichier XMI
On clic sur le Botton(Open XMI) pour Ouvrir le fichier XMI
Précédamant crier
Fonctionnement de GenJava (5)
38
Fichier XMI
On clic sur le Botton(Generation) pour générer les codes Java
propre
Fonctionnement de GenJava (6)
39
Résultat de la class1 (code Java propre)
Fonctionnement de GenJava (7)
40
Résultat de la class2 (code Java propre)
Fonctionnement de GenJava (8)
41
Résultat de la class3 (code Java propre)
Fonctionnement de GenJava (9)
42
Résultat de la class4 (code Java propre)
Fonctionnement de GenJava (10)
43
Résultat de l’interface (code Java propre)
Fonctionnement de GenJava (11)
44
Résultat de l’exception1 (code Java propre)
Fonctionnement de GenJava (13)
45
Résultat de l’exception2 (code Java propre)
46
Recommended