TD6: Patrons de conception

Page 1 sur 7Lecteur de document UniversityLib

TD6: Patrons de conception

Software Engineering, specifically Design Patterns · notes

Voir tous les documents en génie logiciel

TD6: Patrons de conception

Toutes les fabriques de chocolat modernes ont des bouilleurs assist s par ordinateur. La t che du bouilleur consiste contenir un m lange de chocolat et de lait, le

porter bullition puis le transmettre la phase suivante o il est transform en plaquettes de chocolat. Voici la classe contr leur du bouilleur industriel de

code;

vous

Bonchoco,

vous constatez quils ont essay tr s soigneusement d viter les catastrophes, par exemple de vider deux mille litres de m lange qui na pas bouilli, de remplir un

vide.

bouilleur

bouilleur

bouillir

Publicité

tudiez

plein

faire

d j

SA.

un

ou

de

Si

le

Bonchoco a fait un travail honorable en essayant d viter

Publicité

les probl mes ; Pourtant, vous soup onnez probablement quen l chant deux instances de

BouilleurChocolat dans la nature, on sexpose des catastrophes.

Question : Aidez Bonchoco am liorer sa classe BouilleurChocolat en la transformant en singleton.

Une expression arithm tique peut se repr senter de mani re arborescente. Par exemple, l'expression (2+3)4 peut se repr senter comme le r sultat de l'op ration

appliqu e 4 et au r sultat d'une seconde op ration + appliqu e 2 et 3. 4 et +(2,3) sont dits op randes de l'expression qui a * comme op rateur. Selon ce

principe, une autre notation pour cette expression arithm tique est *(+(2,3) , 4), aussi appel e notation polonaise et notamment utilis e sur les calculatrice HP.

Cette notation peut se repr senter de avec un arbre comme suit.

Il est noter quil devient ainsi possible de se passer tout fait de parenth ses : il n'y a aucune ambigu t lorsqu'on utilise la notation *+234.

Il y a deux types d'expressions : les expressions binaires comme +(2,3) et les expressions unaires qui utilisent des op rations ne prenant qu'un seul argument, comme

par exemple l'op rateur de changement de signe

dans l'expression. Ces deux types d'expression sont caract ris es par un op rateur et disposent d'une

Publicité

op ration calculerValeur(). Le terme est un concept plus g n ral qu'une expression : il peut tre soit une valeur constante (1,2, 3 ou 4) soit une expression

comme +(2,3). Dans tous les cas, un terme doit disposer d'une op ration calculerValeur(). Un autre type de terme peut tre une variable qui, en plus d'une

valeur comme pour les constantes, dispose d'un nom.

Question : Utilisez le pattern composite pour produire un diagramme de classes ad quat pour la repr sentation des expressions arithm tiques.

Un calculateur permet deffectuer des calculs. Etant donn que nimporte qui peut demander un calculateur deffectuer des calculs, la classe Synchronisateur a t

construite pour r guler les calculs.

Les personnes qui souhaitent demander la r alisation dun calcul doivent passer par le synchronisateur (via lop ration calculer()). Celui-ci distribue les calculs aux

diff rents calculateurs avec lesquels il est li (cest lui qui appelle lop ration calculer () sur les calculateurs). Un calculateur conna t le synchronisateur auquel il est

reli gr ce la propri t sync de type Synchronisateur. Sa valeur doit tre d termin e lors de la cr ation des objets de type Calculateur.

Nous souhaitons maintenant d finir une classe repr sentant une barre de progression. Cette barre affiche l tat davancement du calcul (en pourcentage).

Nous souhaitons maintenant d finir une classe repr sentant une barre de progression. Cette barre affiche l tat davancement du calcul (en pourcentage).

Publicité

Une barre de progression re oit des messages dun calculateur qui linforme que l tat davancement du calcul a chang . D finissez cette classe.

Tout comme le synchronisateur, une barre de progression doit se d clarer aupr s dun calculateur. De plus, le calculateur doit offrir une op ration

permettant de conna tre le pourcentage davancement du calcul.

Question : Appliquez le patron de conception Observer pour am liorer la conception de ces classes.

La classe Observer du patron de conception correspond une abstraction de la classe BarreProgression dont cette derni re h rite.

Cest elle qui doit contenir la m thode par laquelle la barre de progression est inform e des avancements du calculateur. La

classe Subject du patron de conception correspond une abstraction de la classe Calculateur dont cette derni re h rite. Dans

notre cas, cette classe contient l quivalent de lop ration attach(in obs:Observer), qui, dans notre cas, est lop ration

declarerBarre(in barre:Progression) ainsi que lop ration de notification tous les observateurs (notify()). La figure suivante

repr sente lapplication du patron de conception Observer sur nos Classes