Switch to full style
C++ code examples
Post a reply

polymorphism

Thu Nov 13, 2008 8:04 pm

Here ,we use virtual functions and polymorphism.

cpp code
#include <iostream> 
#include <cstring>
using namespace std;

class TwoDimensionShape {
double width;
double height;
char name[20];
public:

TwoDimensionShape() {
width = height = 0.0;
strcpy(name, "unknown");
}

TwoDimensionShape(double w, double h, char *n) {
width = w;
height = h;
strcpy(name, n);
}

TwoDimensionShape(double x, char *n) {
width = height = x;
strcpy(name, n);
}

void showDim() {
cout << "Width and height are " << width << " and " << height << endl;
}

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() {
cout << "Error: area() must be overridden.\n";
return 0.0;
}

};

class Triangle : public TwoDimensionShape {
char style[20]; // now private
public:

Triangle() {
strcpy(style, "unknown");
}

Triangle(char *str, double w,
double h) : TwoDimensionShape(w, h, "triangle") {
strcpy(style, str);
}

Triangle(double x) : TwoDimensionShape(x, "triangle") {
strcpy(style, "isosceles");
}

double area() {
return getWidth() * getHeight() / 2;
}

void showStyle() {
cout << "Triangle is " << style << endl;
}
};

class Rectangle : public TwoDimensionShape {
public:


Rectangle(double w, double h) : TwoDimensionShape(w, h, "rectangle") { }


Rectangle(double x) :
TwoDimensionShape(x, "rectangle") { }

bool isSquare() {
if(getWidth() == getHeight())
return true;
return false;
}

// This is another override of area().
double area() {
return getWidth() * getHeight();
}
};

int main() {

TwoDimensionShape *shapes[5];

shapes[0] = &Triangle("right", 8.0, 12.0);
shapes[1] = &Rectangle(10);
shapes[2] = &Rectangle(10, 4);
shapes[3] = &Triangle(7.0);
shapes[4] = &TwoDimensionShape(10, 20, "generic");

for(int i = 0; i < 5; i++) {
cout << "object is " << shapes[i]->getName() << endl;

cout << "Area is " << shapes[i]->area() << endl;

cout << endl;
}

return 0;
}




Post a reply
  Related Posts  to : polymorphism
 What is Polymorphism?!!     -  
 run time polymorphism     -  
 Inheritance & polymorphism checker code     -  

Topic Tags

C++ OOP