question archive Draw an inheritance hierarchy for classes Quadrilateral, Trapezoid, Parallelogram, Rectangle and Square
Subject:Computer SciencePrice:3.86 Bought15
Draw an inheritance hierarchy for classes Quadrilateral, Trapezoid, Parallelogram, Rectangle and Square. Use Quadrilateral as the base class of the hierarchy. Make the hierarchy as deep as possible.
Explanation:
// Name : Quadrilateral.cpp
// Author : Rohit
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
using namespace std;
class Quadrilateral // @suppress("Class has a virtual method and non-virtual destructor")
{
public:
int side_a,side_b,side_c,side_d;
double perimeter;
Quadrilateral(int a,int b,int c,int d)
{
side_a=a;
side_b=b;
side_c=c;
side_d=d;
perimeter=0.0;
}
//virtual double cal_area();
};
class Trapezoid:public Quadrilateral // @suppress("Class has a virtual method and non-virtual destructor")
{
public:
Trapezoid(int a,int b,int c,int d):Quadrilateral(a,b,c,d)
{
}
double cal_perimeter()
{
cout<<"The perimetre of Trapizoid:";
return side_a+side_b+side_c+side_d;
}
double cal_area()
{
double h;
cout <<"\nEnter the hight of Trapizoid:";
cin>>h;
cout<<"\nThe area of Trapizoid:";
return ((side_a+side_c)*h);//assume a and c are parallel sides
}
};
class Parallelogram:public Trapezoid // @suppress("Class has a virtual method and non-virtual destructor")
{
public:
Parallelogram(int a,int b,int c,int d):Trapezoid(a,b,c,d)
{
}
double cal_perimeter()
{
cout<<"\nThe perimeter of Parallelogram:";
return side_a+side_b+side_c+side_d;
}
double cal_area()
{
double h;
cout <<"\nEnter the hight of Parallelogram:";
cin>>h;
cout<<"\nThe area of Parallelogram:";
return side_c*h;//assume side c is base
}
};
class Rectangle:public Parallelogram // @suppress("Class has a virtual method and non-virtual destructor")
{
public:
Rectangle(int a,int b,int c,int d):Parallelogram(a,b,c,d)
{
}
double cal_perimeter()
{
cout<<"\nThe perimeter of Rectangle:";
return side_a+side_b+side_c+side_d;
}
double cal_area()
{
cout<<"\nThe area of Rectangle:";
return side_a*side_b;
}
};
class Square:public Rectangle // @suppress("Class has a virtual method and non-virtual destructor")
{
public:
Square(int a,int b,int c,int d):Rectangle(a,b,c,d)
{
}
double cal_perimeter()
{
cout<<"\nThe perimeter of Square:";
return 4*side_a;
}
double cal_area()
{
cout<<"\nThe area of Square :";
return side_a*side_a;
}
};
int main() {
Square S1(2,2,2,2);
Parallelogram p1=S1;
Rectangle R1=S1; //every Square is Rectagle
Trapezoid t1=S1;
Square s=S1;
cout<<t1.cal_perimeter();
cout<<t1.cal_area();
cout<<R1.cal_perimeter();
cout<<R1.cal_area();
cout<<p1.cal_area();
cout<<p1.cal_perimeter();
cout<<s.cal_area();
cout<<s.cal_perimeter();
return 0;
}
.......................................................................
Output