Héritage multiple, polymorphisme et classe abstraite
BobTheBob08
Messages postés
2
Statut
Membre
-
BobTheBob08 Messages postés 2 Statut Membre -
BobTheBob08 Messages postés 2 Statut Membre -
Bonjour, je n'arrive pas à ajouter un rectangle avec ses paramètres. Voir section en gras classe EnsembleFormes ci-dessous. Comment aller chercher les paramètres du rectangle dans les classes correspondantes (exemple la couleur dans la classe Affichable). Merci pour votre aide!
class Affichable
{
public:
virtual void affiche() const;
protected:
string couleur_;
int epaisseur_;
};
class Forme
{
public:
virtual void affiche() const;
virtual double calculerAire() const=0;
virtual double calculerPerimetre() const=0;
int getX() const;
int getY() const;
void setX(int x);
void setY(int y);
private:
int x_;
int y_;
};
class Point
{
public:
Point(double x=0.0, double y=0.0);
double longSegment() const;
double getX() const;
double getY() const;
void setX(double x);
void setY(double y);
void affiche() const;
private:
double x_;
double y_;
};
class Rectangle: public Affichable, public Forme
{
public:
Rectangle();
Rectangle(Point p1, Point p2, Point p3, Point p4, string couleur, int epaisseur, int x, int y);
virtual void affiche() const;
virtual double calculerAire() const;
virtual double calculerPerimetre() const;
double getLargeur() const;
double getLongueur() const;
private:
Point p1_;
Point p2_;
Point p3_;
Point p4_;
};
class Cercle: public Affichable, public Forme
{
public:
Cercle(double rayon, Point* centre, string couleur, int epaisseur, int x, int y);
virtual void affiche() const;
virtual double calculerAire() const;
virtual double calculerPerimetre() const;
private:
double rayon_;
Point* centre_;
};
class EnsembleFormes
{
public:
EnsembleFormes();
~EnsembleFormes();
void EnsembleFormes::ajouterForme(Forme& figure)
{
if (typeid(figure) == typeid(Rectangle))
{
if (!appartient(figure))
{
// Comment ajouter un rectangle avec ses informations:
//(Point p1, Point p2, Point p3, Point p4, string couleur, int epaisseur, int x, int y)
vecFigure_.push_back(new Rectangle(???));
}
}
}
bool appartient(Forme& figure) const;
int cardinal() const;
void afficherForme() const;
private :
vector<Forme*> vecFigure_;
};
class Affichable
{
public:
virtual void affiche() const;
protected:
string couleur_;
int epaisseur_;
};
class Forme
{
public:
virtual void affiche() const;
virtual double calculerAire() const=0;
virtual double calculerPerimetre() const=0;
int getX() const;
int getY() const;
void setX(int x);
void setY(int y);
private:
int x_;
int y_;
};
class Point
{
public:
Point(double x=0.0, double y=0.0);
double longSegment() const;
double getX() const;
double getY() const;
void setX(double x);
void setY(double y);
void affiche() const;
private:
double x_;
double y_;
};
class Rectangle: public Affichable, public Forme
{
public:
Rectangle();
Rectangle(Point p1, Point p2, Point p3, Point p4, string couleur, int epaisseur, int x, int y);
virtual void affiche() const;
virtual double calculerAire() const;
virtual double calculerPerimetre() const;
double getLargeur() const;
double getLongueur() const;
private:
Point p1_;
Point p2_;
Point p3_;
Point p4_;
};
class Cercle: public Affichable, public Forme
{
public:
Cercle(double rayon, Point* centre, string couleur, int epaisseur, int x, int y);
virtual void affiche() const;
virtual double calculerAire() const;
virtual double calculerPerimetre() const;
private:
double rayon_;
Point* centre_;
};
class EnsembleFormes
{
public:
EnsembleFormes();
~EnsembleFormes();
void EnsembleFormes::ajouterForme(Forme& figure)
{
if (typeid(figure) == typeid(Rectangle))
{
if (!appartient(figure))
{
// Comment ajouter un rectangle avec ses informations:
//(Point p1, Point p2, Point p3, Point p4, string couleur, int epaisseur, int x, int y)
vecFigure_.push_back(new Rectangle(???));
}
}
}
bool appartient(Forme& figure) const;
int cardinal() const;
void afficherForme() const;
private :
vector<Forme*> vecFigure_;
};
A voir également:
- Héritage multiple, polymorphisme et classe abstraite
- Paris multiple 2/6 explication ✓ - Forum Loisirs / Divertissements
- Cheick yvan formate héritage - Forum Wii U
- Maison héritage canapé avis - Forum Consommation & Internet
- Ecran multiple pc - Guide
- Excel cellule choix multiple - Guide
1 réponse
EnsembleFormes(); & ~EnsembleFormes(); sont respectivement le constructeur et le destructeur de ta classe, lorsque tu vas instancier ta classe avec un objet ( EnsembleFormes *MonObj = new EnsembleFormes(p1, p2, p3, p4, couleur, epaisseur, x, y ) tu vas tout simplement créer un objet => MonObj, qui aura comme caractèristique p1, p2, p3, p4, couleur, epaisseur, x ,y,
tu pourras accéder à ces caractéristiques avec la styntaxe =
MonObj->p1
MonObj->p2
MonObj->p3 ....
et ton constructeur aura la forme EnsembleFormes(Point p1, Point p2, Point p3, Point p4, string couleur, int epaisseur, int x, int y)
{
p1 = this->p1
p2 = this->p2
....
}
déclare bien les variables de ta classe en private ou en public et le tour est joué
tu pourras accéder à ces caractéristiques avec la styntaxe =
MonObj->p1
MonObj->p2
MonObj->p3 ....
et ton constructeur aura la forme EnsembleFormes(Point p1, Point p2, Point p3, Point p4, string couleur, int epaisseur, int x, int y)
{
p1 = this->p1
p2 = this->p2
....
}
déclare bien les variables de ta classe en private ou en public et le tour est joué
BobTheBob08
Messages postés
2
Statut
Membre
Merci beaucoup pour les précisions.