Пример #1
0
        static void Main(string[] args)
        {
            try
            {
                ClaseUno uno = new ClaseUno();
            }
            catch (Exception e)
            {
                //Console.WriteLine(e.Source);
                Console.WriteLine(e.InnerException.InnerException.InnerException.Message);
                Console.WriteLine(e.InnerException.InnerException.Message);
                Console.WriteLine(e.InnerException.Message);
                Console.WriteLine(e.Message);
                Console.WriteLine(e.InnerException.InnerException.InnerException.TargetSite);
                Console.WriteLine(e.InnerException.InnerException.TargetSite);
                Console.WriteLine(e.InnerException.TargetSite);
                Console.WriteLine(e.TargetSite);
            }


            Console.ReadKey();

            /*
             *  hacer una excepcion que pase por
             *  constructor
             *  metodo de clase
             *  metodo estatico
             *  constructor.
             */
        }
Пример #2
0
        static void Main(string[] args)
        {
            ClaseUno clase1 = new ClaseUno("Clase Uno");

            ClaseDos clase2 = new ClaseDos("Clase uno", "clase dos");

            ClaseTres clase3 = new ClaseTres("clase uno", "clase dos", "clase tres");

            ClaseCuatro clase4 = new ClaseCuatro("clase uno", "clase dos", "clase tres", "clase cuatro");

            List <ClaseUno> miLista = new List <ClaseUno>();

            miLista.Add(clase1);
            miLista.Add(clase2);
            miLista.Add(clase3);
            miLista.Add(clase4);

            Console.WriteLine("\n\n---------override ToString()------\n\n");

            foreach (ClaseUno c in miLista)
            {
                Console.WriteLine(c.ToString());
            }


            //foreach (ClaseUno c in miLista)
            //{
            //    Console.WriteLine(c.Mostrar());
            //}

            Console.WriteLine("\n\n---------Con propiedad------\n\n");

            foreach (ClaseUno c in miLista)
            {
                Console.WriteLine(c.Propiedad1);
            }

            //Console.WriteLine("\n\n---------sin override ------\n\n");

            //foreach (ClaseUno c in miLista)
            //{
            //  //  Console.WriteLine(c.);
            //}



            Console.ReadLine();
        }
Пример #3
0
        static void Main(string[] args)
        {
            ClaseUno  c1 = new ClaseUno("Primera Clase");
            ClaseDos  c2 = new ClaseDos("Primera Clase", "Segunda Clase");
            ClaseTres c3 = new ClaseTres("Primera Clase", "Segunda Clase", "Tercera Clase");

            Console.WriteLine(c1.TipoClaseUno);
            Console.WriteLine(c2.TipoClaseDos);
            Console.WriteLine(c3.TipoClaseTres);

            Console.WriteLine(c1.MostrarClaseUno());
            Console.WriteLine(c2.MostrarClaseDos());
            Console.WriteLine(c3.MostrarClaseTres());


            Console.ReadLine();
        }
Пример #4
0
        static void Main(string[] args)
        {
            ClaseUno miClase1 = new ClaseUno("Clase 1");

            Console.Write(miClase1.Tipo);
            Console.Write(miClase1.ToString());
            //
            ClaseDos miClase2 = new ClaseDos("Clase 2", miClase1.Tipo);

            Console.Write(miClase2.Tipo);
            Console.Write(miClase2.ToString());
            //
            ClaseTres miClase3 = new ClaseTres("Clase1", "Clase2", "Clase3");

            Console.Write(miClase3.Tipo);
            Console.Write(miClase3.ToString());
            Console.ReadLine();
            //
            List <ClaseUno> lista = new List <ClaseUno>();

            lista.Add(miClase1);
            lista.Add(miClase2);
            lista.Add(miClase3);

            foreach (ClaseUno a in lista)
            {
                Console.WriteLine(a.ToString());
                Console.WriteLine(a.Tipo);

                /*if(a is ClaseTres)
                 * {
                 *  Console.Write(((ClaseTres)a).TipoClaseTres);
                 *  Console.Write(((ClaseTres)a).MostrarClaseTres());
                 * }
                 * else if(a is ClaseDos)
                 * {
                 *  Console.Write(((ClaseDos)a).TipoClaseDos);
                 *  Console.Write(((ClaseDos)a).MostrarClaseDos());
                 * }
                 * else*/
            }
        }
