public int responderPregunta(int pregunta)
 {
     if (alumnoRealEstudioso == null)
     {
         Console.WriteLine("Creo el alumno estudioso a traves del proxy");
         alumnoRealEstudioso = (AlumnoMuyEstudioso)fabricaAlumnos.crearAleatorio();
         ((AlumnoMuyEstudioso)alumnoRealEstudioso).setNombre(nombreEstudioso);
     }
     return(((AlumnoMuyEstudioso)alumnoRealEstudioso).responderPregunta(pregunta));
 }
        public new IAlumno crearAleatorio()
        {
            IAlumno aluDec = new AlumnoMuyEstudioso((IAlumno)base.crearAleatorio());

            aluDec = new LegajoDecorator(aluDec);
            aluDec = new LetrasDecorator(aluDec);
            aluDec = new PromocionDecorator(aluDec);
            aluDec = new NumeroDecorator(aluDec);
            aluDec = new CuadroDecorator(aluDec);

            return(aluDec);
        }
        public override Comparable crearAleatorio()
        {
            string  nombre;
            int     dni, legajo;
            decimal promedio;

            string[] nombres = new string[] { "Maxi", "Paula", "Roberto", "Nacho", "Adrian", "Diego", "Lucia", "Florencia", "Cintia", "Ana", "Graciela", "Yesica", "Daiana", "Carolina", "Gaston", "Luis", "Jacinto", "Ramona", "Ignacia", "Viviana" };
            nombre   = nombres[random.Next(0, 19)];
            dni      = random.Next(12000000, 40000000);
            legajo   = random.Next(1, 2000);
            promedio = decimal.Round((Convert.ToDecimal((random.NextDouble() + random.Next(1, 10)))), 2);
            Comparable         alumnoBase = new Alumno(nombre, dni, legajo, promedio);
            AlumnoMuyEstudioso alumno     = new AlumnoMuyEstudioso((Alumno)alumnoBase);

            //Console.WriteLine(alumno);
            return(alumno);
        }
        public override Comparable crearPorTeclado()
        {
            LectorDeDatos lector = new LectorDeDatos();

            Console.WriteLine("NOMBRE");
            string nombre = lector.stringPorTeclado();

            Console.WriteLine("DNI");
            int dni = lector.numeroPorTeclado();

            Console.WriteLine("LEGAJO");
            int legajo = lector.numeroPorTeclado();

            Console.WriteLine("PROMEDIO");
            decimal            promedio   = Convert.ToDecimal(lector.numeroPorTeclado());
            Comparable         alumnoBase = new Alumno(nombre, dni, legajo, promedio);
            AlumnoMuyEstudioso alumno     = new AlumnoMuyEstudioso((Alumno)alumnoBase);

            return(alumno);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="args"></param>
        public static void Main(string[] args)
        {
            // Practica 4 - Ejercicio 4 //

            Console.WriteLine("Practica 4 - Ejercicio 4");
            Console.WriteLine("************************\n");

            Teacher            profesor       = new Teacher();
            FabricaDeAlumnos   fabricaAlumnos = new FabricaDeAlumnos();
            Alumno             alumno;
            AlumnoMuyEstudioso alumnoEst;
            StudentAdapter     estudiante;

            for (int i = 0; i < 20; i++)
            {
                alumno = (Alumno)fabricaAlumnos.crearAleatorio();
                if ((i % 2) == 0)
                {
                    estudiante = new StudentAdapter(alumno);
                }
                else
                {
                    alumnoEst  = new AlumnoMuyEstudioso(alumno);
                    estudiante = new StudentAdapter(alumnoEst);
                }
                profesor.goToClass(estudiante);
            }

            profesor.teachingAClass();



            // Practica 4 - Ejercicio 6 //


            Console.WriteLine("Practica 4 - Ejercicio 6");
            Console.WriteLine("************************\n");

            Alumno alumnoDec = (Alumno)fabricaAlumnos.crearAleatorio();

            alumnoDec.setCalificacion(6);

            DecoratorCalificacion decorador = new Decorator(alumnoDec);

            Console.WriteLine("\nDECORATOR:");
            Console.WriteLine(decorador.mostrarCalificacion());

            LegajoDecorator legDec = new LegajoDecorator(decorador, alumnoDec);

            Console.WriteLine("\nLEGAJO DECORATOR:");
            Console.WriteLine(legDec.mostrarCalificacion());

            LetrasDecorator letrDec = new LetrasDecorator(legDec, alumnoDec);

            Console.WriteLine("\nLETRAS DECORATOR:");
            Console.WriteLine(letrDec.mostrarCalificacion());

            PromocionDecorator promDec = new PromocionDecorator(letrDec, alumnoDec);

            Console.WriteLine("\nPROMOCION DECORATOR:");
            Console.WriteLine(promDec.mostrarCalificacion());

            NumeroDecorator numDec = new NumeroDecorator(promDec, alumnoDec);

            Console.WriteLine("\nNUMERO DECORATOR:");
            Console.WriteLine(numDec.mostrarCalificacion());

            CuadroDecorator cuadroDec = new CuadroDecorator(numDec, alumnoDec);

            Console.WriteLine("\nCUADRO DECORATOR:");
            Console.WriteLine(cuadroDec.mostrarCalificacion());



            Console.ReadKey();
        }