150 lines
2.5 KiB
C++
150 lines
2.5 KiB
C++
// Start the program
|
|
// Create the base class and declare the data member under protected access specifier and declare the function
|
|
// Create the derived class and access the base class data members in the derived class
|
|
// Create the object for derived class
|
|
// Call the public member function of the derived class
|
|
// Compile and run the program
|
|
|
|
#include <iostream.h>
|
|
|
|
#include<string.h>
|
|
|
|
#include <conio.h>
|
|
|
|
class Shape
|
|
{
|
|
|
|
double width;
|
|
|
|
double height;
|
|
|
|
char name[20];
|
|
|
|
public:
|
|
|
|
Shape()
|
|
{
|
|
width = height = 0.0;
|
|
strcpy(name, "unknown");
|
|
}
|
|
|
|
Shape(double w, double h, char *n)
|
|
{
|
|
width = w;
|
|
height = h;
|
|
strcpy(name, n);
|
|
}
|
|
|
|
Shape(double x, char *n)
|
|
{
|
|
width = height = x;
|
|
strcpy(name, n);
|
|
}
|
|
|
|
void display()
|
|
{
|
|
cout << "Width and height are " << width << " and " << height << "\n";
|
|
}
|
|
|
|
double getWidth()
|
|
{
|
|
return width;
|
|
}
|
|
|
|
double getHeight()
|
|
{
|
|
return height;
|
|
}
|
|
|
|
void setWidth(double w)
|
|
{
|
|
width = w;
|
|
}
|
|
|
|
void setHeight(double h)
|
|
{
|
|
height = h;
|
|
}
|
|
|
|
char *getName()
|
|
{
|
|
return name;
|
|
}
|
|
|
|
virtual double area() = 0;
|
|
|
|
};
|
|
|
|
class Triangle : public Shape
|
|
{
|
|
|
|
char style[20];
|
|
|
|
public:
|
|
|
|
Triangle()
|
|
{
|
|
strcpy(style, "unknown");
|
|
}
|
|
|
|
Triangle(char *str, double w, double h) : Shape(w, h, "triangle")
|
|
{
|
|
strcpy(style, str);
|
|
}
|
|
|
|
Triangle(double x) : Shape(x, "triangle")
|
|
{
|
|
strcpy(style, "isosceles");
|
|
}
|
|
|
|
double area()
|
|
{
|
|
return getWidth() * getHeight() / 2;
|
|
}
|
|
|
|
void showStyle()
|
|
{
|
|
cout << "Triangle is " << style << "\n";
|
|
}
|
|
|
|
};
|
|
|
|
class Rectangle : public Shape
|
|
{
|
|
|
|
public:
|
|
|
|
Rectangle(double w, double h) : Shape(w, h, "rectangle") { }
|
|
|
|
Rectangle(double x) : Shape(x, "rectangle") { }
|
|
|
|
bool isSquare()
|
|
{
|
|
if(getWidth() == getHeight())
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
double area()
|
|
{
|
|
return getWidth() * getHeight();
|
|
}
|
|
|
|
};
|
|
|
|
int main()
|
|
{
|
|
Shape *shapes[4];
|
|
shapes[0] = &Triangle("right", 8.0, 12.0);
|
|
shapes[1] = &Rectangle(10);
|
|
shapes[2] = &Rectangle(10, 4);
|
|
shapes[3] = &Triangle(7.0);
|
|
for(int i=0; i < 4; i++)
|
|
{
|
|
cout << "object is " << shapes[i]->getName() << "\n";
|
|
cout << "Area is " << shapes[i]->area() << "\n\n";
|
|
}
|
|
return 0;
|
|
}
|
|
|