Exemple #1
0
        static void Main(string[] args)
        {
            InstrumentoMusical instrumentoGenerico = new InstrumentoMusical();

            System.Console.WriteLine(instrumentoGenerico.TocarMusica());

            Violao violao1 = new Violao();

            System.Console.WriteLine("VIOLÃO: " + violao1.TocarMusica());
            violao1.TocarAcordes();
        }
        static void Main(string[] args)
        {
            Guitarra           guitarrilla = new Guitarra("Gibson", "Taiwan", 80000);
            InstrumentoMusical instrument  = new InstrumentoMusical("modelo?", "Tienda Lituana", 123456789);
            Piano           lasTeclas      = new Piano("Casio", "Casiolandia", 30000);
            GuitarraCriolla criolla        = new GuitarraCriolla("Electroacústica", "Argentina", 12000, true);

            //List<Guitarra> listaGuitarras = new List<Guitarra>(); //Solo guitarra
            //listaGuitarras.Add(guitarrilla);
            //listaGuitarras.Add(lasTeclas);


            List <InstrumentoMusical> listaInstrumentos = new List <InstrumentoMusical>();//Cualquier instrumento que herede de "InstrumentoMusical".

            listaInstrumentos.Add(guitarrilla);
            listaInstrumentos.Add(lasTeclas);
            listaInstrumentos.Add(instrument);
            listaInstrumentos.Add(criolla);

            foreach (InstrumentoMusical item in listaInstrumentos) //Tipo de dato original
            {
                //Pregunto por el tipo de dato particular.
                if (item is GuitarraCriolla) //TIENE QUE IR DE LO MÁS ESPECÍFICO A LO MENOS ESP. Si le preguntas si es una guitarra antes de preg. si es una guitarra criolla igual te va a decir que si.
                {
                    Console.WriteLine(((GuitarraCriolla)item).Cancion());
                }
                else if (item.GetType() == typeof(Guitarra))   //Si el tipo de lo que estoy mirando es Guitarra, imprimo ese elemento de tipo "InstrumentoMusical" pasandolo a formato guitarra.
                {
                    Console.WriteLine(((Guitarra)item).Marca); //Le agrada el casteo evidentemente. (Sólo así aparecen los métodos de esa clase en particular, en este caso Marca)
                }

                else if (item is Piano) //Una variación del Gettype, pueden pedir cualquiera de los dos.
                {
                    Console.WriteLine(((Piano)item).SoyUnPiano());
                }
                //else if(item is GuitarraCriolla)
                //{
                //    Console.WriteLine(((GuitarraCriolla)item).Cancion());
                //}

                Console.WriteLine(item.Informacion);
            }

            //34 en adelante, empezar centralita.
        }