/// <summary> /// Expone los datos del elemento y su lista (incluidas sus herencias) /// SOLO del tipo requerido /// </summary> /// <param name="c">Elemento a exponer</param> /// <param name="ETipo">Tipos de ítems de la lista a mostrar</param> /// <returns></returns> public static string Mostrar(Estacionamiento c, ETipo tipo) { StringBuilder sb = new StringBuilder(); sb.AppendFormat("Tenemos {0} lugares ocupados de un total de {1} disponibles", c.vehiculos.Count, c.espacioDisponible); sb.AppendLine(""); foreach (Vehiculo v in c.vehiculos) { switch (tipo) { case ETipo.Camioneta: if (v is Camioneta) { Camioneta camioneta = (Camioneta)v; sb.AppendLine(camioneta.Mostrar()); } break; case ETipo.Moto: if (v is Moto) { Moto moto = (Moto)v; sb.AppendLine(moto.Mostrar()); } break; case ETipo.Automovil: if (v is Automovil) { Automovil automovil = (Automovil)v; sb.AppendLine(automovil.Mostrar()); } break; default: if (v is Camioneta) { Camioneta camioneta = (Camioneta)v; sb.AppendLine(camioneta.Mostrar()); } else if (v is Automovil) { Automovil automovil = (Automovil)v; sb.AppendLine(automovil.Mostrar()); } else if (v is Moto) { Moto moto = (Moto)v; sb.AppendLine(moto.Mostrar()); } break; } } return(sb.ToString()); }
static void Main(string[] args) { // Configuración de la pantalla Console.SetWindowPosition(0, 0); Console.SetWindowSize(Console.LargestWindowWidth / 2, Console.LargestWindowHeight - 2); // Nombre del alumno Console.Title = ""; Estacionamiento estacionamiento = new Estacionamiento(6); Moto c1 = new Moto(Vehiculo.EMarca.BMW, "ASD012", ConsoleColor.Black); Moto c2 = new Moto(Vehiculo.EMarca.Honda, "ASD913", ConsoleColor.Red); Automovil m1 = new Automovil(Vehiculo.EMarca.Toyota, "HJK789", ConsoleColor.White); Automovil m2 = new Automovil(Vehiculo.EMarca.Chevrolet, "IOP852", ConsoleColor.Blue, Automovil.ETipo.Sedan); Camioneta a1 = new Camioneta(Vehiculo.EMarca.Ford, "QWE968", ConsoleColor.Gray); Camioneta a2 = new Camioneta(Vehiculo.EMarca.Renault, "TYU426", ConsoleColor.DarkBlue); Camioneta a3 = new Camioneta(Vehiculo.EMarca.BMW, "IOP852", ConsoleColor.Green); Camioneta a4 = new Camioneta(Vehiculo.EMarca.BMW, "TRE321", ConsoleColor.Green); // Agrego 8 ítems (los últimos 2 no deberían poder agregarse ni el m1 repetido) y muestro estacionamiento += c1; estacionamiento += c2; estacionamiento += m1; estacionamiento += m1; estacionamiento += m2; estacionamiento += a1; estacionamiento += a2; estacionamiento += a3; estacionamiento += a4; Console.WriteLine(estacionamiento.ToString()); Console.WriteLine("<-----------PRESIONE UNA TECLA PARA CONTINUAR----------->"); Console.ReadKey(); Console.Clear(); // Quito 2 items y muestro estacionamiento -= c1; estacionamiento -= new Moto(Vehiculo.EMarca.Honda, "ASD913", ConsoleColor.Red); Console.WriteLine(estacionamiento.ToString()); Console.WriteLine("<-----------PRESIONE UNA TECLA PARA CONTINUAR----------->"); Console.ReadKey(); Console.Clear(); // Vuelvo a agregar c2 estacionamiento += c2; // Muestro solo Moto Console.WriteLine(Estacionamiento.Mostrar(estacionamiento, Estacionamiento.ETipo.Moto)); Console.WriteLine("<-----------PRESIONE UNA TECLA PARA CONTINUAR----------->"); Console.Beep(); Console.Clear(); // Muestro solo Automovil Console.WriteLine(Estacionamiento.Mostrar(estacionamiento, Estacionamiento.ETipo.Automovil)); Console.WriteLine("<-----------PRESIONE UNA TECLA PARA CONTINUAR----------->"); Console.ReadKey(); Console.Clear(); // Muestro solo Camioneta Console.WriteLine(Estacionamiento.Mostrar(estacionamiento, Estacionamiento.ETipo.Camioneta)); Console.WriteLine("<-------------PRESIONE UNA TECLA PARA SALIR------------->"); Console.ReadKey(); }