コード例 #1
0
        static void Main(string[] args)
        {
            #region EjercicioJKLM

            /*Usuario UsuarioA = new Usuario("Manuel", TipoUsuario.Lector);
             * Usuario UsuarioB = new Usuario("Antonio", TipoUsuario.Lector | TipoUsuario.OperadorInformes);
             * Usuario UsuarioC = new Usuario("María", TipoUsuario.Lector | TipoUsuario.OperadorInformes | TipoUsuario.GestorUsuarios | TipoUsuario.Administrador);
             *
             * Console.WriteLine("Manuel es gestor de usuarios?: " + EsGestorDeUsuarios(UsuarioA));
             * Console.WriteLine("Antonio es gestor de usuarios?: " + EsGestorDeUsuarios(UsuarioB));
             * Console.WriteLine("María es gestora de usuarios?: " + EsGestorDeUsuarios(UsuarioC));
             * Console.WriteLine("Manuel es administrador?: " + EsAdministrador(UsuarioA));
             * Console.WriteLine("Antonio es administrador?: " + EsAdministrador(UsuarioB));
             * Console.WriteLine("María es administradora?: " + EsAdministrador(UsuarioC));
             */
            #endregion

            #region Ejercicio NOPQRST

            /*Superman sup1 = new Superman();
             * IAvion sup2 = sup1;
             * IPajaro sup3 = sup1;
             *
             * //Ejercicio T: Al crear implementación explicita, no podemos llamar a Volar a secas porque colisiona.
             * //sup1.Volar();
             * //sup1.Aletear();
             * IAvion sup1Avion = sup1 as IAvion;
             * IPajaro sup1Pajaro = sup1 as IPajaro;
             * sup1Avion.Volar();
             * sup1Pajaro.Volar();
             * sup1Pajaro.Aletear();
             * //Al tratarlo como avión, no sabe aletear
             * sup2.Volar();
             * //sup2.Aletear();
             * //Al tratarlo como pájaro, sabe hacer ambas cosas. Solo tiene una definición de volar para todas las implementaciones.
             * sup3.Volar();
             * sup3.Aletear();
             */

            #endregion

            #region EjercicioU
            Superman sup1       = new Superman();
            IAvion   sup1Avion  = sup1;
            IPajaro  sup1Pajaro = sup1;
            sup1.Aletear();
            sup1.Volar();
            sup1Avion.Volar();
            sup1Pajaro.Aletear();
            sup1Pajaro.Volar();
            #endregion

            Console.ReadLine();
        }
コード例 #2
0
        public static void Ejercicio10a17()
        {
            Superman sup1 = new Superman();
            IAvion   sup2 = sup1;
            IPajaro  sup3 = sup1;

            sup1.Volar();
            sup1.Aletear();

            sup2.Volar();
            //sup2.Aletear(); //Da error porque hemos dicho que apunte a una referencia tratándolo como un tipo. Exactamente la implementación de la interfaz
            sup3.Volar();
            sup3.Aletear();
        }