0% ont trouvé ce document utile (0 vote)
5 vues54 pages

Implémentation UML en Java: Guide Pratique

Transféré par

ahmed KHLIFI
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues54 pages

Implémentation UML en Java: Guide Pratique

Transféré par

ahmed KHLIFI
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 3: Implémentation d’un

diagramme de classes UML en Java

Cours Ingénierie Dirigée par les modèles


Niveau: II3 ILSI
Enseignante: Rim DRIRA
[Link]@[Link]
Bureau 215

AU: 2016/2017
Plan
Partie1: Rappel UML: L’essentiel sur la modélisation
des classes et objets
 Le diagramme de classes
 La classe
 L’association
 Spécialisation/Généralisation
 Le digramme d’objets
Partie2: Implémentation en Java
 Traduction des classes
 Traduction des attributs
 Traduction des méthodes
 Traduction des associations

2 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Partie1: Rappel UML:
L’essentiel sur la
modélisation des classes et
objets

3
Définition
Un diagramme de classes:

 Décrit la structure interne d’un système, sous


forme de classes (attributs + méthodes) et de
relations entre classes (associations).

 Ne montre pas comment utiliser les méthodes =


description statique.

4 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


La classe 1/5
Définition
 Décrit un ensemble d’objets (instances de la classe).
 Décrit leurs propriétés communes (attributs, méthodes,
relations).
 Classe = Type + Module
 Type : « fabrique » d’instances (objets) ayant les mêmes
propriétés et les mêmes comportements
 Module : interface visible + implémentation cachée
 Utilisation possible sans connaître l’implémentation;
 Si l’implémentation change sans nécessiter la modification de
l’interface alors le système n’a pas à être modifié.

5 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


La classe 2/5
Représentation simplifiée
La représentation simplifiée d’une classe est
constituée de trois parties
 Partie1: contient le nom de la classe NomClasse
 Partie2: contient les attributs nomAttribut1
 Les attributs contiennent l’information portée par les nomAttribut2
objets instanciés à partir de la classe nomMéthode1()
 L’ensemble des attributs forme la structure de ces nomMéthode2()
objets
 Partie3: contient les méthodes qui:
 Correspondent aux services offerts par ces objets
 Peuvent modifier la valeur des attributs
 L’ensemble des méthodes forme le comportement de
l’objet

6 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


La classe 3/5 NomClasse
nomAttribut1
nomAttribut2
nomMéthode1()
nomMéthode2()
 Remarques:
 Le nom d’une classe doit être au singulier, chaque mot composant le
nom commence par majuscule.
 Le nom d’un attribut ou d’une méthode commence par minuscule. S’il
est composé de plusieurs mots, à part le premier mot, les autres
commencent par majuscule.
 Le nombre d’attributs et de méthodes est variable.

7 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


La classe 4/5
Représentation complète
NomClasse

IndicateurVisibilité nomAttribut1 : typeAttribut = valeurParDéfaut


IndicateurVisibilité nomAttribut2 : typeAttribut = valeurParDéfaut

[Link]. nomMéthode1(param1: typeParam= valeurDefaut, param2….): typeRetour


[Link]. nomMéthode2(param1: typeParam= valeurDefaut, param2….): typeRetour

Signature d’une méthode


 Indicateurs de visibilité des attributs et méthodes (liée à l’Encapsulation):
 +: public (visible par tous)
 - : privé (visible dans la classe uniquement)
 #: protégé (visible dans la classe et ses sous classes)
 ~: paquetage (visible dans les classes du même paquetage)
 Types des attributs, des paramètres des méthodes et des types de retour: Integer, String,
Boolean, Real, etc.

8 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


La classe 5/5
Représentation complète
 Attributs et méthodes de classe : soulignées
 Attributs calculés : précédé par "/"
 Valeurs par défaut
 La valeur par défaut d’un attribut est celle qui lui sera attribuée dès la création d’un
nouvel objet

 La valeur par défaut d’un paramètre d’une méthode est utilisée lorsque l’appelant ne
fournit pas la valeur de ce paramètre

Il est possible de choisir une représentation intermédiaire entre


la représentation simplifiée et la représentation complète.

9 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Exemple
Date
- jour : int
- mois : int
- annee : int Attribut calculé
- / noJourDansAnnee : int
- nomDesMois[12] : String={"janvier","février"...}
+ getJour() : int Attribut de classe

+ getFormatEtendu() : String

+ getNomMois(in i : int) : String Méthode de classe

10 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


L’association
 Exprime un lien entre classes.
 Le concept de rôle caractérise les extrémités.
 Les multiplicités (cardinalités) caractérisent le nombre d’instances
des classes impliquées dans l’association.

