Next: Mise en uvre
Up: Mise en uvre
Previous: Rappels polymorphisme
#include <iostream.h>
class Object {
public:
Object (void) {}
virtual void affiche(void) const ;
} ;
void Object::affiche(void) const {
cout << "class Object" << endl ;
}
typedef Object *PtrObject ;
class Pile {
int ppile ;
PtrObject tab[50] ;
public:
Pile(void) : ppile(0) {}
void empiler(const PtrObject & po) {
tab[ppile++]=po ;
}
PtrObject depiler(void) {
return tab[--ppile] ;
}
} ;
class SousObject : public Object {
public:
SousObject(void) {}
virtual void affiche(void) const {
cout << "class SousObject..." << endl ;
}
} ;
int main(void) {
Pile jEmpileTout ;
SousObject so1,so2 ;
Object o1,o2 ;
jEmpileTout.empiler(&o1) ;
jEmpileTout.empiler(&so1) ;
jEmpileTout.empiler(&o2) ;
jEmpileTout.empiler(&so2) ;
for (int i=1; i<=4;i++)
jEmpileTout.depiler()->affiche() ;
return 0 ;
}
La généricité est bien implémentée mais impose au programmeur d'utiliser des pointeurs et de construire une hiérarchie de classes à partir d'une classe racine (non gérée automatiquement par le langage).