public abstract class Shape
{ public abstract double CalculatePerimeter();
public abstract double CalculateArea();
public virtual string Draw()
public class Circle : Shape
public Circle(double rad)
public override double CalculatePerimeter()
{ return 2*Math.PI* this.radius; }
public override double CalculateArea()
{ return Math.PI*this.radius* this.radius; }
public sealed override string Draw ()
{ return base.Draw() + "Circle"; }
public class Rectangle : Shape
{ public double sideA; public double sideB;
public Rectangle(double sidea, double sideb)
{ this.sideA = sidea; this.sideB = sideb; }
public override double CalculatePerimeter()
{ return this.sideA * 2+ this.sideB*2; }
public override double CalculateArea()
{ return this.sideA * this.sideB; }
public sealed override string Draw()
{ return base.Draw() + "Rectangle"; }
public static void Main()
Shape circle = new Circle(4);
Console.WriteLine(circle.Draw());
Console.WriteLine(circle.CalculatePerimeter());
Shape rectan=new Rectangle(2,3.3);
Console.WriteLine(rectan.Draw());Console.WriteLine(rectan.CalculatePerimeter());
Console.WriteLine(rectan.CalculateArea());