Next: Mise en uvre Up: Mise en uvre Previous: Rappels polymorphisme

Mise en uvre


#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).

@
vendredi, 7 novembre 1997, 14:51:48 MET