Exemple:
Université Personne
nomPers
nom Employeur Employé Prenom
adresse numSecurite
0..1 Emploie > *
Nom de rôle
Nom d’association + sens

11 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


L’association

Multiplicités :
1 un et un seul M..N de M à N (entiers naturels)
1..* de un à plusieurs * de 0 à plusieurs
0..1 zéro ou un N N fois

 Les multiplicités sont placées du côté de la destination:


 Une Université emploie plusieurs Personnes : le symbole * est placé
du côté Personne.
 A une Personne est associé zéro ou une Université (avec le rôle
Employeur) : le symbole 0..1 est placé du côté Université.

Université Emploie > Personne


0..1 *
Employeur Employé
12 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017
L’association
Navigabilité et implémentation :
Exemple1:
Point Polygone
* *
< défini par
On trouvera dans Polygone un attribut correspondant à une collection de
Points (tableau, ArrayList… en Java) et dans Point une collection de
Polygones.
Exemple2:
Point Polygone
* *
< défini par
Ici le sens de parcours est limité à Polygone vers Point. Alors, l’association
ne sera implémentée que par une collection de points dans la classe
Polygone.
13 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017
Associations spécialisées
 L’agrégation est une association qui décrit une relation d’inclusion
entre un tout (l’agrégat) et ses parties.
 Représentée par un losange vide.
 Durée de vie des classes indépendantes
 La composition est une association qui exprime que des composants
sont une partie de l’objet composé.
 Représentée par un losange plein du côté du composé
 Durée de vie des classes composées dépend du composant

Voiture Composé Circuit-bus


toujours 1

1..*
* 1 1 Composants 1..*

Roue Moteur Carrosserie Arrêt-bus

14 [Link] ENSI-II3 ILSI Agrégation


Chapitre3: Implémentation UML en Java 2016-2017
Composition
Associations spécialisées
 Différences entre composition et agrégation

Agrégation Composition
Représentation Losange transparent Losange noir

Partage des oui non


composants par
plusieurs
associations
Destruction des non oui
objets lors de la
destruction du
composé
Cardinalité au quelconque 0..1 ou 1
niveau du composé
15 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017
Classe-Association
• Association porteuse d’attributs et/ou de méthodes,
représentée comme une classe associée à l’association.

Etudiant Matière
Suit >
0..* 1..*

Notation
note

16 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Généralisation/Spécialisation entre classes
 Généralisation : factorisation des éléments communs de classes
(attributs, méthodes).
 Spécialisation : adapter une classe générale à un cas particulier.
 Favorisent la réutilisation.
 Signifie toujours : est un ou est une sorte de

classe plus
Super-classe générale
généralisation
spécialisation

classe plus
Sous-classe spécialisée

Ceci est un commentaire UML

17 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Généralisation/Spécialisation entre classes
 Exemple:

Véhicule Aéroplane

Héritage Multiple
Véhicule terrestre Véhicule aérien

Voiture Camion Avion Hélicoptère

18 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Diagramme d’objets
 Le diagramme des classes est une représentation statique du
système
 Le diagramme d’objets montre, à un instant donné, les
instances (objets) crées et leurs liens lorsque le système est
actif
 Chaque objet est représentée dans un rectangle qui contient son nom
en style souligné et éventuellement, la valeur d’un ou de plusieurs
attributs.
 Le nom d’un objet est de la forme: nomObjet:classe
 La valeur d’un attribut est de la forme: nomAttribut=valeurAttribut
 Les liens entre les objets (occurrences des associations) sont
représentés par de simples traits continus.

19 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Diagramme d’objets
Exemple:

Université Personne
Employeur Employé
0..1 Emploie > *

Diagramme de classes
Aicha :
Personne
un lien instance
Université De de Emploie Karim :
Manouba: Personne
Université
Diagramme d’objets

20 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Partie2: Implémentation en
Java

21
Traduction d’une classe
 Chaque classe UML devient par défaut un fichier .java.
 Exemple:

class Personne{

Personne

….
}

22 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Traduction d’une classe
 Une classe abstraite est simplement une classe qui ne
s’instancie pas directement mais qui représente une pure
abstraction afin de factoriser des propriétés.
 Elle se note avec « abstract » en UML et se traduit par le
mot-clé abstract en Java.
 Exemple:

abstract class Personne{


….
….
}

23 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Traduction d’une classe
 Une interface est une classe spéciale dont toutes les méthodes
sont abstraites
 En java, elle est traduite par le mot clé ‘interface’
 Pour implémenter une interface, on utilise ‘implements’
 Exemple:

interface Forme {

Forme …

}
class Rectangle implements Forme{

24 [Link]
}
ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017
Traduction des attributs
 Les attributs UML deviennent simplement des attributs en
