Vous êtes sur la page 1sur 19

10/12/2022

V. Les modèles de
comportement ou
comportementaux

45

V. Les modèles comportementaux

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

V. Les modèles comportementaux

5.1 Le modèle Patron de méthode


o Intention
- Le modèle Patron de méthode définit, dans une opération
appelée « Patron méthode », le squelette d’un algorithme.
- Un tel algorithme possède des parties invariantes et des
parties variantes.
- Les parties variantes sont déléguées aux classes
descendantes (sous-classes).
- Le squelette ou la structure de l’algorithme ne doit pas être
touché par les sous-classes.

Rappel : Un algorithme est une séquence d’état qui aboutit à


une solution.

47

V. Les modèles comportementaux

5.1 Le modèle Patron de méthode


o Motivation
ARS : algorithme de recherche séquentiel

Cas1 : ensemble d’éléments stockés dans un tableau.


#define n 10 ;
int a[n] ;
unsigned recherche(int x){
unsigned i;
i=0;
while ((i<n)&&(a[i]!=x))
i++;
return (i<n);
}

48

2
10/12/2022

V. Les modèles comportementaux

5.1 Le modèle Patron de méthode


Cas2: ensemble d’éléments stockés dans une liste linéaire
struct nœud
{
int cle ;
struct nœud* suivant ;
}
struct liste{
struct nœud * premier ;
struct nœud * dernier ;
}
Unsigned recherche (int x){
struct nœud *p ;
p=ll -> premier ;
while(p && p-> cle!=x)
p= p -> suivant;
return p!= null;
}
49

V. Les modèles comportementaux

5.1 Le modèle Patron de méthode

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

V. Les modèles comportementaux

5.1 Le modèle Patron de méthode


o Structure :

Classe abstraite
PatronMethode()

operationPrimitive1()

operationPrimitive2()

Classe concrete
operationPrimitive1()

operationPrimitive2()

51

V. Les modèles comportementaux

5.1 Le modèle Patron de méthode


o Constituants
 Classe abstraite :
- Elle encapsule le squelette (ou la structure) de l’algorithme dans
l’opération PatronMéthode. Celle-ci ne peut pas être surchargé par les
classes descendantes .
 Elle propose des méthodes abstraites (operationPrimitives1() et
operationPrimitives2() ) permettant de modéliser les étapes variantes
de l’algorithme. Ces méthodes ne peuvent pas être appelées par des
clients.
 L’opération PatronMéthode en tant qu’opération effective va appeler
les opérations abstraites (operationPrimitives1() et
operationPrimitives2()).

52

4
10/12/2022

V. Les modèles comportementaux

5.1 Le modèle Patron de méthode


o Constituants
Un tel principe permettant une structure de contrôle inversée est connu
sous le nom de principe Hollywood.

 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

V. Les modèles comportementaux

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

V. Les modèles comportementaux

TD4
o Solution
Recherche À ne pas surcharger
« final » + trouver()

#demarer()

#avancer()

#courant()

#audela()

liste tableau

#demarer() #demarer()

#avancer() #avancer()

#courant() #courant()

#audela() #audela()

55

V. Les modèles comportementaux

TD4
o Solution JAVA

56

6
10/12/2022

V. Les modèles comportementaux

Question
Trouver une modélisation OO en UML de la représentation physique
donnée ci-dessus.

premier dernier
cle suivant

57

V. Les modèles comportementaux

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

0..1 cle : integer


dernier suivant

58

7
10/12/2022

V. Les modèles comportementaux

5.2 Le modèle Stratégie


o Intention
- Définit une famille d’algorithmes, encapsule chacun d’entre
eux et les rend interchangeables.
- Le modèle stratégie permet aux algorithmes d’évoluer
indépendamment des clients.
o Motivation
- Un problème donné peut être résolu par plusieurs
algorithmes.
Par exemple: Tri: Tri insersion, tri selection, tri à bulle, tri
rapide, tri par tas,

59

V. Les modèles comportementaux

5.2 Le modèle Stratégie


-Une mauvaise solution: codifier l’algorithme au sein de la
classe client
Class Client {…
Public void tri_insertion(){…}
…}
Problème:
- L’évolutivité de la classe Client ne sera pas aisée.
Idée forte du modèle stratégie et développer les algorithmes
et les clients.

60

8
10/12/2022

V. Les modèles comportementaux

5.2 Le modèle Stratégie


o Structure

Contexte Strategie

interfaceContexte() interfaceAlgorithme()
Strategie

StrategieConcret A StrategieConcret B StrategieConcret C

interfaceAlgorithme() interfaceAlgorithme() interfaceAlgorithme()

61

V. Les modèles comportementaux

5.2 Le modèle Stratégie


o Constituant
• Strategie:
- Elle propose une interface commune à tout les algorithmes
représentés
• StrategieConcrete:
- Elle implémente l’interface proposée par la classe abstraite
« strategie »
- Elle encapsule un algorithme bien définit.
• Contexte:
-Elle modélise le contexte d’application des algorithmes
représentés
- Elle gère une référence sur un objet strategie.
- Elle peut fournir une interface offrant les données
nécessaires à l’exécution d’un algorithme représenté.

62

9
10/12/2022

V. Les modèles comportementaux

5.2 Le modèle Stratégie


o Collaboration
• Le client commence par choisir une stratégie concrète (à
défaut on peut lui proposer une stratégie choisie à priori) et il
configure l’objet contexte avec la stratégie choisie. Ensuite il
passe par l’objet contexte.

• Les deux classes « contexte » et « strategie » peuvent interagir


par l’implémentation d’une stratégie concrète.

