Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Shape Hierarchy

  1. Apr 2, 2009 #1
    Code (Text):
    #ifndef SHAPE_H
    #define SHAPE_H

    #include <string.h>
    using std::string;

    using namespace std;



    class Shape

    {
    public:
        Shape(const string &color); //constructor
        ~Shape();
        string getColor()const; //returns objects color value
        virtual double area()const = 0;// a const pure virtual member function that computes and returns the object's area
        virtual string toString() const = 0; //a const pure virtual member function that returns the shape's description
    private:
        string s_color;

    };


    #endif //SHAPE_H

    #include <string>
    using std::string;

    #include <sstream>

    #include <iostream>
    using std::cout;
    using std::cin;
    using std::endl;

    #include "square.h"

    //ctor
    square::square(const string &color, double length)
    :Shape(color)
    {
        length = len;
    }//end ctor

    //dtor
    double square::getLength()
    {
        return len;
    }
    //Function to calculate are
    double square::area()const
    {
        return len * len;
    }//end function to calculate area

    //Function to returns square's description
    string square::toString()const
    {
      ostringstream os;
      os << getColor() <<"square with side length of " << len << " " << "and area of " << area();
      return os.str();

    }//end of function to return's square description

    #include <string>
    using std::string;

    #include <sstream>

    #include <iostream>
    using std::cout;
    using std::cin;
    using std::endl;

    #include "rectangle.h"

    //ctor
    rectangle::rectangle(const string &color, double width, double length)
    :Shape(color)
    {
    length = len;
    wid = width;
    }//end ctor

    //dtor
    double rectangle::getWidth()
    {
        return wid;
    }

    double rectangle::getLength()
    {
        return len;
    }
    //function to calculate rectangle area
    double rectangle::area() const
    {
        return len * wid;
    }//end function to get rectangle area

    //returns rectangle's description
    string rectangle::toString()const
    {
      ostringstream os;
      os << getColor() <<"rectangle with length of " << len << " and width of " << wid << " and area of " << area();
      return os.str();
    }//end function to return rectangle's description


    #include <string>
    using std::string;

    #include <sstream>

    #include <iostream>
    using std::cout;
    using std::cin;
    using std::endl;

    #include "circle.h"

    //ctor
    circle::circle(const string& color, double radius)
    :Shape(color)
    {
        radius = rad;
    }//end ctor

    double circle::getRadius()
    {
        return rad;
    }
    //function to calculate circle area
    double circle::area()const
    {
        return rad * rad * 3.14;
    }//end function to get circle area

    //returns circle description
    string circle::toString()const
    {
      ostringstream os;
      os << getColor() <<" circle with radius of " << rad << " and area of " << area();
      return os.str();
    }//end function to return circle description


    #include <string>
    using std::string;

    #include <iostream>
    using std::cout;
    using std::cin;
    using std::endl;

    #include "circle.h"
    #include "rectangle.h"
    #include "square.h"


    Shape* getShape()
    {  


        int i;
        string shapetype;
        char choice;

        Shape* myShape[6];
       
       
       

        cout << "Creating a Shape  ";
        cout << "============================================== "<<endl;
        cout << " 1: Create a circle "<<endl;
        cout << " 2: Create a rectangle "<<endl;
        cout << " 3: Create a square "<<endl;
        cout << " 4: Done "<<endl;
        cout << "============================================== "<<endl;
        for ( i = 0; i < 6; ++i){
        cout << "Enter number for shapetype" <<endl;

        switch(choice){
       
        case '1':
        cout << "\nEnter the shape's color (or 'done')...";
        cin >>  s_color   ;
        cout << "\nEnter shape type..." ;
        cin >> shapetype;
        cout << "\nEnter radius.... ";
        cin >> radius;
        myShape[i] = new circle(color, radius);
        break;
       
        case '2':
        cout << "\nEnter the shape's color (or 'done')...";
        cin >> color;
        cout << "\nEnter shape type...";
        cin >> shapetype;
        cout << "\nEnter the length and width....  ";
        cin >> width >> length;
        myShape[i] = new rectangle(color, length, width);
        break;
       
        case '3':
        cout << "\nEnter the shape's color (or 'done')...";
        cin >> color;
        cout <<"\nEnter shape type...";
        cin >> shapetype;
        cout << "\nEnter the length of a side...";
        cin >> length;
        myShape[i] = new square(color, length);
        break;
       
        case '4':
        cout <<"\nEnter the shape's color (or 'done')....";
        cout << "done"<< endl;}

        }
        return myShape[i];

    }
    I try to run the function in int main(); with the function Shape* getShape(); but nothings comes up in the terminal.
     
  2. jcsd
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Can you offer guidance or do you also need help?
Draft saved Draft deleted



Similar Discussions: Shape Hierarchy
  1. Disappear shapes (Replies: 0)

Loading...