Java
 Leur type est soit un type primitif (int, etc.), soit une classe.
 La visibilité des attributs:
 + pour public, public en Java
 # pour protégé, protected en Java
 - pour privé, private en Java.
 Les attributs de classe en UML deviennent des membres
statiques en Java (static).

25 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Traduction des méthodes
 Les méthodes UML deviennent directement des méthodes
en Java.
 Leur visibilité est définie avec les mêmes conventions que les
attributs.
 Les opérations de classe deviennent des méthodes statiques
(static).
 Les opérations abstraites (en italiques) se traduisent par le
mot-clé abstract en Java.

26 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Exemple 1

public class A {

public String a1;


private String a2;
protected String a3;
private String a4;
public void op1() { ... }
public void op2() { ... }
}

27 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Exemple2
class Personne {
private int code;
private String nom;
private static int nombre;
public Personne() {
}
public static int getNombre(){
}
public String getInf(){
}
}

28 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Traduction des associations (la
généralisation)
 La généralisation en UML se traduit directement par le
mécanisme de l’héritage.
 Remarque: Java, contrairement à C++ interdit l’héritage
multiple entre classes.
 Exemple:
Class Personne{
Personne
…}
Class Employe extends
Personne{
Employe

}

29 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Traduction des associations
 La traduction d’une association navigable dépend de la
multiplicité de l’extrémité concernée (pointée par la
flèche):
 Une multiplicité 1 se traduit par une variable d’instance de
type référence vers une instance de classe.
 Une multiplicité « * » va se traduire par un attribut de type
collection de références d’objets au lieu d’une simple
référence sur un objet.

30 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Traduction des associations
Exemple

31 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Traduction des associations
 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.

32 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Exemple1

public class A {
private B rb;

} public class B
{ ... // La classe B ne
connaît pas l'existence de la
classe A }

33 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Exemple2

public class A {
Private B [] rb;
……}

public class B {
private A ra;
…}
34 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017
Exemple3

35 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Traduction des agrégations et des
compositions

Les agrégations s'implémentent comme les associations.

Une composition peut s'implémenter comme une association


unidirectionnelle.
36 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017
Traduction de la classe-association
 Elle possède les caractéristiques d’une association et d’une
classe et peut donc porter des attributs qui se valorisent
pour chaque lien.
 Elle est traduite en la transformant en classe normale, et en
ajoutant des variables de type référence.

37 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Traduction de la classe-association

Exemple

38 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Exercices

39
Étude de cas : Diag. de classes
Soit le cas ’’Réservation de vols dans une agence de voyage’’:
1. Des compagnies aériennes proposent différents vols.
2. Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
3. Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4. Une réservation concerne un seul vol, et un seul passager.
5. Une réservation peut être annulée ou confirmée.
6. Un vol a un aéroport de départ et un aéroport d’arrivée.
7. Un vol a un jour et une heure de départ et un jour et une heure d’arrivée.
8. Un vol peut comporter des escales dans des aéroports
9. Une escale a une heure d’arrivée et une heure de départ.
10. Chaque aéroport dessert une ou plusieurs villes

40 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Corrigé
 Modélisation de la phrase
1° Des compagnies aériennes proposent différents vols.

CompagnieAerienne et Vols sont 2 objets métiers : 2 classes

CompagnieAerinne Vol

• Un vol peut être réalisé par une ou plusieurs compagnies


• Une compagnie propose une ou plusieurs vols

CompagnieAerinne Vol
1..* propose 1..*

41 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017


Corrigé
 Modélisation de la phrase :
2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
 Un vol possède un état: ouvert ou fermé
 Dans un diagramme de classes tout concept dynamique est modélisé en méthode.
 Il faut représenter la 2° phrase par 2 méthodes : ouvrirVol( ) et fermerVol( )
 Les méthodes sont déclarées dans l’objet dans lequel elles doivent s’exécuter
 Les autres pourront déclencher ces méthodes par envoi de messages

CompagnieAerinne Propose Vol


1..* 1..*
état (ouvert, fermé)
ouvrirVol( )
fermerVol( )

42
Corrigé

 Modélisation des phrases :


3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.

 Il faut discerner un client d’un passager

Réservation
Client Vol
1 effectue * concerne
état (ouvert, fermé)
* ouvrirVol( )
fermerVol( )

*
concerne

Passager

43
Corrigé

 Modélisation des phrases :


4° Une réservation concerne un seul vol, et un seul passager.

Réservation
Client concerne Vol
1 effectue *
état (ouvert, fermé)
* 1 ouvrirVol( )
fermerVol( )

*
concerne

1
Passager

44
Corrigé
 Modélisation des phrases :
