using System; using System.Collections; using System.Collections.Generic; namespace RickyTest { public class Starter { public static void Main(string [] shapeArray) { List shapes = new List(); GeoShape obj = null; foreach(string shape in shapeArray) { if(shape.ToUpper() == "R") { obj = new Rectangle(); } else if(shape.ToUpper() == "E") { obj = new Ellipse(); } else if(shape.ToUpper() == "T") { obj = new Triangle(); } else { continue; } shapes.Add(obj); } foreach(GeoShape shape in shapes) { shape.Draw(); // Polymorphic behavior? } } } public abstract class GeoShape { public GeoShape() { ++count; ID = count; } private static int count = 0; protected int ID = 0; public abstract void Draw(); } public class Rectangle : GeoShape { public override void Draw() { Console.WriteLine("Drawing Shape {0} : rectangle", ID.ToString()); } } public class Triangle : GeoShape { public override void Draw() { Console.WriteLine("Drawing Shape {0} : triangle", ID.ToString()); } } public class Ellipse : GeoShape { public override void Draw() { Console.WriteLine("Drawing Shape {0} : ellipse", ID.ToString()); } } }