Rombusz alakzat modellezése

Írjunk osztályt egy rombusz modellezésére!

  • A tagváltozók és tagfüggvények deklarációit külön fejlécfájlban tároljuk, és gondoskodjunk róla, hogy egy esetleges többszöri beépítés ne jelentsen problémát!
  • Az osztály tárolja privát tagváltozókban a rombusz adatait (két átlójának hosszát). A külső elérés érdekében írjunk hozzá publikus lekérdező és értékadó tagfüggvényeket. Ügyeljünk rá hogy a rombusz átlói csak pozitív értékeket kaphassanak!
  • Az osztálypéldányokat a rombusz két átlójának hosszával lehet inicializálni, de bármelyik elhagyható példányosításkor (ekkor a 10 kezdőértéket veszik fel).
  • Le lehet tőle kérdezni a rombusz oldalának hosszát, a kerületét és a területét.
  • Redelkezik egy publikus bool IsSquare() tagfüggvénnyel, amely logikai igaz értékkel tér vissza ha a rombusz amelyre meghívjuk egyben négyzet is.

 



A megoldásért kattints ide!

// Rhombus.h

#ifndef _RHOMBUS_H

#define _RHOMBUS_H

 

 

class Rhombus {

               private:

                              double DiagonalA, DiagonalB;

 

               public:

                              Rhombus(double DA = 10, double DB = 10);

                              double GetDiagonalA();

                              double GetDiagonalB();

                              void SetDiagonalA(double DA);

                              void SetDiagonalB(double DB);

                              double GetSide();

                              double GetPerimeter();

                              double GetArea();

                              bool IsSquare();

};

 

 

#endif // _RHOMBUS_H

 

 

//////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////

// Rhombus.cpp

#include "Rhombus.h"

#include <cmath>

using namespace std;

 

 

Rhombus::Rhombus(double DA, double DB) {

               SetDiagonalA(DA);

               SetDiagonalB(DB);

}

 

 

double Rhombus::GetDiagonalA() {

               return DiagonalA;

}

 

 

double Rhombus::GetDiagonalB() {

               return DiagonalB;

}

 

 

void Rhombus::SetDiagonalA(double DA) {

               DiagonalA = DA > 0 ? DA : 1;

}

 

 

void Rhombus::SetDiagonalB(double DB) {

               DiagonalB = DB > 0 ? DB : 1;

}

 

 

double Rhombus::GetSide() {

               return sqrt((DiagonalA / 2) * (DiagonalA / 2) + (DiagonalB / 2) * (DiagonalB / 2));

}

 

 

double Rhombus::GetPerimeter() {

               return 4 * GetSide();

}

 

 

double Rhombus::GetArea() {

               return (DiagonalA * DiagonalB) / 2;

}

 

 

bool Rhombus::IsSquare() {

               return (DiagonalA == DiagonalB);

}

 




2008.02.08. 16:29:24 |  Permalink  |  Hozzászólások száma: 0  |  Tárgyszavak: Osztályok


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások