//Header File:	Shape0.h
#ifndef SHAPE0_H
#define SHAPE0_H

#include <string>
using namespace std;

class Shape
{
public:
	//Constructors
	Shape();
	Shape(string);
	
	//Destructor
	~Shape(){};
	
	//Accessor
	string name() const;
	
	//Facilitator
	double area() const;

private:
	string m_name;
};


//Derived class Rectangle definition
class Rectangle : public Shape	//Shape is the base class for Rectangle
{
public:
	//Constructor
	Rectangle (double, double, double, double, string);
	
	//Destructor
	~Rectangle() {};
	
	//Facilitators
	double width() const;
	double height() const;
	double perimeter() const;
	double area() const;
private:
	//upper left hand corner coordinates
	double m_xul, m_yul;
	//lower right hand corner coordinates
	double m_xlr, m_ylr;
};


//Derived class Circle definition
class Circle : public Shape	//Shape is the base class for Circle
{
public:
	//Constructor
	Circle (double, double, double, string);
	
	//Destructor
	~Circle() {};

	//Accessors
	double radius() const;
	void center(double &, double &) const;

	//Facilitators
	double circumference() const;
	double area() const;
private:
	//radius
	double m_rad;
	//coordinates of center
	double m_x, m_y;
};
#endif
