Professional Documents
Culture Documents
Christine Solnon
INSA de Lyon - 3IF
2013 - 2014
1/140 .
Introduction
Positionnement de lUE / IF
Domaines denseignement du dpartement IF :
Systme dInformation
Rseaux
Architectures matrielles
Logiciel Systme
Mthodes et Outils Mathmatiques
Formation gnrale
Dveloppement logiciel
Units dEnseignement du domaine Dveloppement logiciel :
C++ (3IF)
Gnie logiciel (3IF)
Modlisation UML (3IF)
Qualit logiciel (4IF)
Grammaires et langages (4IF)
Ingnierie des IHM (4IF)
Mthodologie de dveloppement objet (4IF)
2/140 .
Introduction
3/140 .
Introduction
Organisation
6 sances de cours
du 7 au 28 novembre
4 sances de travaux dirigs (TD)
du 18 novembre au 18 dcembre
1 devoir surveill (DS)
le 23 janvier
4/140 .
Introduction
5/140 .
Introduction
Introduction la modlisation
Plan du cours
Introduction
Introduction la modlisation
Introduction UML
6/140 .
Introduction
Introduction la modlisation
Reprsentativit
Gnricit
Exemple de cas : des mesures (tension, intensit, ...) sur des circuits
Incarnant un point de vue sur ces cas
Abstraction
Introduction
Introduction la modlisation
Langages de modlisation
Langages utiliss pour exprimer un modle :
Langues naturelles : qui voluent hors du contrle dune thorie
Ex : Franais, Anglais, ...
Langages artificiels : conus pour des usages particuliers
Langages formels : syntaxe dfinie par une grammaire
Ex : Logique, langages informatique (C, Java, SQL, ...), ...
Pouvoir dexpression dun langage :
; Ensemble des modles que lon peut exprimer
Introduction
Introduction la modlisation
9/140 .
Introduction
Introduction UML
Plan du cours
Introduction
Introduction la modlisation
Introduction UML
10/140 .
Introduction
Introduction UML
Historique dUML
11/140 .
Introduction
Introduction UML
UML et lOMG
OMG = Object Management Group (www.omg.org) :
Fond en 1989 pour standardiser et promouvoir lobjet
Version 1.0 dUML (Unified Modeling Language) en janvier 1997
Version 2.5 en octobre 2012
Dfinition dUML selon lOMG :
Langage visuel ddi la spcification, la construction et la
documentation des artefacts dun systme logiciel
LOMG dfinit le mta-modle dUML
; Syntaxe et interprtation en partie formalises
Attention : UML est un langage... pas une mthode
; Mthode dans le cours 4IF Dveloppement Orient Objet"
12/140 .
Introduction
Introduction UML
13/140 .
Introduction
Introduction UML
14/140 .
Introduction
Introduction UML
15/140 .
Introduction
Introduction UML
16/140 .
Introduction
Introduction UML
17/140 .
Introduction
Introduction UML
Notation : o- - - - - - - -{ contrainte }
3 types de contraintes :
Contraintes prdfinies : disjoint, ordered, xor, ...
Contraintes exprimes en langue naturelle
Ex. : temps dexcution infrieur 10 ms
Contraintes exprimes avec OCL (Object Constraint Language)
Ex. : context Pile inv : self.nbElts >= 0
Strotypes : invariant, prcondition, postcondition
18/140 .
Plan du cours
Introduction
19/140 .
20/140 .
Plan du cours
1
Introduction
21/140 .
22/140 .
23/140 .
24/140 .
Diagrammes dobjets
Plan du cours
1
Introduction
25/140 .
Diagrammes dobjets
Diagrammes dobjets
Objectif : Reprsenter les objets et leurs liens un instant donn
Utilisation : documenter des cas de test, analyser des exemples, ...
Moyen : Graphe
Nuds du graphe = Objets
Possibilit de supprimer le nom, la classe et/ou
les attributs (objet anonyme, non typ ou dtat
inconnu)
nomObjet : ClasseObjet
nomAttr_1 = val_1
nomAttr_2 = val_2
...
o1 : C1
o2 : C2
o1 : C1
o2 : C2
o3 : C3
26/140 .
Diagrammes dobjets
27/140 .
Diagrammes dobjets
Au travail !
28/140 .
Diagrammes de classes
Plan du cours
1
Introduction
29/140 .
Diagrammes de classes
30/140 .
Diagrammes de classes
Diagrammes de classes
Un diagramme de classes est un graphe :
Nud du graphe = Classe
; Abstraction dun ensemble dobjets
31/140 .
Diagrammes de classes
NomClasse2
attr1 : Chaine
attr2 : Entier
...
attr1
attr2
NomClasse3
op1(p1:Entier) : Entier
op2() : Chaine
...
32/140 .
Diagrammes de classes
33/140 .
Diagrammes de classes
34/140 .
Diagrammes de classes
:C4
:C1
:C3
:C4
:C2
:C1
:C3
:C4
:C2
:C1
:C3
:C4
:C2
:C4
1..*
1
C2
0..1
0..1
C3
0..2
C4
35/140 .
Diagrammes de classes
C1
role1
mult1
Nom
Sens de lecture
role2
mult2
C2
Interprtation en franais :
Un C1 Nom un C2 (ou un C2 Nom un C1 si sens de lecture inverse)
Un C1 est rle1 dun C2 et mult1 C1 peuvent jouer ce rle pour un C2
Un C2 est rle2 dun C1 et mult2 C2 peuvent jouer ce rle pour un C1
Exemple :
Entreprise
employeur
0..1
employ
Personne
1..*
36/140 .
Diagrammes de classes
C1
role1
mult1
Nom
Sens de lecture
role2
mult2
C2
Entreprise
employeur
0..1
employ
Personne
1..*
36/140 .
Diagrammes de classes
Au travail !
Chaque tudiant du dpartement IF suit un ensemble dunits
denseignement (UE).
Chaque UE a un coefficient et est constitue de cours, de travaux
dirigs (TD) et de travaux pratiques (TP).
Chaque cours, TD ou TP a une date. Les cours sont faits en amphi, les
TD en salle de classe et les TP en salle machine.
Pour les TP et TD, les tudiants sont rpartis dans des groupes. Pour
chaque TP, chaque tudiant est en binme avec un autre tudiant.
Les cours et les TD sont assurs par un enseignant. Les TP sont
assurs par deux enseignants.
Pour chaque UE, ltudiant a une note de devoir surveill ; pour chaque
TP, le binme a une note de TP.
37/140 .
Diagrammes de classes
Navigabilit
Quest-ce que la navigabilit dune association entre C1 et C2 ?
Capacit dune instance de C1 (resp. C2) accder aux instances de C2
(resp. C1)
Par dfaut :
C1
C2
C1
C2
38/140 .
Diagrammes de classes
39/140 .
Diagrammes de classes
Associations qualifies
Restriction dune relation / qualificateur :
Slection dun sous-ensemble dobjets laide dun attribut qualificatif
(cl)
Lattribut qualificatif appartient lassociation
Classe source
qualificatif
{sousensemble}
Classe destination
Exemples :
Banque
Banque numCpte
*
Compte
Compte
40/140 .
Diagrammes de classes
Classes-associations
Association attribue :
C1
attr1
attr2
...
C2
<=>
C1
C3
attr1
m
attr2
...
n
1
C2
C1
C2
C3
attr1
attr2
...
C4
41/140 .
Diagrammes de classes
Associations n-aires
Associations entre n classes (avec n > 2)
Enseignant
Enseignant
*
Groupe
<=>
Groupe
*
Cours
*
*
Salle
Salle
Classes-Associations n-aire
Enseignant
*
Groupe
*
*
Salle
Enseignant
Cours
date
heure
<=>
Groupe
Salle
*
Cours
date
heure
*
42/140 .
Diagrammes de classes
1..n
Chapitre
1..n
Paragraphe
3..n
Point
43/140 .
Diagrammes de classes
Gnralisation et Hritage
Niveau conceptuel : Gnralisation
Relation transitive, non rflexive, et non symtrique
La sous-classe est-une-sorte-de la super classe
; Toute instance de la sous-classe est instance de la super classe
Niveau implmentation : Hritage
Mcanisme propos par les langages de programmation Objet
"B hrite de A" signifie que B possde :
Toutes les proprits de A (attributs, op., assoc., contraintes)
; Possibilit de redfinir les oprations de la sous-classe
; Polymorphisme
Ainsi que des nouvelles proprits qui lui sont propres
; Permet de factoriser les proprits communes plusieurs classes
; Une opration dfinie pour A est accessible aux sous-classes de A
44/140 .
Diagrammes de classes
45/140 .
Diagrammes de classes
Hritage vs Composition
Problme :
Modliser le fait quil y a des voitures bleues, des voitures rouges et des
voitures vertes.
Solution 1 : Hritage
Crer une classe abstraite Voiture
Crer 3 classes VoitureBleue, VoitureRouge et VoitureVerte qui hritent
de Voiture
Solution 2 : Composition
Crer une classe Voiture et une classe Couleur (numration)
Crer une association entre Voiture et Couleur
Comment reprsenter ces 2 solutions en UML ?
46/140 .
Diagrammes de classes
Hritage vs Composition
Problme :
Modliser le fait quil y a des voitures bleues, des voitures rouges et des
voitures vertes.
Solution 1 : Hritage
Crer une classe abstraite Voiture
Crer 3 classes VoitureBleue, VoitureRouge et VoitureVerte qui hritent
de Voiture
Solution 2 : Composition
Crer une classe Voiture et une classe Couleur (numration)
Crer une association entre Voiture et Couleur
Comment reprsenter ces 2 solutions en UML ?
Quelle solution choisissez-vous ?
46/140 .
Diagrammes de classes
Hritage vs Composition
Problme :
Modliser le fait quil y a des voitures bleues, des voitures rouges et des
voitures vertes.
Solution 1 : Hritage
Crer une classe abstraite Voiture
Crer 3 classes VoitureBleue, VoitureRouge et VoitureVerte qui hritent
de Voiture
Solution 2 : Composition
Crer une classe Voiture et une classe Couleur (numration)
Crer une association entre Voiture et Couleur
Comment reprsenter ces 2 solutions en UML ?
Quelle solution choisissez-vous ?
Et si on veut modliser le fait quil y a des personnes hommes et des
personnes femmes ?
46/140 .
Diagrammes de classes
Hritage vs Dlgation
Problme :
Appeler dans une classe B une opration op() dune classe A ?
Solution 1 : Hritage
Faire hriter B de A
op() peut tre appele depuis nimporte quelle instance de B
Solution 2 : Dlgation
Ajouter une association de B vers A
; Ajouter dans B un attribut a de type A
47/140 .
Diagrammes de classes
Hritage vs Dlgation
Problme :
Appeler dans une classe B une opration op() dune classe A ?
Solution 1 : Hritage
Faire hriter B de A
op() peut tre appele depuis nimporte quelle instance de B
Solution 2 : Dlgation
Ajouter une association de B vers A
; Ajouter dans B un attribut a de type A
47/140 .
Diagrammes de classes
Hritage vs Dlgation
Problme :
Appeler dans une classe B une opration op() dune classe A ?
Solution 1 : Hritage
Faire hriter B de A
op() peut tre appele depuis nimporte quelle instance de B
Solution 2 : Dlgation
Ajouter une association de B vers A
; Ajouter dans B un attribut a de type A
47/140 .
Diagrammes de classes
48/140 .
Diagrammes de classes
T
Pile
<<bind>>(String) <<bind>>(Float)
PileDeString
PileDeFloat
49/140 .
Diagrammes de classes
Classes abstraites
Quest-ce quune classe abstraite ?
Classe qui ne peut tre instancie
Contient des oprations non dfinies :
; abstract (Java) ou virtual (C++)
Doit tre spcialise en une ou plusieurs classes non abstraites
Notation : mot cl {abstract} ou nom en italique
Pourquoi des classes abstraites ?
Spcifier un comportement commun plusieurs classes
Manipuler des instances de classes diffrentes de faon uniforme
; Polymorphisme
Bonne pratique :
Dans une hirarchie dhritage, les classes qui ne sont pas des feuilles sont
gnralement abstraites
50/140 .
Diagrammes de classes
51/140 .
Diagrammes de classes
52/140 .
Diagrammes de classes
Interface
Quest-ce quune interface ?
Classe sans attribut dont toutes les oprations sont abstraites
; Ne peut tre instancie
; Doit tre ralise (implmente) par des classes non abstraites
; Peut hriter dune autre interface
Pourquoi des interfaces ?
Utilisation similaire aux classes abstraites
En Java : une classe ne peut hriter de plus dune classe, mais elle peut
raliser plusieurs interfaces
Notations UML :
Nom : interface Itf1
Hritage : Itf1 Itf2
Itf1
Ralisation : Class1 - - - - Itf1 ou Class1 -O
Itf1
Utilisation : Class2 - - use - - > Itf1 ou Class2 -C
53/140 .
Diagrammes de classes
Exemple
54/140 .
Diagrammes de classes
55/140 .
Diagrammes de classes
Association
Navigable dans les 2 sens :
Navigable dans un sens : >
ou X>
Composition :
Agrgation : <>
Gnralisation :
Ralisation dune interface : O ou - - - - - - - - - - - -
56/140 .
Diagrammes de classes
Maison
1..*
Pice
1..2
Fenetre
57/140 .
Diagrammes de classes
Maison
1..*
Pice
1..2
Fenetre
57/140 .
Diagrammes de classes
Bagage
Passager
*
1
1
Vol
58/140 .
Diagrammes de classes
Bagage
Passager
*
1
1
Vol
58/140 .
Diagrammes de classes
Chambre
Rservation
*
dateDeb
dateFin
Client
Personne
nom
1
Hotel
Grant
59/140 .
Diagrammes de classes
Chambre
Rservation
*
dateDeb
dateFin
Client
Personne
nom
1
Hotel
Grant
59/140 .
Diagrammes de paquetage
Plan du cours
1
Introduction
60/140 .
Diagrammes de paquetage
Diagrammes de paquetages
Quest-ce quun paquetage (package) ?
lment de modlisation qui :
Contient dautres lments de modlisation (classes, autres paquetages, ...)
; Possibilit de ne pas reprsenter tous les lments contenus
Dfinit un espace de nom (namespace)
61/140 .
Diagrammes de paquetage
62/140 .
Diagrammes de paquetage
63/140 .
Diagrammes de paquetage
Architecture logique
Quest-ce quune architecture logique ?
Regroupement des classes logicielles en paquetages
; Point de dpart pour un dcoupage en sous-systmes
Objectifs dune architecture logique :
Encapsuler et dcomposer la complexit
Faciliter le travail en quipes
Faciliter la rutilisation et lvolutivit
; Forte cohsion intra paquetage
; Faible couplage inter paquetages
Exemples darchitectures logiques :
Architecture en couches
Architecture Modle - Vue - Contrleur (MVC)
Architecture Multi-tiers
...
64/140 .
Diagrammes de composants
Plan du cours
1
Introduction
65/140 .
Diagrammes de composants
Diagrammes de composants
Composant :
Encapsule ltat et le comportement dun ensemble de classifiers
(classes, composants...)
Spcifie les services fournis et requis :
Interfaces fournies : provided interfaces ou O
Interfaces requises : required interfaces ou C
interfaces
; Substituable tout composant qui offre/requiert les m
Exemple :
66/140 .
Diagrammes de composants
67/140 .
Diagrammes de dploiement
Plan du cours
1
Introduction
68/140 .
Diagrammes de dploiement
Diagrammes de dploiement
Modliser le dploiement du systme sur une architecture physique
Disposition des artefacts sur les nuds physiques
Artefacts : instances de composants, processus, ...
Nuds physiques : Ordinateur, Tlphone, Imprimante, ...
Moyens de communication entre les nuds
69/140 .
Plan du cours
Introduction
70/140 .
71/140 .
Diagrammes dinteraction
Plan du cours
Introduction
72/140 .
Diagrammes dinteraction
Diagrammes dinteraction
; Point de vue temporel sur les interactions
73/140 .
Diagrammes dinteraction
Diagrammes de squence :
Diagrammes de communication :
Structuration en termes de
Structuration en multigraphe
Exemple :
Exemple :
o2:T2
o1:T1
1: ret1=msg1(p1)
o3:T3
o2:T2
o1:T1
msg1(p1)
msg2(p2)
ret2
msg3(p3)
ret1
ret3
1.1: ret2=msg2(p2)
1.2: ret3=msg3(p3)
o3:T3
74/140 .
Diagrammes dinteraction
Diagrammes de squence
Ligne de vie et activation
:T2
msg1(p1)
Temps
Dure dactivation
ret1
75/140 .
Diagrammes dinteraction
Diagrammes de squence
Cration et destruction dobjets
o1:T1
Crer
...change
de messages...
o2:T2
Dtruire
76/140 .
Diagrammes dinteraction
Diagrammes de squence
Messages rflexifs, messages asynchrones et contraintes temporelles
o1:T1
o2:T2
o1:T1
o2:T2
msg1()
msg1(p1)
msg2()
ret1
o2:T2
o1:T1
msg1()
Dlai de propagation
x
yx < 2s
msg2()
77/140 .
Diagrammes dinteraction
o2:T2
o3:T3
o1:T1 o2:T2
msg1()
loop
msg1() ref xx
[condition]
msg2()
ret
connexions
alt
[condition1]
[else]
msg3()
Rfrence au
diagramme xx
msg4()
ret
78/140 .
Diagrammes dinteraction
Diagrammes de squence
Messages polymorphes
f: Fenetre
vues[i]: VueGraphique
dessiner()
loop
VueGraphique
[i variant de 0 f.nbVues]
afficher()
afficher()
VueRond
:VueRond
afficher()
msg1()
o2:T2
:VueCarr
afficher()
VueCarr
o3:T3
msg2()
79/140 .
Diagrammes dinteraction
80/140 .
Diagrammes dinteraction
Diagrammes de communication
Prsentation alternative dune squence dinteractions
81/140 .
Plan du cours
Introduction
82/140 .
Cas dutilisation
Pourquoi faire ?
Permettre au client de dcrire ses besoins
Parvenir un accord (contrat) entre clients et dveloppeurs
Point dentre pour les tapes suivantes du dveloppement
Quest ce quun cas dutilisation ?
Usage que des acteurs font du systme
Acteur : Entit extrieure qui interagit avec le systme
; Une mme personne peut jouer le rle de diffrents acteurs
; Un acteur peut tre un autre systme (SGBD, Horloge, ...)
Usage : Squence dinteractions entre le systme et les acteurs
Gnralement compos de plusieurs scnarios (instances)
; Scnario de base et ses variantes (cas particuliers)
83/140 .
84/140 .
Limites du systme
nom du systme
Client
Ouvrir la caisse
Caissier
<<actor>>
Service
dautorisation
des paiements
<<actor>>
Systme des
ressources
humaines
Traiter un retour
notation alternative
pour un acteur
Communication
acteur
Grant
Grer la scurit
cas dutilisation
Administrateur systme
85/140 .
Systme XXX
Faire un virement
Client local
<<tend>>
montant > 500 euros
<<inclut>>
Identifier client
Client distant
86/140 .
: Systme
: Caissier
crerNouvelleVente()
loop [reste des articles]
saisirArticle(codeArt,Qte)
description, total
terminerVente()
total HT et TTC
crerPaiement(montant)
rendu de la monnaie, reu
87/140 .
Diagrammes dtats-transitions
Plan du cours
Introduction
88/140 .
Diagrammes dtats-transitions
0|..|9
.
.
q3
0|..|9
e
q4
1|..|9
q5
q2
89/140 .
Diagrammes dtats-transitions
0|..|9
Mots reconnus :
0, 0.123e45, 125, ...
Mots non reconnus :
012, 4.5.6, 1e2, ...
q0
1|..|9
0
q1
.
.
q3
0|..|9
e
q4
1|..|9
q5
q2
90/140 .
Diagrammes dtats-transitions
q1
q2
a|...|z
=e
q3
q0
a|...|z
e
e
q1
=e,s
=e,t
s
e
q2
q3
91/140 .
Diagrammes dtats-transitions
92/140 .
Diagrammes dtats-transitions
93/140 .
Diagrammes dtats-transitions
Etat initial
Evnement
Inactif
dcrocher
Actif
Etat
raccrocher
94/140 .
Diagrammes dtats-transitions
En attente
suspendu
Pret
suspendu
suspendu
activ
E/S arrive
Pret
time
out
En excution
Noyau
instr
util
suspendu
slection
En excution
Utilisateur
activ
En attente
E/S attendue
exit ou signal
Termin
(ou zombi)
instr.
noyau
Etat final
95/140 .
Diagrammes dtats-transitions
96/140 .
Diagrammes dtats-transitions
Exemple :
dcrocher
Inactif
Conversation
EmissionTonalit
raccrocher
chiffre
connect
chiffre
Numrotation termin
Connexion
dcrocher
Conversation
EmissionTonalit
raccrocher
chiffre
chiffre
Numrotation
connect
termin
Connexion
97/140 .
Diagrammes dtats-transitions
...
... P
e0
P
e0
S
S0
ZA
S1
e3 Z
X
e1
e3
A
e2
e1
e4
B
e2
<=>
e4
XA
e1 e4
XB
YA
e4
e1
e1
e1 e2
e3
e5
YB
e1
ZB
e5
Q ...
98/140 .
Diagrammes dtats-transitions
... X
e1
S1
X
e1
P0P1
S
S0
0
P0
1
0
1
P1
0
I0
<=>
1
I1
I0P1
0
0
P0I1
0
e2
Y ...
1
I0I1
e2
Y ...
99/140 .
Diagrammes dtats-transitions
e1 [cond]
[0<tot<1000]
Traitement
[tot>=1000]
VrifApprov
100/140 .
Diagrammes dtats-transitions
Actions et activits
Actions (envoi de signaux, invocation doprations, ...) :
Peuvent tre excutes :
Lors dune transition (ex. : action4)
En entrant dans un tat (ex. : action1)
En sortant dun tat (ex. : action3)
Sont atomiques (ne peuvent tre interrompues par un vnement)
Activits :
Peuvent tre excutes dans un tat (ex. : activit2)
Peuvent tre continues ou non
Sont interrompues larrive dun vnement en sortie de ltat
Exemple :
A
entre / action1
faire / activit2
sortie / action3
e1 / action4
101/140 .
Diagrammes dtats-transitions
Quelques conseils...
102/140 .
Diagrammes dtats-transitions
103/140 .
Diagrammes dtats-transitions
Cnx C
ConfCon+ de C
/ Envoi de ReqData(BonjourB) C
[B naccepte pas]
/ Envoi de ConfCon A
Cnx B
Ind Data de C
[B accepte]
/ Envoi de ConfCon+ A
Connect
103/140 .
Diagrammes dtats-transitions
Actif
dcrocher
Inactif
AttenteNumrotation
chiffre[i<9]/i++
raccrocher
chiffre/i=1
Numrotation
chiffre[i==9]
Conversation
connexion
Attente
connexion
Complter ce diagramme :
Emission dune tonalit quand on dcroche
Emission dun bip quand on compose un chiffre
Cas dun faux numro
...
104/140 .
Diagrammes dtats-transitions
Diagrammes dactivits
Variante des diagrammes dtats-transitions
; Modlisation de flux
105/140 .
Diagrammes dtats-transitions
106/140 .
Plan du cours
Introduction
107/140 .
108/140 .
109/140 .
110/140 .
Patrons de cration
Ceux quon va voir : Abstract factory, Factory method, Singleton
Et les autres : Prototype, Builder
Patrons comportementaux
Ceux quon va voir : Iterator, Strategy, State, Observer, Command
Et les autres : Visitor, Chain of responsiblity, Interpreter, Mediator,
Memento, Template method
Patrons structuraux
Ceux quon va voir : Decorator, Adapter, Facade, Composite
Et les autres : Bridge, Flyweight, Proxy
111/140 .
Plan du cours
Introduction
112/140 .
...
Client
+creBouton(...)
+creMenu(...)
AbstractGUIfactory f;
if (..) f=new GUIfactoryOSX();
else f=new GUIfactoryLinux();
...
Bouton b=f.creBouton(...);
Menu m=f.creMenu(...);
...
GUIfactoryOSX
GUIfactoryLinux
+creBouton(...)
+creMenu(...)
+creBouton(...)
+creMenu(...)
Bouton
+dessine(...)
* Menu
+actionMenu(...)
BoutonLinux
BoutonOSX
MenuLinux
MenuOSX
+dessine(...)
+dessine(...)
+actionMenu(...)
+actionMenu(...)
113/140 .
Remarques :
AbstractFactory et AbstractProduct
sont gnralement des interfaces
; Programmer pour des interfaces
Les mthodes createProduct. . . ()
sont des factory methods
Avantages du pattern :
Indirection : Isole Client des
implmentations des produits
Protection des variations : Facilite la
substitution de familles de produits
Maintien automatique de la
cohrence
Mais lajout de nouveaux types de
produits est difficile...
114/140 .
Singleton
Problme :
Assurer quune classe possde une seule instance et rendre cette instance
accessible globalement
Solution gnrique [Wikipedia] :
public static synchronized Singleton getInstance(){
if (_singleton == null)
_singleton = new Singleton();
return _singleton;
}
Exercice :
Utiliser Singleton pour implmenter une classe Factory
Attention :
Parfois considr comme un anti-pattern... utiliser avec modration !
115/140 .
Plan du cours
Introduction
116/140 .
Iterator (1/3)
Problme :
Fournir un accs squentiel aux lments dun agrgat dobjets
indpendamment de limplmentation de lagrgat (liste, tableau, ...)
Illustration sur un exemple en C++ :
117/140 .
Iterator (2/3)
Illustration sur un exemple en Java :
Factory method
118/140 .
Iterator (3/3)
Solution gnrique :
Avantages :
Protection des variations : Client est protg des variations dAggregate
Forte cohsion : Sparation du parcours de lagrgation
Strategy (1/3)
Problme :
Changer dynamiquement le comportement dun objet
Illustration sur un exemple :
Dans un jeu vido, des personnages combattent des monstres...
; mthode combat(Monstre m) de la classe Perso
...et le code de combat peut tre diffrent dun personnage lautre
Sol. 1 : combat contient un cas pour chaque type de combat
Sol. 2 : La classe Perso est spcialise en sous-classes qui
redfinissent combat
120/140 .
Strategy (1/3)
Problme :
Changer dynamiquement le comportement dun objet
Illustration sur un exemple :
Dans un jeu vido, des personnages combattent des monstres...
; mthode combat(Monstre m) de la classe Perso
...et le code de combat peut tre diffrent dun personnage lautre
Sol. 1 : combat contient un cas pour chaque type de combat
Sol. 2 : La classe Perso est spcialise en sous-classes qui
redfinissent combat
Sol. 3 : La classe Perso dlgue le combat des classes
encapsulant des codes de combat et ralisant toutes une mme
interface
Reprsenter ces solutions en UML. Peut-on facilement :
Ajouter un nouveau type de combat ?
Changer le type de combat dun personnage ?
120/140 .
Strategy (2/3)
Diagramme de classes de la solution 3 :
121/140 .
Strategy (2/3)
Diagramme de classes de la solution 3 :
121/140 .
Strategy (3/3)
Solution gnrique :
[Wikipedia]
Remarques :
Principes de conception oriente objet mobiliss :
Indirection : Isole Context des implmentations de Strategy
; Protection des variations
Composer au lieu dhriter : Changer dynamiquement de stratgie
Passage dinformations de Context Strategy
en poussant : linfo est un param de AlgorithmInterface()
en tirant : le contexte est un param. de AlgorithmInterface()
qui utilise des getters pour rcuprer linfo
122/140 .
State (1/3)
Problme :
Modifier le comportement dun objet en fonction de son tat
Illustration sur un exemple :
Les personnages dun jeu peuvent combattre, rsoudre des nigmes et crier :
Novice
crie()
combat()
[victoire]
[dfaite]
combat()
[dfaite]
rsout()
Confirm
crie()
combat()
[victoire]
rsout()
Expert
crie()
rsout()
Quel est le cot de lajout dun nouvel tat ou dune nouvelle action ?
123/140 .
State (2/3)
Solution 2 :
Encapsuler les tats dans des classes implmentant une mme interface
124/140 .
State (3/3)
Solution gnrique :
[Wikipedia]
Remarques :
Ajout dun nouvel tat facile...
...mais ajout dune nouvelle action plus compliqu
Si ConcreteState ne mmorise pas dinformation interne
Alors les tats peuvent tre des attributs statiques de Context
Sinon il faut une instance de ConcreteState par instance de Context
; Peut devenir coteux en mmoire !
125/140 .
126/140 .
obs
0..*
vueGraphique
modle
127/140 .
obs
0..*
vueGraphique
modle
127/140 .
obs
0..*
vueGraphique
modle
Spcifique limplmentation
de java.util
127/140 .
Remarques :
Faible couplage entre ConcreteObserver et Subject
Les donnes de Subject peuvent tre pousses (dans notify) ou
tires (avec des getters)
Se retrouve dans de nombreuses API Java
; Listeners de lAPI Swing pour observer le clavier, la souris, ...
128/140 .
Command (1/3)
Problme :
Dcoupler la rception dune requte de son excution
swing
controleur
event
vue
modle
On veut garder un
historique pour pouvoir
annuler les dernires
actions
129/140 .
Command (2/3)
Encapsuler les commandes dans des objets contenant les informations
permettant de les excuter/annuler
Stocker les commandes dans une pile
130/140 .
Command (3/3)
Solution gnrique :
Client cre les instances
de ConcreteCommand
Invoker demande
lexcution des commandes
ConcreteCommande
dlgue lexcution
Receiver
Remarques :
Dcouple la rception dune requte de son excution
Les rles de Client et Invoker peuvent tre jous par une mme
classe (par exemple le contrleur)
Permet la journalisation des requtes pour reprise sur incident
Permet dannuler ou r-excuter des requtes (undo/redo)
131/140 .
Plan du cours
Introduction
132/140 .
Adapter
Problme :
Fournir une interface stable (Adaptateur) un composant dont linterface
peut varier (Adapt)
Solution gnrique :
Facade
Problme :
Fournir une interface simplifie (Facade)
Solution gnrique [Wikipedia] :
134/140 .
Decorator (1/2)
Problme :
Attacher dynamiquement des responsabilits supplmentaires un objet
Illustration sur un exemple :
Exemple dutilisation :
...
Pizza p=new PizzaClassique();
p = new Fromage(p);
p = new Jambon(p);
...
Pizza
calcPrix()
affDescr()
1
#pizza
public DcorateurPizza(Pizza p){
this.pizza = p;
}
PizzaPateFine
PizzaClassique
DcorateurPizza
calcPrix()
affDescr()
calcPrix()
affDescr()
calcPrix()
affDescr()
@override
public double calcPrix(){
return prixFromage
+ super.calcPrix();
}
@override
public double calcPrix(){
return pizza.calcPrix();
}
Fromage
Oignon
Jambon
calcPrix()
affDescr()
calcPrix()
affDescr()
calcPrix()
affDescr()
135/140 .
Decorator (2/2)
Solution gnrique :
Remarques :
Composer au lieu dhriter : Ajout
dynamique de responsabilits
ConcreteComponent sans le
modifier
n dcors 2n combinaisons
Inconvnient : Peut gnrer de
nombreux petits objets enveloppes
[Wikipedia]
Utilisation pour dcorer les classes dentre/sortie en Java :
Component : InputStream, OutputStream
ConcreteComponent : FileInputStream, ByteArrayInputStream, ...
Decorator : FilterInputStream, FilterOutputStream
ConcreteDecorator : BufferedInputStream, CheckedInputStream, ...
136/140 .
Points communs :
Indirection ; Enveloppe (wrapper)
Protection des variations
Diffrences :
Adapter : Convertit une interface en une autre (attendue par un Client)
Facade : Fournit une interface simplifie
Decorator : Ajoute dynamiquement des responsabilits aux mthodes
dune interface sans la modifier
137/140 .
Composite (1/2)
Problme :
Reprsenter des hirarchies composant/compos et traiter de faon uniforme
les composants et les composs
Illustration sur un exemple :
< ?xml version="1.0" ?>
<livres>
<livre>
<titre>Guerre et paix</titre>
<auteur>Tolsto</auteur>
<nbPages>1572</nbPages>
</livre>
<livre>
<titre>20 ans aprs</titre>
<auteur>Dumas</auteur>
<publication>
<ed>Lebgue</ed>
<date>1848</date>
</publication>
</livre>
</livres>
Comment compter le
nombre de tags ?
:EltCompXML
tag="livres"
:EltCompXML
tag="livre"
:EltSimpleXML
tag="titre"
val="Guerre et paix"
:EltCompXML
tag="livre"
:EltSimpleXML
:EltCompXML
tag="publication"
tag="titre"
val="20 ans aprs"
:EltSimpleXML
tag="auteur"
val="Tolstoi"
:EltSimpleXML
tag="nbPages"
val="1572"
:EltSimpleXML
tag="auteur"
val="Dumas"
:EltSimpleXML
tag="date"
val="1848"
:EltSimpleXML
tag="ed"
val="Lebgue"
138/140 .
Composite (2/2)
Solution gnrique :
Composant
*
fils
attCommun
opCommune()
Feuille
Composite
attCommun
...
opCommune()
...
attCommun
...
opCommune()
...
Exercices :
Dfinir les oprations permettant de :
Compter le nombre de fils dun composant
Compter le nombre de descendants dun composant
Ajouter un fils un composant
Comment accder squentiellement aux fils dun Composite ?
Comment accder squentiellement aux descendants dun Composite ?
139/140 .
Autres patterns ?
Patterns de cration
Prototype
Builder
Patterns structuraux
Bridge
Flyweight
Proxy
Patterns comportementaux
Visitor
Chain of responsiblity
Interpreter
Mediator
Memento
Template method
140/140 .