Académique Documents
Professionnel Documents
Culture Documents
LAFORGUE
Chapitre 1
1. POURQUOI UML ? 2
3. LA NOTATION UML 3
page 1/13
Conception de logiciels Intranet : patrons et canevas – NSY 102 Par J. LAFORGUE
1. Pourquoi UML ?
Utiliser un langage objet ne suffit pas à faire une programmation orientée objet.
Le langage objet ne permet pas en soit de bien programmer en objet. Même les
environnements de programmation comme Eclipse ne sont une solution. Ils facilitent la
programmation mais ne vous aide pas à faire un bon programme objet.
Ces critères ont été facilement atteints dans la réalisation des programmes
fonctionnelles (structurés) : programmation par couches (ou modules) par décomposition
naturelle des fonctionnalités demandées, par l'indépendance des couches entre elles, par
la factorisation des traitements, ...
Dans un LOO les "couches" se construisent par l'utilisation de relations entre les
classes qui sont : le lien d'héritage et le lien de décomposition/agrégation.
Or la mise en place de ces relations dans le programme n'est pas une pensée
naturelle.
Il faut "penser objet" et il faut un outil qui permet de structurer cette pensée non
naturelle.
De plus, il faut faire le lien entre les fonctionnalités demandées et l'architecture objet
du programme.
page 2/13
Conception de logiciels Intranet : patrons et canevas – NSY 102 Par J. LAFORGUE
Quel que soit le langage utilisé, une démarche de conception doit répondre aux
questions :
QUOI le besoin
QUI les acteurs
COMMENT les classes
OU le physique
POURQUOI la traçabilité (UML ne répond pas à cela)
3. La notation UML
UML est un langage de modélisation objet, normé par l'OMG (Object Management
Group).
UML n'est pas : il ne définit pas le processus d'élaboration des modèles. Qualifier
UML de "méthode objet" n'est donc pas tout à fait approprié.
page 3/13
Conception de logiciels Intranet : patrons et canevas – NSY 102 Par J. LAFORGUE
Voir annexe A.
tenir compte des contraintes de :
réutilisabilité et maintenabilité
adaptabilité et fiabilité
performance
capacité
localisation
gouvernance
coût
page 4/13
Conception de logiciels Intranet : patrons et canevas – NSY 102 Par J. LAFORGUE
Les classes peuvent être liées entre elles grâce au mécanisme d'héritage qui permet
de mettre en évidence des relations de parenté.
D'autres relations sont possibles entre des classes, chacune de ces relations est
représentée par un arc spécifique dans le diagramme de classes.
Ces relations sont :
lien d'agrégation
lien de composition
lien d'association
lien d'implémentation
3.2. La classe
Symbole :
Classe
+ # - attributs
méthodes
Exemple :
RendezVous
# String date
# String heureDebut
# String heureFin
+ String toString()
+ Calendar getDate()
+ void modif ierIhm(Formulaire f ormulaireAgenda)
Commentaires :
3 compartiments : nom de la classe, attributs de la classe, méthodes (ou opérations)
de la classe.
page 5/13
Conception de logiciels Intranet : patrons et canevas – NSY 102 Par J. LAFORGUE
Autres classes :
La classe abstraite :
Classe abstraite
attributs
méthodes
La classe template :
Classe template nom: type
attributs
méthodes
Exemple :
page 6/13
Conception de logiciels Intranet : patrons et canevas – NSY 102 Par J. LAFORGUE
Media
Serie
- String saison
- String episode
Commentaires :
Cette relation entre deux classes traduit la propriété d'héritage entre deux classes.
En UML rien n'empêche de faire de l'héritage multiple mais de préférence à éviter.
Code Java :
public class Livre extends Media {…}
Exemple :
page 7/13
Conception de logiciels Intranet : patrons et canevas – NSY 102 Par J. LAFORGUE
FormulaireInt
IhmProjet
Commentaires :
Ici la classe IhmProjet du projet de NFA 031 de cette année implémente l'interface
FormulaireInt (voir projet).
Une association est une relation statique n-aire : c’est-à dire qu’elle relie plusieurs
classes entre elles.
L'agrégation :
La composition :
Exemple :
page 8/13
Conception de logiciels Intranet : patrons et canevas – NSY 102 Par J. LAFORGUE
Exemple :
Mediateque
- ArrayList<Media> lesMedias
- ArrayList<Emprunteur> lesEmprunteurs
0..* 0..*
Emprunteur
Media
- String numeroInscription
- String identification - String nom
- String titre - String prenom
- Emprunteur emprunteur - String dateNaissance
- Date dateEmpunt 0 .. 1 - String numeorTelephone
- Adresses adresse
0 .. 1
1 .. 1 Adresse
Date
- String rue
- String Ville
- String codePostal
4.3. L'héritage
Il est vrai que l'héritage n'est pas en soit un DP mais un lien 'mécanisme) fort des
langages orientés objet.
Il peut être un DP car l'héritage peut être implémenté par un lien de composition.
Voir le § sur l'héritage multiple.
4.4. La composition
Un objet B est une composition d'un autre objet A (on dit que "A est composé de B"
quand :
page 9/13
Conception de logiciels Intranet : patrons et canevas – NSY 102 Par J. LAFORGUE
b
A B C
Bb Xx Bb
A B
B C
4.5. L'agrégation
Un objet B est une agrégation d'un autre objet A (on dit que "A est lié à B" quand :
l'objet B est créé en dehors de A
B est donc passé en paramètre du constructeur de A
si A est détruit alors B n'est pas détruit
2 cas :
si l'attribut de B dans A n'est pas un pointeur alors il est une copie de celui
passé en paramètre. La liaison est une liaison faible.
si l'attribut de B dans A est un pointeur alors la liaison est une liaison forte
Le choix entre les 2 cas n'est pas important si B est un objet constant sinon cela
est important car :
- dans le premier cas la modification de l'état de B dans A n'a pas d'influence sur
l'objet passé en paramètre
- dans le deuxième cas toute modification de l'état de B dans A est répercuté sur
l'objet passé en paramètre.
page 10/13
Conception de logiciels Intranet : patrons et canevas – NSY 102 Par J. LAFORGUE
b
A B C
Bb Xx Bb
A B C
Il est donc à la charge des classes qui héritent de la classe abstraite d'implémenter le
code de ces méthodes.
La classe abstraite pure est très rare car cela veut dire qu'il n'existe donc pas de
getteurs et de setteurs sur ses attributs. Ce qui est plutôt rare.
Dans cet exemple, la classe abstraite est la classe Media. Son nom est écrit en
italique mais on ajoute (quand cela est possible, le mot abstract car l'italique n'est pas
souvent visible).
Elle est abstraite car jamais dans le programme, il existera de new Media(...). Cela n'a
pas de sens.
page 11/13
Conception de logiciels Intranet : patrons et canevas – NSY 102 Par J. LAFORGUE
Media
Serie
- String saison
- String episode
Exemples :
setEmprunteur
setDate
ou void emprunter(Emprunteur e, Date d)
{
this.emprunteur = e;
this.date = d;
}
void desemprunter()
{
this.emprunteur = null;
this.date = null;
}
boolean siMediaEmprunte()
{
return this.emprunteur == null;
}
page 12/13
Conception de logiciels Intranet : patrons et canevas – NSY 102 Par J. LAFORGUE
boolean siEnRetard()
{
return dateEmprunt.getTime() +
delaiEmprunt() < dateCourante().getTime;
}
page 13/13