Chapitre VII: Préparation de
l’implémentation
partie 2: uml vers Java
Module Langage de modélisation UML
Année Universitaire
2016-2017
PLAN
PLAN
PLAN
Introduction
Règles de passage: Les Packages
Règles de passage: Les classes
Règles de passage: Attributs & méthodes
Règles de passage: Associations Binaires
Règles de passage: Associations particulières
Exemple d’outils de génération de code
2
De UML vers Language orienté objet
Dans ce chapitre,
on va mettre
l’accent sur les
règles de
passage du
diagramme de
classes de
conception vers
le code Java
Diagramme de classes
d’analyse
3
PLAN
PLAN
Règles de passage: Les Packages
UML
JAVA
package catalogue;
…
package bibliotheque;
import catalogue;
4
PLAN
PLAN
Règles de passage: Les classes
UML
public class Personnel {
JAVA
…
}
public abstract class Agent {
…
}
public interface
Irecipent {
}
5
PLAN
PLAN
Règles de passage: Attributs & méthodes
UML
Personnel
+matricule:String
-nom:String
Publicité
-prenom:String
-ageMin:int=18
#Adresse:String
+calculerDureePret():int
+getAge():int
JAVA
public class Personnel {
public String matricule;
private String nom;
private String prenom;
private static int ageMin = 18;
protected String Adresse;
public int calculerDureePret()
{…..}
public int getAge()
{…}
}
6
Règles de passage: Associations Binaires
PLAN
PLAN
« bidirectionnelles »
UML
JAVA
Homme
+Id_homme:int
mari
0..1
epouse
0..4
Femme
+Id_femme: int
public class Homme {
public int IdHomme;
private Femme[] epouse=new Femme[4];
…
}
public class Femme {
Public int IdFemme;
private Homme mari;
…
}
Une association bidirectionnelle se traduit simplement par une paire de références, une dans
chaque classe impliquée dans l’association.
Les noms des rôles aux extrémités d’une association servent à nommer les variables de type
référence.
7
Règles de passage: Associations Binaires
PLAN
PLAN
« navigabilité »
UML
JAVA
public class Personnel {
private Rapport[] lesRapports;
…
}
public class Rapport {
…
}
public class Personnel {
…
Publicité
}
public class Rapport {
private Personnel lePersonnel;
…
}
Les associations navigables se traduisent par du code Java qui dépend de la multiplicité de
l’extrémité concernée,
8
Règles de passage: Associations Binaires
PLAN
PLAN
« Reflexive »
UML
JAVA
public class Personne {
private Personne[] subordonne;
private Personne chef ;
…
}
Une association réflexive se traduit simplement par une référence sur un objet de la
même classe
9
Règles de passage: Associations Particulières
PLAN
PLAN
«Généralisation »
UML
Personnel
-matricule:String
-nom:String
-prenom:String
#Adresse:String
JAVA
public class Personnel {
private String matricule;
private String nom;
private String prenom;
protected String Adresse;
}
Comptable
-iD:int
public class Comptable extends Personnel {
private int iD;
}
Le concept UML de généralisation se traduit directement par le mécanisme de l’héritage
dans les langages objet.
10
Règles de passage: Associations Particulières
PLAN
PLAN
«Agrégation »
JAVA
UML
public class Association {
private List <membre> membres;
}
public class Membre {
}
11
Règles de passage: Associations Particulières
PLAN
PLAN
Publicité
« Composition »
UML
JAVA
public class Voiture {
private Moteur moteur;
public Voiture()
{
Moteur = new Moteur();
}
}
public class Moteur {
}
12
Règles de passage: Associations Particulières
PLAN
PLAN
« Réalisation »
UML
JAVA
public class Livre implements IImprimable, IEmpruntable {
private String titre;
private String auteur;
private ISBN isbn;
public void imprimer(){
…
}
public void emprunter(){
…
}
public void retourner(){
…
}
}
Une classe UML peut implémenter plusieurs interfaces.
13
Règles de passage: Associations Particulières
« Réalisation+use »
class interface IUsine {
……}
public class Usine implements Iusine{
….. }
public class Client {
IUsine u1 = new Usine();
…….
}
14
Quelques outils de génération de code
• Papyrus UML (Eclipse Public Licence Multiplateforme)
– En Java
– En C++ avec le composant CDT d’Eclipse.
– En Ada.
• StarUML (GPL – Windows uniquement)
La génération de code est possible de base en C++, C# et Java.
• ArgoUML (Eclipse Public Licence – Multiplateforme)
Génération de code en Java, C++, C# et PHP.
• Open ModelSphere (GPL – Multiplateforme)
Il est capable de générer du code Java à partir du diagramme de classes.
15