
#ifndef _SQUARE_H_
#define _SQUARE_H_

#include <string>
#include <iostream>
#ifndef _SHAPE_H_
  #define _SHAPE_H_
#endif

class Square : public Shape
{
	public:
		Square();
		Square(float);
		std::string getType();
		float getArea();
		float getPerimeter();
};
		
std::ostream& operator<< (std::ostream&, Square& sq);

Square::Square()
{
	len = 0;
}

Square::Square(float val)
{
	len = val;
}

float Square::getArea()
{
	return len*len;
}

float Square::getPerimeter()
{
	return 4*len;
}

std::string Square::getType()
{
	return "Square";
}

std::ostream& operator<< (std::ostream& out, Square& sq)
{
	out<<sq.getType()<<" with Perimeter: "<<sq.getPerimeter()<<" and Area: "<<sq.getArea()<<std::endl;
	for( int i = 0; i<sq.getLen(); i++ )
	{        
        	for (int j = 0; j<sq.getLen(); j++)	
			out<<"*";
		out<<std::endl;
	}
	return out;
}

#endif

