corrigéTD7POO

Texte de la première page
Correction TD7: héritage
#include <iostream.h>
//*************** classe forme3D *******************
class Forme3D
{
protected:
float hauteur;
public:
Forme3D(float h=0):hauteur(h) {}
virtual ~Forme3D() {}
float Volume() const
{
return hauteur*SurfaceSection();
}
virtual float SurfaceSection() const=0; //méth. Virtuelle pure
virtual void Affiche() const=0; // méth. Virtuelle pure
};
//**************** classe Parallélépipède ******************
class Parallelepipede: public Forme3D
{
protected:
float longueur, largeur;
public:
Parallelepipede(float h=0,float lo=0,float la=0)
:Forme3D(h),longueur(lo),largeur(la) {}
~Parallelepipede() {}
float SurfaceSection() const
{
return longueur*largeur;
}
void Affiche() const
{
cout<<"Parallelepipede:"<<endl;
cout<<" longueur= "<<longueur<<endl;
cout<<" largeur= "<<largeur<<endl;
cout<<" hauteur= "<<hauteur<<endl;
}
};
//**************** classe cylindre ******************
class cylindre: public Forme3D
{
protected:
float rayon;
public:
cylindre(float h=0,float r=0)
:Forme3D(h),rayon(r) {}
~cylindre() {}
float SurfaceSection() const
{
return rayon*rayon*3.1415;
}
void Affiche() const
{
cout<<"Cylindre:"<<endl;
cout<<" rayon= "<<rayon<<endl;
cout<<" hauteur= "<<hauteur<<endl;
}
};
//**************** classe EnsFormeD ******************
class EnsFormeD
{
private:
Forme3D* * Ens;
Int taille, nbre ;
public:
EnsFormeD(int n)
{
Taille = n ;
Ens = new Forme3D*[taille] ;
Nbre = 0 ;
}
~EnsFormeD()
{
for(int i=0;i<taille; i++)
delete Ens[i];
delete [] Ens ;
}
void Ajouter( Forme3D *f)
{
Tab[nbre] = f ;
Nbre ++ ;
}
int NbreForme() const { return nbre; }
Forme3D & operator[] (int i) { return *Ens[i]; }
float VolumeTotal()
{
Float vol=0;
for (int i=0;i<taille; i++)
volume+=(*Tab[i]).volume();
return vol;
}
};
//************************* fonction main **********
void main()
{
EnsFormeD e;
e.Ajouter(new Parallelepipede(30,50,60));
e.Ajouter(new cylindre(35,70));
for(int i=0; i<e.NbreForme(); i++)
e[i].Affiche();
}
#include <iostream.h>
//*************** classe forme3D *******************
class Forme3D
{
protected:
float hauteur;
public:
Forme3D(float h=0):hauteur(h) {}
virtual ~Forme3D() {}
float Volume() const
{
return hauteur*SurfaceSection();
}
virtual float SurfaceSection() const=0; //méth. Virtuelle pure
virtual void Affiche() const=0; // méth. Virtuelle pure
};
//**************** classe Parallélépipède ******************
class Parallelepipede: public Forme3D
{
protected:
float longueur, largeur;
public:
Parallelepipede(float h=0,float lo=0,float la=0)
:Forme3D(h),longueur(lo),largeur(la) {}
~Parallelepipede() {}
float SurfaceSection() const
{
return longueur*largeur;
}
void Affiche() const
{
cout<<"Parallelepipede:"<<endl;
cout<<" longueur= "<<longueur<<endl;
cout<<" largeur= "<<largeur<<endl;
cout<<" hauteur= "<<hauteur<<endl;
}
};
//**************** classe cylindre ******************
class cylindre: public Forme3D
{
protected:
float rayon;
public:
cylindre(float h=0,float r=0)
:Forme3D(h),rayon(r) {}
~cylindre() {}
float SurfaceSection() const
{
return rayon*rayon*3.1415;
}
void Affiche() const
{
cout<<"Cylindre:"<<endl;
cout<<" rayon= "<<rayon<<endl;
cout<<" hauteur= "<<hauteur<<endl;
}
};
//**************** classe EnsFormeD ******************
class EnsFormeD
{
private:
Forme3D* * Ens;
Int taille, nbre ;
public:
EnsFormeD(int n)
{
Taille = n ;
Ens = new Forme3D*[taille] ;
Nbre = 0 ;
}
~EnsFormeD()
{
for(int i=0;i<taille; i++)
delete Ens[i];
delete [] Ens ;
}
void Ajouter( Forme3D *f)
{
Tab[nbre] = f ;
Nbre ++ ;
}
int NbreForme() const { return nbre; }
Forme3D & operator[] (int i) { return *Ens[i]; }
float VolumeTotal()
{
Float vol=0;
for (int i=0;i<taille; i++)
volume+=(*Tab[i]).volume();
return vol;
}
};
//************************* fonction main **********
void main()
{
EnsFormeD e;
e.Ajouter(new Parallelepipede(30,50,60));
e.Ajouter(new cylindre(35,70));
for(int i=0; i<e.NbreForme(); i++)
e[i].Affiche();
}
Partager ce document
Télécharger le fichier
Faire un lien vers ce document
Lien permanentpour un message, un forum, un réseau social
Lien courtpour un SMS ou un profil
Code HTMLpour un site ou un blog
Sur le même sujet
Les mots qui reviennent le plus dans ce document. Chacun lance une recherche dans les fichiers publics.


