Exemple PileEntier.cpp, PileCars.cpp (pas encore de patron de classe)
const int BORNE = 200 ;
class PileEntier
{ private :
int
* sommet;int MAX_ELEM;
int indiceSommet;
public : PileEntier();
PileEntier(int maxi);
PileEntier(const PileEntier &);
~PileEntier();
int getNbElem() const;
void empiler(
int
valeur);
int
depiler();
int
valSommet();
bool estVide ();
void afficher(char *);
};
PileEntier::PileEntier() { MAX_ELEM=BORNE;
sommet = new
int
[BORNE];// allocation dynamique de mémoire indiceSommet =0;
}
PileEntier::PileEntier(int maxi):
MAX_ELEM(maxi) {
sommet = new
int
[maxi];indiceSommet =0;
}
etc …
const int BORNE = 200 ;
class PileCar
{ private :
char
* sommet;int MAX_ELEM;
int indiceSommet;
public : PileCar();
PileCar (int maxi);
PileCar (const PileCar &);
~ PileCar ();
int getNbElem() const;
void empiler(
char
valeur);
char
depiler();
char
valSommet();
bool estVide ();
void afficher(char *);
};
PileCar:: PileCar () { MAX_ELEM=BORNE;
sommet = new
char
[BORNE];// allocation dynamique de mémoire indiceSommet =0;
}
PileCar:: PileCar (int maxi):
MAX_ELEM(maxi) {
sommet = new
char
[maxi];indiceSommet =0;
}
etc …
Illustration de patron de classes 1
template <class T>
class Pile { private:
T
* sommet;int MAX_ELEM;
int indiceSommet;
public : Pile();
// construire une pile contenant "maxi" entiers Pile(int maxi);
// constructeur de recopie Pile(const Pile &);
// destructeur ~Pile();
int getNbElem() const;
void empiler(
T
valeur); // EmpilerT
depiler(); // Dépiler
T
valSommet(); // Consulter la valeur au sommet bool estVide ();void afficher(char *);
};
// initialiser une pile vide ave 200 éléments au max template <class T>
Pile<T>::Pile() { MAX_ELEM=BORNE;
sommet = new
T
[BORNE];indiceSommet =0;
}
template <class T>
Pile<T>::Pile(int maxi): MAX_ELEM(maxi) {
sommet = new T[maxi];
indiceSommet =0;
}
etc …
Illustration de patron de classes 2
Sans patron :
PileEntier p1(12);
p1.empiler(23);
p1.empiler(50);
p1.empiler(30);
p1.empiler(60);
PileEntier p2(p1);
Avec patron :
Pile< int > p1(12);
p1.empiler(23);
p1.empiler(50);
p1.empiler(30);
p1.empiler(60);
Pile<int> p2(p1);
etc . . .
Sans patron :
string chaine1 = "LAVAL", chaine2 = "MONTREAL";
PileCar pile1 = creer(chaine1), pile2 = creer(chaine2);
pile1.afficher("numero 1");
pile2.afficher("numero 2");
Avec patron :
string chaine1 = "LAVAL", chaine2 = "MONTREAL";
Pile< char > pile1 = creer(chaine1), pile2 = creer(chaine2);
pile1.afficher("numero 1");
pile2.afficher("numero 2");
etc . . .
Illustration de patron de classes 3