Пример #5
0
        static void Main(string[] args)
        {
            ClaseUno  clase1 = new ClaseUno("Hola");
            ClaseDos  clase2 = new ClaseDos("Como", "Estas");
            ClaseTres clase3 = new ClaseTres("Juancito", "Pepito", "Pedrito");
            //Console.WriteLine(clase1.MostrarClaseUno());
            //Console.WriteLine(clase3.TipoClaseTres);
            //Console.WriteLine(clase2.MostrarClaseUnoDos());
            //Console.WriteLine(clase3.MostrarClaseUnoDosTres());
            //Console.ReadKey();

            List <ClaseUno> listaClases = new List <ClaseUno>();

            listaClases.Add(clase1);
            listaClases.Add(clase2);
            listaClases.Add(clase3);

            foreach (ClaseUno clase_1 in listaClases)
            {
                Console.WriteLine(clase_1.Tipo);
                Console.WriteLine(clase_1);//se puede poner clase_1.ToString() o solo clase_1 ya que por default invoca al ToString() del object que reciba.
                Console.ReadKey();
                //if (clase_1 is ClaseTres)
                //{
                //    Console.WriteLine(((ClaseTres)clase_1).MostrarClaseUnoDosTres());
                //    Console.ReadKey();
                //}
                //
                //else if (clase_1 is ClaseDos)
                //{
                //    Console.WriteLine(((ClaseDos)clase_1).MostrarClaseUnoDos());
                //    Console.ReadKey();
                //}
                //
                //else if (clase_1 is ClaseUno)
                //{
                //    Console.WriteLine(clase_1.MostrarClaseUno());
                //    Console.ReadKey();
                //}
            }
        }
Пример #6
0
        static void Main(string[] args)
        {
            ClaseUno    a = new ClaseUno("ClaseUno");
            ClaseDos    b = new ClaseDos("ClaseUno", "ClaseDos");
            ClaseTres   c = new ClaseTres("ClaseUno", "ClaseDos", "ClaseTres");
            ClaseCuatro d = new ClaseCuatro("ClaseUno", "ClaseDos", "ClaseTres", "ClaseCuatro");

            List <ClaseUno> _lista = new List <ClaseUno>();

            _lista.Add(a);
            _lista.Add(b);
            _lista.Add(c);
            _lista.Add(d);

            foreach (ClaseUno item in _lista)
            {
                Console.WriteLine(item.ToString());
                Console.WriteLine(item.Nombre);
            }
            Console.ReadLine();
        }
Пример #7
0
        static void Main(string[] args)
        {
            ClaseUno  c1 = new ClaseUno("Primera Clase");
            ClaseDos  c2 = new ClaseDos("Primera Clase", "Segunda Clase");
            ClaseTres c3 = new ClaseTres("Primera Clase", "Segunda Clase", "Tercera Clase");

            Console.WriteLine(c1.TipoClaseUno);
            Console.WriteLine(c2.TipoClaseDos);
            Console.WriteLine(c3.TipoClaseTres);

            Console.WriteLine(c1.MostrarClaseUno());
            Console.WriteLine(c2.MostrarClaseDos());
            Console.WriteLine(c3.MostrarClaseTres());


            Console.ReadLine();

            //CREO LISTA GENERICA DE TIPO CLASEUNO
            List <ClaseUno> listaUno = new List <ClaseUno>();

            listaUno.Add(c1);
            listaUno.Add(c2);
            listaUno.Add(c3);

            //CREO LISTA GENERICA DE TIPO CLASEDOS
            List <ClaseDos> listaDos = new List <ClaseDos>();

            //listaDos.Add(c1);//ERROR
            listaDos.Add(c2);
            listaDos.Add(c3);

            //CREO LISTA GENERICA DE TIPO CLASETRES
            List <ClaseTres> listaTres = new List <ClaseTres>();

            //listaTres.Add(c1);//ERROR
            //listaTres.Add(c2);//ERROR
            listaTres.Add(c3);

            Console.ReadLine();

            //RECORRO LA LISTA... CUANDO EL OBJETO SEA CLASEDOS O CLASETRES -> ERROR!
            foreach (ClaseUno item in listaUno)
            {
                Console.WriteLine(item.TipoClaseUno);
                Console.WriteLine(item.MostrarClaseUno());
            }

            Console.ReadLine();



            #region Con Polimorfismo

            //foreach (ClaseUno item in listaUno)
            //{
            //    Console.WriteLine(item.Tipo);
            //    Console.WriteLine(item.Mostrar());
            //}

            //Console.ReadLine();
            #endregion
        }
