public static void Main()
Console.WriteLine("Hello World");
Circle myCircle = new Circle(20);
Rectangle myRectangle = new Rectangle(20,30);
Square mySquare = new Square(30);
ShapeAreaOutputter myOutputter = new ShapeAreaOutputter();
myOutputter.areaOutPut(myCircle);
myOutputter.areaOutPut(myRectangle);
myOutputter.areaOutPut(mySquare);
public interface IOutputter{
void areaOutPut(IShape shape);
public class ShapeAreaOutputter : IOutputter
public void areaOutPut(IShape shape){
Console.WriteLine("The Area of this "+shape.GetType().Name+" is "+shape.getArea());
public class Circle : IShape{
static double pi = 3.14159;
private double radius {get;set;}
public Circle(double radius){
return pi*Math.Pow(this.radius,2);
public class Rectangle : IShape{
protected double length {get;set;}
protected double width {get;set;}
public Rectangle(double length,double width){
public virtual void setLength(double l){
public virtual void setWidth(double w){
return this.length *this.width;
public class Square : Rectangle{
public Square(double side){
public override void setLength(double l){
public override void setWidth(double w){