Cours Patron Partie 4
Cours Patron Partie 4
Cours Patron Partie 4
V. Les modèles de
comportement ou
comportementaux
45
5.1 Objectif
• Ces modèles permettent de décrire des algorithmes, des
comportements entre objets et communication inter-objet.
46
1
10/12/2022
47
48
2
10/12/2022
Remarque :
Chose semblable mais non identique : structure ou
squelette de l’algorithme de recherche séquentiel
identique dans les deux cas.
50
3
10/12/2022
Classe abstraite
PatronMethode()
operationPrimitive1()
operationPrimitive2()
Classe concrete
operationPrimitive1()
operationPrimitive2()
51
52
4
10/12/2022
Classe concrète :
- Elle permet d’implémenter les parties variantes
(operationPrimitives1() et operationPrimitives2()) de l’algorithme.
Remarque :
1. le modèle PatronMethode est largement utilisé dans les bibliothèques
de classe.
2. La classe abstraite est appelée également « classe comportement »
53
TD4
o Enoncé
Utiliser le patron de conception Patron méthode pour implémenter
l’algorithme de recherche séquentiel.
54
5
10/12/2022
TD4
o Solution
Recherche À ne pas surcharger
« final » + trouver()
#demarer()
#avancer()
#courant()
#audela()
liste tableau
#demarer() #demarer()
#avancer() #avancer()
#courant() #courant()
#audela() #audela()
55
TD4
o Solution JAVA
56
6
10/12/2022
Question
Trouver une modélisation OO en UML de la représentation physique
donnée ci-dessus.
premier dernier
cle suivant
57
Question
Trouver une modélisation OO en UML de la représentation physique
donnée ci-dessus.
premier dernier
cle suivant
premier 0..1
liste 0..1 noeud
58
7
10/12/2022
59
60
8
10/12/2022
Contexte Strategie
interfaceContexte() interfaceAlgorithme()
Strategie
61
62
9
10/12/2022
63
TD5
o Enoncé
• Mettre en évidence les apports du modèle stratégie pour une
conception OO de table de hachage.
Fonction de hachage 1.
Clef1
Clef2 2.
Clef3
3.
Clef4
m
…
4.
64
10
10/12/2022
TD5
• La fonction hachage permet de transformer une clé vers un
indice.
• Pour une entrée (où un indice appartient à [0,m-1] on peut lui
attacher plusieurs clefs.
• Ceci est connu sous le nom d’une collision.
H(k)= ord(k) mod m
ord(k)=k
n=8 11,1,6,7,13,8,14,5
m=5
5
0 m-1 0
1 11 1 6
2 7
3 13 8
4
14
65
TD5
• Fonction de hachage
Méthode de division:
h(k)= k mod m
avec m est un nombre premier et k un entier.
Méthode de multiplication:
h(k)=[h(KA, mod 1)]
KA mod 1 représente la partie décimale de KA
66
11
10/12/2022
TD5
o Solution
• Correspondance
contexte Hachage
strategieConcret A Division
strategieConcret B Multiplication
67
TD5
o Solution
Hachage
ajouter() FonctionDeHachage
Supprimer() h(k:integer,n:integer) :integer
Rechercher()
Division Multiplication
h(k:integer,n:integer) :integer A:real
h(k:integer,n:integer) :integer
Affecter_A (a:real)
68
12
10/12/2022
69
a
a=50%
b=30% b
c=20% c
sujet
notifié
Requête pour
70
13
10/12/2022
Detache (o:observateur)
EtatObservateur EtatObservateur
AcqEtat()
sujet
MiseAjour()
71
• Sujet concret:
- Elle mémorise l’état d’un sujet concret qui pourrait intéresser
un observateur concret
- Elle fournit une interface (AcqEtat())permettant d’aquérir son
état.
72
14
10/12/2022
• Observateur concret:
- Elle implémente l’interface de mise a jour
- Elle mémorise un état lié aux aspect pertinents du sujet observé
- Elle gère une référence su le sujet observé (ici l’association
ayant comme rôle sujet)
73
74
15
10/12/2022
TD6
o Enoncé
• En utilisant le modèle observateur, proposer une C.OO d’un
sujet ayant trois grandeurs A, B et C et observés par 3 afficheurs:
tabulaire, histogramme et circulaire.
75
TD6
o Solution
Grandeur
Attacher(visualisation) 1..* Visualisation
Détacher(visualisation) MiseAjour()
Observateur
Notifier()
76
16
10/12/2022
77
Dernier()
Elementcourant()
Supprimer()
Ajouter()
78
17
10/12/2022
Premier()
Suivant()
Agregat
termine():boolean
CreerItérateur():iterateur
Elementcourant()
AgregatConcret IterateurConcret
CreerItérateur():iterateurConcret
agregat
79
80
18
10/12/2022
81
TD7
o Enoncé
-En s’inspirant du modèle itérateur proposer deux itérateurs
permettant de parcourir un tableau de gauche à droite et de droite à
gauche.
82
19