#ifndef Figure_1_lock #define Figure_1_lock class uneFigure { protected: float x, y; public: uneFigure(float=0.0, float=0.0); protected: virtual char* intitule_genre() const { return "une figure"; }; virtual char* intitule_taille() const { return "Ma taille"; }; virtual char* intitule_reference() const { return "Mon point de référence"; }; public: virtual void se_decrire() const; virtual void deplacer(float=0.0, float=0.0); virtual float taille() const = 0; }; class uneFigurePlane : virtual public uneFigure { public: uneFigurePlane(float=0.0, float=0.0); public: virtual float surface() const = 0; float taille() const; protected: char* intitule_genre() const; char* intitule_taille() const; }; class unCercle : public uneFigurePlane { protected: float rayon; public: unCercle(float=0.0, float=0.0, float=1.0); public: float surface() const; void se_decrire() const; protected: char* intitule_genre() const; char* intitule_reference() const; }; class unRectangle : public uneFigurePlane { protected: float longueur, hauteur; public: unRectangle(float=0.0, float=0.0, float=1.0, float=1.0); public: float surface() const; void se_decrire() const; protected: char* intitule_genre() const; char* intitule_reference() const; virtual void decrire_longueur_hauteur() const; }; class unTriangle : public uneFigurePlane { protected: float base, hauteur; public: unTriangle(float=0.0, float=0.0, float=1.0, float=1.0); public: float surface() const; void se_decrire() const; protected: char* intitule_genre() const; char* intitule_reference() const; }; class unCarre : public unRectangle { public: unCarre(float=0.0, float=0.0, float=1.0); protected: char* intitule_genre() const; void decrire_longueur_hauteur() const; }; class uneFigureLineique : public uneFigure { public: uneFigureLineique(float=0.0, float=0.0); public: virtual float longueur() const = 0; float taille() const; protected: char* intitule_genre() const; char* intitule_taille() const; }; class unSegment : public uneFigureLineique { protected: float xB, yB; public: unSegment(float=0.0, float=0.0, float=1.0, float=1.0); public: float longueur() const; void se_decrire() const; void deplacer(float=0.0, float=0.0); protected: char* intitule_genre() const; char* intitule_reference() const; }; class unRecEPCer : public unRectangle { private: bool detruire; protected: unCercle& cercle; public: unRecEPCer(float=0.0, float=0.0, float=1.0, float=1.0, float=0.5); unRecEPCer(unCercle&, float=0.0, float=0.0, float=1.0, float=1.0); ~unRecEPCer(); public: float surface() const; void se_decrire() const; void deplacer(float=0.0, float=0.0); protected: char* intitule_genre() const; }; class uneFigurePlaneEvidee : public uneFigurePlane { private: bool detruire; protected: uneFigurePlane &exterieure, &interieure; public: uneFigurePlaneEvidee(uneFigurePlane&, uneFigurePlane&, bool=false); ~uneFigurePlaneEvidee(); public: float surface() const; void se_decrire() const; void deplacer(float=0.0, float=0.0); protected: char* intitule_genre() const; }; #endif