//File:	Shape.cpp
#include <iostream>
#include <string>
#include <cmath> //contains PI
#include "shape.h"
using namespace std;

//Shape Implementation
Shape::Shape():m_name("Basic Shape")
{};

Shape::Shape(string name)
{
	m_name = name;
}

string Shape::name() const
{
	return m_name;
}

double Shape::area() const
{
	return 0.0;
}


//Rectangle Implementation
Rectangle::Rectangle (double Xul, double Yul, double h, double w, string name)
: Shape (name)
{
	m_xul = Xul;
	m_yul = Yul;
	m_height = h;
	m_width =w;
}

double Rectangle::height() const
{
	return m_height;
}

double Rectangle::width() const
{
	return m_width;
}

double Rectangle::perimeter() const
{
	return 2.0 * (m_height + m_width);
}

double Rectangle::area() const
{
	return m_height * m_width;
}


//Circle Implementation
Circle::Circle(double xcoord, double ycoord, double radius, string name)
: Shape (name)
{
    m_x = xcoord; m_y = ycoord; m_rad = radius;
}

double Circle::radius() const
{
	return m_rad;
}

void Circle::center(double &x, double &y) const
{
	x = m_x;
	y = m_y;
}

double Circle::circumference() const
 {
    return(2.0 * PI * m_rad);
 }

double Circle::area() const
 {                   
    return (PI * m_rad * m_rad);
 }

