Advertisement
AntonioVillanueva

héritage des classes + operateur externe

Aug 25th, 2021
1,271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.09 KB | None | 0 0
  1. //Exercice c ++ par la pratique , l'héritage des classes + operateur externe<<
  2.  
  3. #include <iostream>
  4. #include <cmath>
  5. using namespace std;
  6.  
  7. //----------------------------------------------------------------------
  8. //----------------------------------------------------------------------
  9. class Rectangle {
  10.     //private:
  11.     protected://autorise l'héritage dans classes dérivés
  12.         double largueur;
  13.         double longueur;
  14.     public :   
  15.         Rectangle(double _largueur,double _longueur);
  16.         double getSurface() const;
  17.         double getLargueur() const;
  18.         double getLongueur() const;
  19.        
  20.         void setLargueur(double l);
  21.         void setLongueur (double l);
  22.  
  23. };
  24. //----------------------------------------------------------------------
  25. Rectangle::Rectangle (double _largueur=0,double _longueur=0):largueur(_largueur),
  26.     longueur(_longueur){}
  27. double Rectangle::getSurface() const {return largueur*longueur;}
  28. double Rectangle::getLargueur() const{return largueur;}
  29. double Rectangle::getLongueur() const{return longueur;}
  30.  
  31. void Rectangle::setLargueur(double _largueur){largueur=_largueur;}
  32. void Rectangle::setLongueur (double _longueur){longueur=_longueur;}
  33.  
  34. //----------------------------------------------------------------------
  35. class Cercle{
  36.     private:
  37.     double rayon,x,y;
  38.    
  39.     public:
  40.     Cercle(double _rayon,double _x,double _y);
  41.     double getSurface () const;
  42.     bool estInterieur(double _x,double _y) const;
  43.     void getCentre(double& x_out ,double& y_out) const;
  44.     void setCentre(double _x,double _y);
  45.     double getRayon() const;
  46. };
  47. //----------------------------------------------------------------------
  48. Cercle::Cercle(double _rayon=0 , double _x=0, double _y=0):rayon(_rayon) , x(_x) , y(_y) {}
  49. double Cercle::getSurface () const {return M_PI* rayon*rayon;}
  50. bool Cercle::estInterieur(double _x,double _y) const
  51.     {return  ( (_x - x) * ( _x * x) -  (_y - y) * ( _y * y) )  <= rayon*rayon; }
  52. void Cercle::getCentre(double& x_out ,double& y_out) const
  53.     { x_out=x;
  54.     y_out=y;}
  55.  
  56. void Cercle::setCentre(double _x,double _y){x=_x;y=_y;}
  57. double Cercle::getRayon() const{return rayon;}
  58. //----------------------------------------------------------------------
  59. //----------------------------------------------------------------------
  60. //Héritage .Classe qui hérite de la précédente Rectangle
  61. class RectangleColore:public Rectangle{
  62.     unsigned int couleur;
  63.     public:
  64.     RectangleColore (double _largueur,double _longueur ,int couleur);
  65.     int getCouleur() const;
  66.     void setCouleur(int c);
  67. };
  68. RectangleColore::RectangleColore (double _largueur=0,double _longueur=0 ,int _couleur=0):
  69.     //Appel d'abord le constructeur de la classe mere
  70.     Rectangle(_largueur,_longueur),couleur(_couleur){};
  71.  
  72. int RectangleColore::getCouleur() const{return couleur;}
  73. void RectangleColore::setCouleur(int c){couleur=c;}
  74. //----------------------------------------------------------------------
  75. //----------------------------------------------------------------------
  76. //Operateurs externes << cout
  77. ostream& operator <<(ostream& sortie,const Rectangle rectangle){
  78.     cout <<endl<<" Largueur = "<<rectangle.getLargueur()<<" , Longeur = "<<rectangle.getLongueur()
  79.     <<" = "<<rectangle.getSurface();   
  80.     return sortie;
  81. }
  82.  
  83. ostream& operator <<(ostream& sortie,const Cercle cercle){
  84.     cout <<endl<<" Rayon = "<<cercle.getRayon()<<", surface = "<<cercle.getSurface();  
  85.     return sortie;
  86. }
  87.  
  88.  
  89. //----------------------------------------------------------------------
  90. //----------------------------------------------------------------------
  91. //----------------------------------------------------------------------
  92. int main (){
  93.     Rectangle r(2,3);
  94.  
  95.     cout<<r<<endl;//utilise une redéfinition de l'opérateur externe <<
  96.    
  97.     RectangleColore rc(5,7,2);
  98.     cout <<rc<<" , couleur = "<< rc.getCouleur();//utilise une redéfinition de l'opérateur externe <<
  99.    
  100.     rc.setCouleur(12);
  101.     rc.setLargueur(15);
  102.     rc.setLongueur(17);
  103.    
  104.     //cout <<rc.getCouleur() <<","<<rc.getLargueur()<<","<<rc.getLongueur()<<" = "<<rc.getSurface() <<endl;
  105.     cout <<rc<<" , couleur = "<< rc.getCouleur();//utilise une redéfinition de l'opérateur externe <<        
  106.    
  107.     Cercle c(12,1,1);
  108.     cout <<c<<endl;
  109.     return 0;
  110. }
  111.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement