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 override int NumberOfSides
public Rectangle(Location origin, double width, double height) : base(origin, width, height)
public override double CalculateArea()
public override double CalculatePerimeter()
return (Width*2) + (Height*2);
public override void Draw()
Console.WriteLine("Performing Rectangle class drawing tasks");
public class Triangle : Shape
public override int NumberOfSides
public double SideALength
public double SideBLength
public double SideCLength
public Triangle(Location origin, double theBase, double height, double sideALength, double sideBLength, double sideCLength) : base(origin, theBase, height)
SideALength = sideALength;
SideBLength = sideBLength;
SideCLength = sideCLength;
public override double CalculateArea()
public override double CalculatePerimeter()
return SideALength+SideBLength+SideCLength;
public override void Draw()
Console.WriteLine("Performing Triangle class drawing tasks");
public class Circle : Shape
public Circle(Location origin, double radius)
public override double CalculateArea()
return 3.14*(Math.Pow(Radius,2));
public override double CalculatePerimeter()
return CalculateCircumfrence();
public double CalculateCircumfrence()
public override void Draw()
Console.WriteLine("Performing Circle class drawing tasks");