static void Main(string[] args)
        {
            int edad = 66;
            Persona objetoPersona = new Persona("Persona", edad);
            int legajo = 333;
            //Alumno objetoAlumo = new Alumno(objetoPersona, legajo);
            Alumno objetoAlumo = new Alumno(new Persona("alumno",77), legajo);
            DateTime fechaEgreso = DateTime.Now;
            //AlumnoEgresado objetoAlumnoEgresado = new AlumnoEgresado(objetoAlumo, fechaEgreso);
            AlumnoEgresado objetoAlumnoEgresado = new AlumnoEgresado(new Alumno(22,8888," alumnoEgresado"),DateTime.Now);
            Profesor objetoProfesor = new Profesor(new Persona("profesor",55), 999);
            Persona[] conjuntoDePersonas= new Persona[4];
            conjuntoDePersonas[0] = objetoPersona;
            conjuntoDePersonas[1] = objetoAlumo;
            conjuntoDePersonas[2] = objetoAlumnoEgresado;
            conjuntoDePersonas[3] = objetoProfesor;

            foreach (Persona item in conjuntoDePersonas)
            {
                Console.WriteLine(item.ToString());
            }
            //no genericas --- que no tienen genero , proceso inbox
            ArrayList vector = new ArrayList();
            vector.Add(3);
            vector.Add(objetoAlumo);
            vector.Add("alguna palabra");
            int dato=  vector.Capacity;
            int dato2 = vector.Count;

            Stack pilaDeDatos = new Stack();

            pilaDeDatos.Push(1);
            pilaDeDatos.Push(1);
        }
        static void Main(string[] args)
        {
            int edad = 66;
            Persona objetoPersona = new Persona("Persona", edad);
            int legajo = 333;
            //Alumno objetoAlumo = new Alumno(objetoPersona, legajo);
            Alumno objetoAlumo = new Alumno(new Persona("alumno",77), legajo);
            DateTime fechaEgreso = DateTime.Now;
            //AlumnoEgresado objetoAlumnoEgresado = new AlumnoEgresado(objetoAlumo, fechaEgreso);
            AlumnoEgresado objetoAlumnoEgresado = new AlumnoEgresado(new Alumno(22,8888," alumnoEgresado"),DateTime.Now);
            Profesor objetoProfesor = new Profesor(new Persona("profesor",55), 999);
            Persona[] conjuntoDePersonas= new Persona[4];
            conjuntoDePersonas[0] = objetoPersona;
            conjuntoDePersonas[1] = objetoAlumo;
            conjuntoDePersonas[2] = objetoAlumnoEgresado;
            conjuntoDePersonas[3] = objetoProfesor;

            foreach (Persona item in conjuntoDePersonas)
            {
                Console.WriteLine(item.ToString());
            }
        }
        static void Main(string[] args)
        {
            int edad = 66;
            Persona objetoPersona = new Persona("Persona", edad);
            int legajo = 333;
            //Alumno objetoAlumo = new Alumno(objetoPersona, legajo);
            Alumno objetoAlumo = new Alumno(new Persona("alumno",77), legajo);
            DateTime fechaEgreso = DateTime.Now;
            //AlumnoEgresado objetoAlumnoEgresado = new AlumnoEgresado(objetoAlumo, fechaEgreso);
            AlumnoEgresado objetoAlumnoEgresado = new AlumnoEgresado(new Alumno(22,8888," alumnoEgresado"),DateTime.Now);
            Profesor objetoProfesor = new Profesor(new Persona("profesor",55), 999);
            Persona[] conjuntoDePersonas= new Persona[4];
            conjuntoDePersonas[0] = objetoPersona;
            conjuntoDePersonas[1] = objetoAlumo;
            conjuntoDePersonas[2] = objetoAlumnoEgresado;
            conjuntoDePersonas[3] = objetoProfesor;

            foreach (Persona item in conjuntoDePersonas)
            {
                Console.WriteLine(item.ToString());
            }

            //---------------------------------------------------------------------------------------------------
            // COLECCIONES NO GENERICAS (no tiene genero; no tiene un tipo de dato)
            System.Collections.ArrayList MiColeccion = new ArrayList(5);
            MiColeccion.Add("ola");
            MiColeccion.Add(objetoAlumo);
            int Cantidad = MiColeccion.Count;
            int capasidad = MiColeccion.Capacity;

            // PILAS
            Stack PilaDeDatos = new Stack();
            PilaDeDatos.Push(1);            //Agrega a la parte superior de la pila
            PilaDeDatos.Push("ola");

            Object Algo = PilaDeDatos.Peek();         //toma el objeto superior SIN borrarlo
            Algo = PilaDeDatos.Pop();                 //toma el objeto superior borrandolo

            // COLAS
            Queue ColaDeDatos = new Queue();
            ColaDeDatos.Enqueue(1);
            ColaDeDatos.Enqueue("ola");

            Object Algo2 = ColaDeDatos.Peek();             //toma el objeto inferior SIN borrarlo
            Algo2 = ColaDeDatos.Dequeue();                 //toma el objeto inferior borrandolo

            // TABLA DE ARRAY
            Hashtable TablaClaveValor = new Hashtable();
            TablaClaveValor.Add(1, "Hola");
            TablaClaveValor.Add(2, "Mundo");
            TablaClaveValor.Add(3, objetoPersona);
            object Dato = TablaClaveValor[3];
            //-------------------------------------------------------------------------------------------------

            // COLECCIONES GENERICAS (poseen un genero; un tipo de dato; elementos fuertemente tipados)

            // LISTA
            List<Profesor> ListaProfesor = new List<Profesor>();
            ListaProfesor.Add(objetoProfesor);

            List<Persona> ListaPersonas = new List<Persona>();  //Puede agregar por la herencia
            ListaPersonas.Add(objetoProfesor);
            ListaPersonas.Add(objetoAlumo);
            ListaPersonas.Add(objetoPersona);

            // PILA
            Stack<Persona> PilaPersonas = new Stack<Persona>();
            PilaPersonas.Push(objetoAlumo);
            PilaPersonas.Push(objetoProfesor);

            Algo = PilaPersonas.Peek();
            Algo = PilaPersonas.Pop();

            // COLA
            Queue<Persona> ColaPersonas = new Queue<Persona>();
            ColaPersonas.Enqueue(objetoProfesor);
            ColaPersonas.Enqueue(objetoAlumo);

            Algo = ColaPersonas.Peek();
            Algo = ColaPersonas.Dequeue();
        }
 public Profesor(Persona PersonaParametro, int legajo)
     : base(PersonaParametro.Nombre,PersonaParametro.Edad)
 {
     this._legajoDocente = legajo;
 }
        public static void MostrarColeccionesGenerics()
        {
            Console.Clear();
            Console.WriteLine("******************************");
            Console.WriteLine("**********Generis*************");
            Console.WriteLine("******************************");
            Console.ReadLine();

            Console.WriteLine("******************************");
            Console.WriteLine("*********Dictionary***********");
            Console.WriteLine("******************************");
            Console.ReadLine();

            //DECLARO UNA COLECCION GENERICA DE TIPO CLAVE-VALOR
            Dictionary<int, Persona> diccionario = new Dictionary<int, Persona>();

            Console.WriteLine("Creo mi diccionario con los tipos...");
            Console.WriteLine("Dictionary<int, Persona> diccionario");

            Console.ReadLine();
            Console.Clear();

            //DECLARO E INSTANCIO UNA PERSONA
            Persona personita = new Persona("Roberto",22);

            diccionario.Add(1, new Persona("Juan", 88));
            diccionario.Add(2, personita);
            diccionario.Add(3, new Persona("Rosa",44));
            diccionario.Add(4, new Persona("Elvira",22));

            Console.WriteLine("Agrego con diccionario.Add()");
            Console.WriteLine("Recorro la colección con un for.");
            Console.ReadLine();

            Console.WriteLine("Cantidad de elementos en la colección {0}.",
                                diccionario.Count);

            Console.ReadLine();

            for (int i = 1; i <= diccionario.Count; i++)
            {
                diccionario[i].MostrarPersona();
            }

            Console.ReadLine();

            Console.Clear();
            Console.WriteLine("******************************");
            Console.WriteLine("******Listas Genéricas********");
            Console.WriteLine("******************************");
            Console.ReadLine();

            //DECLARO E INSTANCIO UNA LISTA GENERICA DE PERSONA
            List<Persona> lista = new List<Persona>();

            Console.WriteLine("Creo mi lista de tipo...");
            Console.WriteLine("List<Persona> lista ");

            Console.ReadLine();
            Console.Clear();

            lista.Add(new Persona("Juan",88));
            lista.Add(personita);
            lista.Add(new Persona("Rosa",44));

            Console.WriteLine("Agrego con lista.Add()");
            Console.WriteLine("Recorro la colección con un for each.");
            Console.ReadLine();

            Console.WriteLine("Cantidad de elementos en la colección {0}.",
                                lista.Count);

            Console.ReadLine();

            foreach (Persona elemento in lista)
            {
                elemento.MostrarPersona();
            }

            Console.ReadLine();
        }