« Langage C++/Objet » : différence entre les versions

Contenu supprimé Contenu ajouté
Ppignol (discussion | contributions)
Ppignol (discussion | contributions)
Ligne 330 :
class Parallelogramme: public Quadrilatere
{
private:
double& mCorrectionAngle(double& pAngle);
 
protected:
virtual void mAngleA(double& pAngle);
virtual void mAngleB(double& pAngle);
virtual void mAngleC(double& pAngle);
virtual void mAngleD(double& pAngle);
 
public:
// Constructeur parametré
Ligne 347 ⟶ 356 :
using namespace std;
 
double& mCorrectionAngle(double& pAngle)
{
// Corriger les dépassements
double vAngleMaximal = 180.0;
pAngle %= vAngleMaximal;
// Si l'angle est
if(pAngle < 0)
{
// Corriger le signe.
pAngle *= -1;
}
return pAngle;
}
 
virtual void mAngleA(double& pAngle)
{
 
}
 
virtual void mAngleB(double& pAngle);
virtual void mAngleC(double& pAngle);
virtual void mAngleD(double& pAngle);
// Constructeur parametré
Parallelogramme::Parallelogramme(double pArreteAB, double pArreteBC, double pAngleA):Quadrilatère(pArreteAB, pArreteBC, pArreteAB, pArreteBC, 0.0, 0.0, 0.0, 0.0)
{
// Dans un Parallélogramme les arrêtes :
// Enregistre de manière fiable la valeur en passant par la propriété.
// AB = CD et BC = AD.
this->mAngleA(&pAngleA);
// Les angles :
// A = C, B = D et A + B + C + D = 360°.
// Ici nous passons par les méthodes de Parallélogramme pour garantir que les angles seront inférieur ou égal à 180.
 
double vAngleMax = 180.0;
this->mAngleA(&pAngleA);
this->mAngleB(vAngleMax - this->mCorrectionAngle(pAngleA));
this->mAngleC(pAngleA);
this->mAngleD(vAngleMax - this->mCorrectionAngle(pAngleA));
}
 
Ligne 362 ⟶ 402 :
virtual void Parallelogramme::mDessine()
{
//Dessine ici le parallélogrammeLosange (vrais code de dessin non pertinent car trop volumineux pour le gain obtenu sur l'intérêt de la leçon).
cout << "Dessine Parallelogramme :\n" << endl;
cout << "Dessine parallélogramme - AB = " << this->mArreteAB() << ", BC = " << this->mArreteBC() << ", CD = " << this->mArreteCD() << ", DA = " << this->mArreteDA() << this->mAngleA() << endl;
Quadrilatere::mDessine();
}
</source>
Ligne 377 ⟶ 418 :
private:
double& mCorrectionAngle(double& pAngle);
 
protected:
virtual void mAngleA(double& pAngle);
Ligne 393 ⟶ 435 :
<source lang="cpp">
#include "Losange.h"
 
// L'angle maximal d'un angle de losange est : 180°
double& Losange::mCorrectionAngle(double& pAngle)
Ligne 403 ⟶ 446 :
{
// Corriger le signe.
pAngle +*= vAngleMaximal-1;
}
return pAngle;
Ligne 432 ⟶ 475 :
}
 
Losange::Losange(double pArreteAB, double pArreteBC, double pAngleA):Quadrilatere(pArreteAB, pArreteBC, pArreteBC, pArreteAB, 0.0, 0.0, 0.0, 0.0)
{
// Dans un losange les arrêtes :
Ligne 438 ⟶ 481 :
// Les angles :
// A = C, B = D et A + B + C + D = 360°.
// Ici jenous passepassons par les méthodes de Losange pour garantir que les angles seront inférieur ou égal à 180.
 
double vAngleMax = 180.0;
this->mAngleA(pAngleA);
this->mAngleB(vAngleMax - this->mCorrigerAnglemCorrectionAngle(pAngleA));
this->mAngleC(pAngleA);
this->mAngleD(vAngleMax - this->mCorrigerAnglemCorrectionAngle(pAngleA));
}
 
Ligne 454 ⟶ 497 :
{
//Dessine ici le Losange (vrais code de dessin non pertinent car trop volumineux pour le gain obtenu sur l'intérêt de la leçon).
cout << "Dessine Losange :\n" << endl;
Quadrilatere::mDessine();
"\tAB = " << this->mArreteAB() << ",\n"
"\tBC = " << this->mArreteBC() << ",\n"
"\tCD = " << this->mArreteCD() << ",\n"
"\tDA = " << this->mArreteDA() << ",\n"
"\tAngle A = " << this->mAngleA() << ",\n"
"\tAngle B = " << this->mAngleB() << ",\n"
"\tAngle C = " << this->mAngleC() << ",\n"
"\tAngle D = " << this->mAngleD() << endl;
}
 
Ligne 485 ⟶ 521 :
double aAngleD;
double& mCorrectionAngle(double& pAngle);
double& mCorrectionArrete(double& pArrete);
protected:
void mArreteAB(double& pArettepArrete);
void mArreteBC(double& pArettepArrete);
void mArreteCD(double& pArettepArrete);
void mArreteDA(double& pArettepArrete);
 
virtual void mAngleA(double& pAngle);
Ligne 527 ⟶ 564 :
{
// Corriger le signe.
pAngle +*= vAngleMaximal-1;
}
return pAngle;
Ligne 533 ⟶ 570 :
 
// Propriété AngleA de Quadrilatere. Remarquez comment la propriété contraint l'intégrité des données de la classe via la méthode mCorrectionAngle.
void Quadrilatere::mAngleA(double& pAngle): Figure()
{
// Mettre à jour l'angle.
this->aAngleA = mCorrectionAngle(pAngle);
}
 
Ligne 558 ⟶ 595 :
 
// Une arrête n'est pas négative
double& Quadrilatere::mCorrigeArrettemCorrectionArrete(double& pAretepArrete)
{
if(pArrete < 0)
Ligne 589 ⟶ 626 :
Quadrilatere::Quadrilatere(double& pArreteAB, double& pArreteBC, double& pArreteCD, double& pArreteDA, double& pAngleA, double& pAngleB, double& pAngleC, double& pAngleD)
{
// Assure l'intégrité de la classe;
this->mArreteAB(pArreteAB);
this->mArreteBC(pArreteBC);
Ligne 601 ⟶ 639 :
Quadrilatere::~Quadrilatere()
{
// rien à détruire.
 
}
 
Ligne 607 ⟶ 645 :
{
//Dessine ici le parallélogramme (vrais code de dessin non pertinent car trop volumineux pour le gain obtenu sur l'intérêt de la leçon).
cout << "Dessine Quadrilatere :\n" <<
"\tAB = " << this->mArreteAB() << ",\n" <<
"\tBC = " << this->mArreteBC() << ",\n" <<
"\tCD = " << this->mArreteCD() << ",\n" <<
"\tDA = " << this->mArreteDA() << ",\n" <<
"\tAngle A = " << this->mAngleA() << ",\n" <<
"\tAngle B = " << this->mAngleB() << ",\n" <<
"\tAngle C = " << this->mAngleC() << ",\n" <<
"\tAngle D = " << this->mAngleD() << endl;
}
Ligne 683 ⟶ 721 :
{
}
 
Figure::~Figure()
{