using System.Collections.Generic;
public static void Main()
List<Shape> shapes = new List<Shape>();
shapes.Add(new Rectangle(new Location(1, 1), 4, 5));
shapes.Add(new Triangle(new Location(1, 1), 3, 4, 3, 4, 5));
shapes.Add(new Circle(new Location(1, 1), 2));
foreach (Shape s in shapes)
Console.WriteLine("Area = " + s.CalculateArea().ToString("F2"));
Console.WriteLine("Perimeter = " + s.CalculatePerimeter().ToString("F2"));
public double X { get; set; }
public double Y { get; set; }
public Location(double x, double y)
public class Location3D : Location
public double Z { get; set; }
public Location3D(double x, double y, double z) : base(x, y)
public Location Origin { get; set; }
public double Width { get; set; }
public double Height { get; set; }
public virtual int NumberOfSides
public Shape(Location origin, double width, double height)
public virtual double CalculateArea()
public virtual double CalculatePerimeter()
public virtual void Draw()
Console.WriteLine("Performing base class drawing tasks");
public class Rectangle : Shape
public Rectangle(Location origin, double width, double height)
public override void Draw()
Console.WriteLine("Draw Rectangle");
public class Triangle : Shape
public double Base {get; set;}
public double SideALength {get; set;}
public double SideBLength {get; set;}
public double SideCLength {get; set;}
public Triangle(Location origin, double theBase, double height, double sideALength, double sideBLength, double sideCLength)
SideALength = sideALength;
SideBLength = sideBLength;
SideCLength = sideCLength;
public override void Draw()
Console.WriteLine("Draw Triangle");
public class Circle : Shape
double Radius {get; set;}
public Circle(Location origin, double radius)
public override void Draw()
Console.WriteLine("Draw Triangle");