5° Une réservation peut être annulée ou confirmée.

 Se traduit par l’ajout d’un attribut état et de 2 méthodes annuler( ) et confirmer( ) dans
‘’Reservation’’.

Réservation
étatR (annulée, confirmée)
annuler( )
confirmer( )

45
Corrigé

 Modélisation des phrases :


7° Un vol a un jour et une heure de départ et un jour et une heure d’arrivée.

 Les dates et les heures de départ et d’arrivée ne représentent que des valeurs : attributs.

CompagnieAerinne propose Vol


1..* 1..*
état
dateDepart
heureDepart
dateArrivee
heureArrivee
ouvrirVol( )
fermerVol( )

 Pour savoir si un élément doit être représenté en attribut ou en objet :


 S’il n’ y a que sa valeur qui est intéressante : c’est plutôt un attribut.
Si plusieurs questions peuvent concerner l’élément, alors il faut le représenter en objet.

46
Corrigé
 Modélisation des phrases :
6° Un vol a un aéroport de départ et un aéroport d’arrivée.
 Par quoi peut-on représenter l’élément ‘’Aéroport’’ ?
3 réponses sont envisageables :

1. Soit avec 2 classes

Vols
dateDepart 1 AeroportDepart
heureDepart
dateArrivee Aéroport
heureArrivee
nom
état 1 AeroportArrivee

ouvrirReservation( )
fermerReservation( )

 Modélisation non correcte. Tout aéroport peut être de départ et d’arrivée.

47
Corrigé
 Modélisation des phrases :
6° Un vol a un aéroport de départ et un aéroport d’arrivée.

2. Soit avec une classe et une association de multiplicité 2

Vol
dateDepart Aéroport
heureDepart 2
dateArrivee nom
heureArrivee
état

ouvrirVol( )
fermerVol( )

 Modélisation peu parlante.

48
Corrigé
 Modélisation des phrases :
6° Un vol a un aéroport de départ et un aéroport d’arrivée.
3. Soit avec 2 associations

Vol
dateDepart * Départ
heureDepart Aéroport
dateArrivee 1 Nom
heureArrivee …
état Arrivée
*
1
ouvrirVol( )
fermerVol( )

 Le rôle de chaque association précise son sens.

49
Corrigé
 Modélisation des phrases :
10° Chaque aéroport dessert une ou plusieurs villes
 On ne peut pas savoir la multiplicité de ‘’Aéroport’’
 Si on considère que desservir une ville signifie l’aéroport le plus proche, il n’ en y a qu’un :
la multiplicité est de 1
 Si on considère que desservir une ville signifie les aéroports dans un rayon de 35 km :
la multiplicité est de 0..*

Aéroport dessert Ville

1..*
*

50
Corrigé

 Modélisation des phrases :


8° Un vol peut comporter des escales dans des aéroports
9° Une escale a une heure d’arrivée et une heure de départ.
 Une escale a les propriétés heure d’arrivée et heure de départ, c’est donc un objet.

Vol
état dateDepart Depart Aéroport
heureDepart
dateArrivee * 1 nom
heureArrivee
Arrivee
ouvrirVol( )
fermerVol( ) * 1
1
1..*

Escale

heureArrivee
heureDepart
* *

51
Corrigé
 Modélisation des phrases :
8° Un vol peut comporter des escales dans des aéroports
9° Une escale a une heure d’arrivée et une heure de départ.
 ‘’Escale’’ a peu d’informations propres.
 On peut aussi la modéliser comme une classe d’association entre et ’Vols’’ et ‘’Aéroport’’.

Vol Départ
état dateDepart Aéroport
heureDepart * 1
dateArrivee Arrivée nom
heureArrivee
* 1
ouvrirVol( )
fermerVol( ) Escale

* *

InfosEscale

heureArrivee
heureDepart

52
Corrigé
Client

nom Prénom CompagnieAerinne


adresse nom
téléphone
e-mail

1 propose Diagramme de classes complet


effectue
* 1..*
départ
Réservation Vol Aéroport
état * 1
date concerne dateDepart nom
numéro arrivée
état heureDepart
* 1 dateArrivee
Annuler( ) heureArrivee * 1
Confirmer( )
ouvrirVol( ) escale
* fermerVol( )
* *
concerne
*
dessert
1
InfosEscale 1..*
Passager heureArrivee Ville
nom Prénom heureDepart
nom

53
Exercice
1. Implémenter le diagramme en Java
2. Rendre la navigation entre Banque et
Personne unidirectionnelle (de
Banque vers Personne). De même
pour la navigation entre Personne et
Compte (de Personne vers Compte).
Modifier le code Java de (1)

54 [Link] ENSI-II3 ILSI Chapitre3: Implémentation UML en Java 2016-2017

Vous aimerez peut-être aussi