using System; public abstract class Figura { private string idFigura; public Figura (string idFigura) { IdFigura = idFigura; // asigna el valor de idFigura a la propiedad IdFigura } public string IdFigura { get { return idFigura; } set { idFigura = value; } } // La propiedad Area es de sólo-lectura public abstract double Area { get; } public override string ToString () { return IdFigura + " Área = " + string.Format("{0:F2}",Area); } } public class Cuadrado : Figura { private int lado; public Cuadrado (int lado, string idFigura) : base (idFigura) { this.lado = lado; } public override double Area { get { return lado * lado; } } } public class Circulo : Figura { private int radio; public Circulo (int radio, string idFigura) : base (idFigura) { this.radio = radio; } public override double Area { get { return radio * radio * Math.PI; } } } public class Rectangulo : Figura { private int ancho; private int alto; public Rectangulo (int ancho, int alto, string idFigura) : base (idFigura) { this.ancho = ancho; this.alto = alto; } public override double Area { get { return ancho * alto; } } } public class PruebaFigura { public static void Main () { Figura[] figuras = { new Cuadrado (5, "Cuadrado #1"), new Circulo (3, "Círculo #1"), new Rectangulo (4, 5, "Rectángulo #1") }; Console.WriteLine ("Colección de Figuras"); foreach (Figura figura in figuras) { Console.WriteLine (figura.ToString()); } } }