// A whole code for the revision of OOP Basic Concepts
#include <iostream>
using namespace std;
class Fraction
{
private:
double Numer;
double Denomi;
char* Institute;
static int count;
public:
Fraction() //Default constructor
{
count++;
Numer = 0.0;
Denomi = 0.0;
Institute = nullptr;
}
Fraction(double Nu, double De, char* in, static int cnt) //Prameterized Constructor
{
Numer = Nu;
Denomi = De;
count = cnt;
int size = strlen(in); //For char pointer
Institute = new char[size + 1];
for (int a = 0; a < size; a++)
{
Institute[a] = in[a];
}
Institute[size] = '\0';
}
/* Fraction(Fraction& temp) //Copy Constructor
{
Numer = temp.Numer;
Denomi = temp.Denomi;
Institute = temp.Institute;
}
*/
void SetNumer(double Nu) //Setters
{
count++;
Numer = Nu;
}
void SetDenomi(double De)
{
count++;
Denomi = De;
}
void SetInstitute(char* in) //Setter for character pointer
{
count++;
int size = strlen(in); //For char pointer
Institute = new char[size + 1];
for (int a = 0; a < size; a++)
{
Institute[a] = in[a];
}
Institute[size] = '\0';
}
void SetCount(int cnt)
{
count = cnt;
}
double GetNumer() //Getters
{
return Numer;
}
double GetDenomi()
{
return Denomi;
}
int GetCount()
{
return count;
}
char* GetInstitute()
{
return Institute;
}
Fraction operator * (Fraction f) // Arithmatic Overloading (Multiplication)
{
Fraction temp;
temp.Numer = Numer * f.Numer;
temp.Denomi = Denomi * f.Denomi;
return temp;
}
Fraction operator / (Fraction f) // Arithmatic Operator Overloading (Division)
{
Fraction temp;
temp.Numer = Numer / f.Numer;
temp.Denomi = Denomi / f.Denomi;
return temp;
}
bool operator == (Fraction& x) // equal to operator overloading
{
if (Numer == x.Numer && Denomi==x.Denomi )
{
return true;
}
else
{
return false;
}
}
void Display()const //Display
{
cout << "Denomirator is: " << Denomi << endl;
cout << "Numerator is: " << Numer << endl;
}
~Fraction() //Destructor
{
count--;
delete [] Institute;
}
};
int Fraction::count = 0;
int main()
{
Fraction obj1, obj2;
obj1.SetNumer(5.5);
obj1.SetDenomi(3.7);
obj2.SetNumer(6.5);
obj2.SetDenomi(4.7);
cout << "\nTotal count of objects in class ";
Fraction GetCount();
Fraction obj3 = obj1 * obj2;
cout << "\t << Multiplication of Complex Numbers >>\n";
obj3.Display();
Fraction obj4 = obj1 / obj2;
cout << "\t\n << Division of Complex Numbers >>\n";
obj4.Display();
cout << "\n\t<< Equality of Both Complex Numbers >>\n";
if (obj1 == obj2) // Only for equal to operator
{
cout << "Numer and denomi are equal \n";
}
else
{
cout << "Numer and Denomi are not equal \n";
}
return 0;
}
0 Comments