Vous êtes sur la page 1sur 6

Spcification et conception

TP 3IF C++ : Classe Simple


Ludmila Danilescu Marco Montalto
22/10/2013

Sommaire
Introduction ..............................................................................................................................................................2
1.

2.

3.

4.

Gnralits .......................................................................................................................................................2
1.1

Dfinitions ................................................................................................................................................2

1.2

Choix gnraux .........................................................................................................................................2

Spcification des mthodes : Add, FindDMP ...................................................................................................3


2.1

Mthode Add ............................................................................................................................................3

2.2

Mthode FindDMP ...................................................................................................................................3

Test unitaires pour la mthode Count..............................................................................................................3


3.1

Formalisme ...............................................................................................................................................3

3.2

Tests..........................................................................................................................................................4

3.2.1

Nombre dlments dune Cartographie vide ..................................................................................4

3.2.2

Nombre dlments dune Cartographie non vide ...........................................................................4

Tests fonctionnels de la classe Cartography.cpp .........................................................................................4


4.1

Introduction aux autres mthodes ...........................................................................................................4

4.2

Tests..........................................................................................................................................................5

Class Cartography

Introduction
La classe Carthography a pour but de grer les mesures qui reprsentent la description de la matire dans
un point de la surface dune plante. Pour ceci, des outils de gestion ont t implments afin de garantir
lajout dune (ou plusieurs) mesure, sa recherche et son affichage.

1. Gnralits
1.1

Dfinitions

Coordonnes : Elles reprsentent le reprage dun point la surface, permettant de lidentifier. La hauteur
tant nglige, on ne considrera que les coordonnes X et Y, respectivement pour la longitude et la latitude
du point.
DMP : On appelle DMP la description de la matire dans un point de la surface de la plante. Chaque point
est caractris par ses coordonnes et sa DMP.
Cartographie : Une cartographie est lensemble des mesures sur la plante. Sa consultation permet
lanalyse la plante.

1.2

Choix gnraux

Ajout dune mesure : Lajout dune nouvelle mesure est possible si et seulement si le point nest pas dj
prsent dans la cartographie. Un code dchec est renvoy dans le cas o la contrainte nest pas respecte.
Tableau de taille dynamique : La taille du tableau augmente automatiquement lorsque on a besoin de
stocker en mmoire des nouvelles donnes.
Indexation des objets : Lors de la rcupration dune donne de la cartographie, lindice de celle-ci
correspond la position laquelle la donne a t retrouve dans le tableau des mesures (Ex. Lindice 0
indique la premire position du tableau).
Affichage : Lors de lappel de la mthode Display(), laffichage choisi pour la cartographie est le suivant :
Voici les donnes relatives la cartographie de la plante Aldebaran :
Coordonnes (X, Y) : (0, 0), Matire prsente : SiO2
Coordonnes (X, Y) : (1, 1), Matire prsente : H20
Coordonnes (X, Y) : (2, 2), Matire prsente : U
Coordonnes (X, Y) : (2, 5), Matire prsente : Au
Coordonnes (X, Y) : (-1, -2), Matire prsente : Ag

Class Cartography

2. Spcification des mthodes : Add, FindDMP


2.1

Mthode Add

La mthode Add permet dajouter des mesures la carte, i.e. dans le tableau. On rappelle que une mesure
est caractrise par un couple de coordonnes X-Y et dune DMP qui sont passs en paramtres. La mthode
renvoie true si lajout a t fait i.e. si dans la cartographie il ny a pas de point ayant les mmes coordonnes
que celui quon souhaite ajouter.
Exemple dutilisation pour une cartographie C :

C.Add(2, 2 ,U);
C.Add(2, 2, H2O);

2.2

//ajout dune mesure de paramtres X=2, Y=2, DMP=U, renvoie true


//renvoie false, car un point de coordonnes X=2, Y=2 est dj prsent

Mthode FindDMP

La mthode FindDMP permet de rcuprer lindice dune mesure et les coordonnes du point
correspondant. Elle prend en paramtre la description de la matire et lindice du tableau partir duquel on
veut commencer la recherche. Les coordonnes du point trouv sont stockes dans deux variables de la classe
qui appelle la mthode. Deux cas derreur ont tait prvus: si la mesure recherche nest pas trouve, elle
renvoie la valeur -1 ; si lindice indiqu nest pas un indice du tableau (plus petit que 0 ou suprieur au nombre
dlments prsents), elle renvoie la valeur -2.
Exemple dutilisation pour une cartographie C :

float fX, fY ;
C.FindDMP(U, 0, fX, fY);

//initialisation de deux variables pour le stockage des coordonnes


//recherche la mesure dont la DMP=U, partir de lindice 0

3. Test unitaires pour la mthode Count


3.1

Formalisme

Pour simplifier les critures, on utilise un formalisme.


On indique une mesure comme ceci : (x, y, abc) o x et y seront deux rels et abc une chaine de
caractres quelconque, indiquant une matire. Pour lajout, on utilise la convention selon laquelle une mesure
entre deux barres correspond lappel de la mthode Add. Plusieurs objets peuvent tre ajouts en mme
temps, en les sparant les uns des autres par des virgules ; |(2, 3, H2O), (3, 5, SiO2)| correspond lajout de
deux mesures. Lappel de la mthode Count se fera grce aux symboles < >.

Class Cartography

3.2

Tests

3.2.1 Nombre dlments dune Cartographie vide


Un appel au constructeur de la classe cre une cartographie vide. Sans lajout daucune mesure, on
sattend que la mthode Count revoie la valeur 0.
3.2.2 Nombre dlments dune Cartographie non vide
Ayant cr une Cartographie vide, on lui ajoute un certain nombre dlments. La mthode Count doit
renvoyer le nombre exacte dlments, en respectant la rgle du conflit dans le cas de deux points de mmes
coordonnes.
Jeux de donnes.
<| (1, 1 ,H2O),(2, 3, SiO2), (3, 5, U) |> = 3
<| (181, 911 ,H2O),(2, 3, SiO2), (181, 911, U) |> = 2
<| (1871, 11911 ,H2O),(234, 567, SiO2), (1871, 11911, U), (1871, 11911 ,Ag), (234, 567 ,Au) |> = 2

a serait trs utile de tester lefficacit de la mthode Count laide dune boucle, pour ajouter et ensuite
compter un trs grand nombre dlments (de lordre du 105). Si on excute la boucle n fois, on vrifiera que le
rsultat du Count est bien n ( attention ne pas crer des conflits entre les lments quon veut ajouter ).
Exemple (en pseudocode) :
Cartography Cartographie
Pour i allant de 0 9999 faire
insrer ( i, i, Au) dans Cartographie

Count() = 10000

4. Tests fonctionnels de la classe Cartography.cpp


4.1

Introduction aux autres mthodes

Cartography() : Constructeur sans paramtres, pour initialiser une cartographie.


Cartography ( const Cartography & CarteACopier ) : Constructeur de copie. ( Prvu par le Guide de Style )
Display() : Affiche, sur la sortie standard, les mesures prsentes dans une cartographie.
Count(char* pszDMP) : Compte le nombre de mesures pour une matire (pszDMP ) prcise en paramtre.
GetData(float fX, float fY) : Renvoie la DMP pour un point de coordonnes fX et fY (sil existe).

-> rsultat attendu

Class Cartography

4.2

Tests

Afin de vrifier la fonctionnalit de la classe Cartography, il faut prvoir un script qui teste en mme temps
toutes les mthodes de la classe.
Exemple (en pseudocode) :
Cartography C
//appel du constructeur sans paramtres
inserer (1, 2, Au) dans C
//appel de la mthode Add ()
inserer (2, 10, SiO2) dans C
inserer (3, 50, H2O) dans C
inserer (4, 50, H2O) dans C
inserer (3, 50, H2O) dans C // conflit
Display() C :
Voici les donnes relatives la cartographie de la plante Aldebaran :
Coordonnes (X, Y) : (1, 2), Matire prsente : Au
Coordonnes (X, Y) : (2, 10), Matire prsente : SiO2
Coordonnes (X, Y) : (3, 50), Matire prsente : H2O
Coordonnes (X, Y) : (4, 50), Matire prsente : H2O

Count() = 4

Count(H2O) = 2
Count(U) = 0
GetData(2,10) = SiO2
GetData(10,100) =
FindDMP(H2O, 2, X, Y) = 2 X=3 Y=50
FindDMP(H2O, 3, X, Y) = 2 X=4 Y=50
FindDMP(H2O, 6, X, Y) = -2
FindDMP(SiO2, 2, X, Y) = -1

Comme spcifi pour la mthode Count, pour avoir rellement une ide sur le bon fonctionnement de
la classe, il faudrait implmenter des boucles2 permettant lajout dun grand nombre dlments et refaire les
tests. Cela permet aussi de connaitre les points forts et faibles de lapplication (ex. vitesse dexcution, gestion
de la mmoire, etc.), pour en prvoir des amliorations.

Voir document B3302_tests.cpp en annexe

Class Cartography