Esta semana estaré de reunión en Santiago de Chile, preparando la próxima edición de IEEEXtreme, el concurso de programacion de IEEE, pero prometo mandar algun problemilla desde allá en cuanto tenga conexion.
De momento, por dejar algo mas ligero que el ultimo problema que puse, para que no se me queje nadie, os dejo un pequeño puzzler, en el que (como ya comentamos) lo que queremos es adivinar que función realiza un determinado programa pero SIN ejecutarlo. La idea subyacente es que, si lo que pasa no es lo que esperábamos, siempre podemos investigar por qué.
En nuestro caso, sea el siguiente programa:
using System;
public class MusicStar {
string name;
Style style;
protected MusicStar() {
// utilizado solo para las herencias
}
public MusicStar(String name, Style style) {
this.name = name;
this.style = style;
}
public override string ToString() {
return "nombre: " + name + " (estilo:" + style + ")";
}
public class Style {
string stylename;
public Style() {
}
public void SetStyleName(string name) {
this.stylename = name;
}
public override string ToString() {
return stylename;
}
}
}
public class HardRockStar : MusicStar {
public HardRockStar(String name, Style style) : base(name, style) {
if(style.ToString() != "Hard Rock") {
throw new ArgumentException(
"Nada de mariconadas! Solo me gusta el rock!");
}
}
}
public class Changes {
public static void Main(String[] args) {
MusicStar.Style style = new MusicStar.Style();
style.SetStyleName("Hard Rock");
HardRockStar slash = new HardRockStar("Slash", style);
style.SetStyleName("CutrePop");
MusicStar paulina = new MusicStar("Paulina Rubio", style);
MusicStar marta = new MusicStar("Marta Sanchez", style);
Console.WriteLine("nuestras estrellas de esta noche son:");
Console.WriteLine(slash.ToString());
Console.WriteLine(paulina.ToString());
Console.WriteLine(marta.ToString());
}
}
¿Cual seria la salida al ejecutar la funcion principal (Main) de MainProgram? ¿Por que?
NOTA: para el que quiera alguna pista adicional, aqui os dejo dos en forma de videos: Paulina y Marta (para ahorraros el tiempo de ver el resto de la basurilla musical, os recomiendo pasar directamente a los minutos 2:30 y 2:45 respectivamente)
ACTUALIZACION: me di cuenta tarde que habia pegado la version del codigo que no era! Os he dejado la version actualizada, pero abajo pongo un comentario para los que ya os animasteis a enviar respuestas. Mil perdones!