Total members 10249 | Gratitudes |It is currently Thu May 17, 2012 9:05 am Login / Join Codemiles


All times are UTC [ DST ]




Post new topic Reply to topic  Quick reply  [ 1 post ] 
Author Code Snippet
 Code subject: polymorphism
PostPosted: Thu Nov 13, 2008 8:04 pm 
Offline
Beginner
User avatar

Joined: Sun May 25, 2008 5:34 pm
Posts: 95
Has thanked: 2 time
Have thanks: 1 time

Here ,we use virtual functions and polymorphism.

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;
}


TOP
 Profile Send private message  
Reply with quote  
Post new topic Reply to topic Quick reply  [ 1 post ] 
Quick reply


  

 Similar topics
 run time polymorphism
 What is Polymorphism?!!

All times are UTC [ DST ]


Users browsing similar codes

Users browsing this forum: No registered users and 1 guest



Jump to:  
Previous Code Snippet | Next Code Snippet 




Home
General Talks
Finished Projects
Code Library
Games
Tutorials

Java
C/C++
C-sharp
php
Script
JSP/Servlets
Ajax
ASP/ASP.net
Google SEO
Database
Communications
Phpbb3 styles
Photoshop tutorials
Flash tutorials
Find a job






Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
All copyrights reserved to codemiles.com 2007-2011
mileX v1.0 designed by codemiles team