• L’interaction entre contexte et strategie peut être assurée par


une référence sur un objet contexte géré par strategie, soit par
dépendances non-structurelles (paramètres formels).

63

V. Les modèles comportementaux

TD5
o Enoncé
• Mettre en évidence les apports du modèle stratégie pour une
conception OO de table de hachage.

Rappel: Table de hachage

Fonction de hachage 1.
Clef1
Clef2 2.
Clef3
3.
Clef4
m

4.

Espace de clés Espace des indices

64

10
10/12/2022

V. Les modèles comportementaux

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

V. Les modèles comportementaux

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

V. Les modèles comportementaux

TD5
o Solution
• Correspondance

contexte Hachage

strategie Fonction de hachage

strategieConcret A Division

strategieConcret B Multiplication

67

V. Les modèles comportementaux

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

V. Les modèles comportementaux

5.3 Le modèle Observateur


o Intention
- Ce modèle introduit deux concepts: sujet et observateur.
- Il permet d ’établir une interdépendance souvent de type 1
à plusieurs
- Un sujet observé par plusieurs observateurs.
- Le changement de l’objet observé entraine une
modification vers ses observateurs

69

V. Les modèles comportementaux

5.3 Le modèle Observateur


o Motivation 200
a
a b c 100 b
80 10 10 c
0
50 30 20
40 30 30

a
a=50%
b=30% b
c=20% c
sujet

notifié
Requête pour

70

13
10/12/2022

V. Les modèles comportementaux

5.3 Le modèle Observateur


o Structure
Sujet
notifier() Observateur
1..*
Attache(o:observateur) observateur
MiseAjour()

Detache (o:observateur)

Sujet concret Observateur concret

EtatObservateur EtatObservateur

AcqEtat()
sujet
MiseAjour()

71

V. Les modèles comportementaux

5.3 Le modèle Observateur


o Constituants
• Sujet:
- Elle propose une interface permettant d’attacher et de détacher
des observateurs dynamiquement
- Elle connait ses observateurs via une référence.
- Elle propose une interface de notification (opérateur notifié)
permettant d’informer ses observateurs d’un changement d’état
d’un sujet concret.

• 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

V. Les modèles comportementaux

5.3 Le modèle Observateur


o Constituants
• Observateur:
- C’est une classe abstraite qui propose une interface de mise à
jour commune à tous les observateurs concrets

• 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

V. Les modèles comportementaux

5.3 Le modèle Observateur


o Collaboration
• Un sujet concret qui détecte un changement lié à son état active
l’opération « notifier », celle-ci informe tout les observateurs
observant ce sujet concret,

• Chaque observateur concret concerné va activer l’opération mise


à jour, celle-ci pourrait demander des renseignements auprès du
sujet concerné,

74

15
10/12/2022

V. Les modèles comportementaux

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

V. Les modèles comportementaux

TD6
o Solution
Grandeur
Attacher(visualisation) 1..* Visualisation

Détacher(visualisation) MiseAjour()
Observateur
Notifier()

Tabulaire Histogramme Circulaire


A:real A:real A:real
GrandeurReelle B:real B:real B:real
A:real
C:real C:real C:real
B:real Visualisation() Visualisation() Visualisation()
C:real Miseajour() Miseajour() Miseajour()
ObtenirA ():real
sujet
ObtenirB():real sujet
sujet
ObtenirC():real

76

16
10/12/2022

V. Les modèles comportementaux

5.4 Le modèle itérateur


o Intention
- Il définit une méthode d’accès séquentielle à un agrégat
d’objet sans dévoiler sa représentation interne.
- Agrégat est un objet stockant plusieurs objets: c’est une
structure composite
o Motivation
- Des structures de données ou des agrégats (comme table,
liste linéaire, arbre, …) peuvent être parcourue en adoptant
plusieurs itinéraires,
- Table de gauche à droite
de droite à gauche

77

V. Les modèles comportementaux

5.4 Le modèle itérateur


o Motivation Liste
Premier()
Idem, pour les listes: Suivant()

Dernier()

Elementcourant()

Supprimer()

Ajouter()

- Il s’agit d’une mauvaise solution, car on intègre dans la


structure de donnée (ou dans l’agrégat), les opérations liées
au parcours séquentiel de cet agrégat.
- Idée: découpler des techniques séquentielles appelées
itérateurs.

78

17
10/12/2022

V. Les modèles comportementaux

5.4 Le modèle itérateur


o Structure Iterateur

Premier()

Suivant()
Agregat
termine():boolean
CreerItérateur():iterateur
Elementcourant()

AgregatConcret IterateurConcret

CreerItérateur():iterateurConcret

agregat

79

V. Les modèles comportementaux

5.4 Le modèle itérateur


o Constituants
-Iterateur:
• Il offre une interface (premier, suivant, termine, elementCourant)
permettant de parcourir d’une façon séquentielle un agrégat, Bien
entendu il s’agit d’une classe abstraite.
- IterateurConcret:
• Il implémente l’interface proposée par Iterateur,
• Il gère une référence sur un agrégat concret,
• Il gère un indexe permettant de connaitre l’élément courant.
- Agregat:
• Il propose une interface abstraite permettant de créer des
itérateurs,
-AgregatConcret:
• Il implémente l’interface proposée par Agregat.

80

18
10/12/2022

V. Les modèles comportementaux

5.4 Le modèle itérateur


o Collaboration
-Itérateur concret assure le suivi de l’élément courant de l’agrégat et
permet de déterminer l’élément suivant dans le parcours.

81

V. Les modèles comportementaux

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

Vous aimerez peut-être aussi