Пример #8
0
        static void Main(string[] args)
        {
            ClaseUno  c1 = new ClaseUno("Primera Clase");
            ClaseDos  c2 = new ClaseDos("Primera Clase", "Segunda Clase");
            ClaseTres c3 = new ClaseTres("Primera Clase", "Segunda Clase", "Tercera Clase");

            Console.WriteLine(c1.TipoClaseUno);
            Console.WriteLine(c2.TipoClaseDos);
            Console.WriteLine(c3.TipoClaseTres);

            Console.WriteLine(c1.MostrarClaseUno());
            Console.WriteLine(c2.MostrarClaseDos());
            Console.WriteLine(c3.MostrarClaseTres());


            Console.ReadLine();

            List <ClaseUno> lista = new List <ClaseUno>();

            lista.Add(c1);
            lista.Add(c2);
            lista.Add(c3);

            foreach (ClaseUno item in lista)
            {
                if (item is ClaseUno)
                {
                    Console.WriteLine(item.TipoClaseUno);
                }
                if (item is ClaseDos)
                {
                    Console.WriteLine(((ClaseDos)item).TipoClaseDos);
                }
                if (item is ClaseTres)
                {
                    Console.WriteLine(((ClaseTres)item).TipoClaseTres);
                }

                if (item is ClaseUno)
                {
                    Console.WriteLine(item.MostrarClaseUno());
                }
                if (item is ClaseDos)
                {
                    Console.WriteLine(((ClaseDos)item).MostrarClaseDos());
                }
                if (item is ClaseTres)
                {
                    Console.WriteLine(((ClaseTres)item).MostrarClaseTres());
                }
            }

            Console.ReadLine();



            #region Con Polimorfismo
            //foreach (ClaseUno item in lista)
            //{
            //    Console.WriteLine(item.Tipo);
            //    Console.WriteLine(item.Mostrar());
            //}

            //Console.ReadLine();
            #endregion
        }
Пример #9
0
        static void Main(string[] args)
        {
            ClaseUno C1 = new ClaseUno("string de clase 1 \n");

            //Console.WriteLine(C1.MostrarClaseUno() + "\n"); //prueba

            //Console.WriteLine(C1.TipoClaseUno + "\n"); //prueba

            ClaseDos C2 = new ClaseDos("juan ", "perez \n");

            //Console.WriteLine(C2.MostrarClaseDos() + "\n"); //prueba

            //Console.WriteLine(C2.TipoClaseDos + "\n"); //prueba

            ClaseTres C3 = new ClaseTres("uno", " dos", " tres \n");

            //Console.WriteLine(C3.TipoClaseTres + "\n"); //prueba

            //Console.WriteLine(C3.MostrarClaseTres()); //prueba

            Console.WriteLine("\n" + "recorriendo lista:" + "\n");

            List <ClaseUno> ListaClases = new List <ClaseUno>(); //Lista generica debe guardar a la clase principal ya que

            //los hijos tambien pertenecen al padre, si lo hago al revez
            ListaClases.Add(C1);                               //poniendo a ClaseTres en la Lista, no va a tomar a la ClaseDos
            ListaClases.Add(C2);                               //ni a la ClaseUno ya que de la ClaseTres para abajo serian
            ListaClases.Add(C3);                               //del mismo tipo.

            //foreach (ClaseUno item in ListaClases) //sin polimorfismo tengo que recorrer de esta el foreach y mostrar asi
            //porque debo diferenciar cada tipo de objeto ya que el mostrar y la
            //propiedad de cada uno es individual y debo discriminarlos
            //{

            //    if (item is ClaseTres)
            //    {
            //        Console.WriteLine(((ClaseTres)item).MostrarClaseTres() + "\n");

            //        Console.WriteLine(((ClaseTres)item).TipoClaseTres + "\n");
            //    }

            //    else if (item is ClaseDos) //se usa else if porque sino al ser el mismo objeto lo muestra en todos los if
            //    {
            //        Console.WriteLine(((ClaseDos)item).MostrarClaseDos() + "\n");

            //        Console.WriteLine(((ClaseDos)item).TipoClaseDos + "\n");
            //    }

            //    else if (item is ClaseUno) //se usa else if porque sino al ser el mismo objeto lo muestra en todos los if
            //    {
            //        Console.WriteLine(item.MostrarClaseUno() + "\n");

            //        Console.WriteLine(item.TipoClaseUno + "\n");
            //    }
            //}

            foreach (ClaseUno item in ListaClases) //con polimorfismo  evito lo de arriba, tener que diferenciar entre
            {
                Console.WriteLine(item.Mostrar()); //metodos y propiedades de cada clase ya que la clase principal los tiene
                Console.WriteLine(item.Tipo);      //como virtual y los hijos como override. De este modo, al recorrer el foreach
                //el compilador sabe diferenciar a que metodo virtual u override debe invocar.
            }

            Console.WriteLine("\notro tipo de foreach: \n");

            foreach (ClaseUno item in ListaClases) //en este foreach al console.writeline se le pasa el item solo, ya que
            {                                      //sobreescribimos al ToString en cada clase y el console.writeline intenta
                Console.WriteLine(item);           //convertir implicimente en ToString al item.
                Console.WriteLine(item.Tipo);
            }

            Console.ReadKey();
        }