Programación B - DAM Ilerna (Examen)
|
|
Título del Test:
![]() Programación B - DAM Ilerna (Examen) Descripción: Preguntas de examen para la asignatura Programación B de Ilerna |



| Comentarios |
|---|
NO HAY REGISTROS |
|
¿Cuál es el propósito de las funciones utilitarias, como las de la clase Math en Java?. Realizar operaciones lógicas basadas en parámetros sin depender del estado interno de un objeto. Facilitar la comunicación entre diferentes servidores de base de datos. Permitir que las variables de instancia se comporten como constantes. Gestionar la creación de múltiples instancias de una clase base. ¿Por qué no se puede utilizar la palabra clave 'this' dentro de un método estático?. Porque 'this' solo sirve para invocar constructores de superclases. Porque el método estático pertenece a la clase y puede existir sin que haya una instancia u objeto creado. Porque 'this' es una palabra reservada exclusiva para clases privadas. Porque los métodos estáticos se ejecutan antes que el compilador reconozca 'this'. Necesitas definir el valor de la gravedad terrestre (9.81) para un simulador físico de modo que sea accesible globalmente y no pueda ser modificado. ¿Cómo lo declararías?. public static final double GRAVEDAD = 9.81;. private static double gravedad = 9.81;. public double GRAVEDAD = 9.81;. static protected void gravedad() { ... }. Deseas rastrear el número total de empleados creados en tu empresa. ¿Dónde deberías incrementar el contador estático para asegurar que se cuente cada vez que se contrata (instancia) a alguien?. En un método estático llamado 'resetearContador'. Dentro del constructor de la clase Empleado. En la declaración de la clase como una constante final. En el método main del programa principal. ¿Cuál es la función principal de la palabra clave 'super' cuando se usa en un constructor?. Hacer que una subclase se convierta en superclase. Invocar el constructor de la superclase inmediata. Finalizar la ejecución del objeto actual. Reiniciar todos los valores estáticos de la clase padre. ¿Cómo se accede de forma recomendada a una variable declarada como estática desde fuera de su clase?. Instanciando primero un objeto de la clase. Solo se puede acceder si se utiliza el método super(). Utilizando el nombre de la clase seguido del punto y el nombre de la variable. Utilizando la palabra clave 'this' seguida del nombre de la variable. En una jerarquía 'Vehiculo' -> 'Coche', el método 'conducir()' en 'Coche' debe imprimir 'Encendiendo motor' y luego 'Acelerando'. Si 'Encendiendo motor' ya está en 'Vehiculo.conducir()', ¿cómo debe programarse 'Coche'?. Llamando a super.conducir() y luego añadiendo el código para 'Acelerando'. Usando la palabra clave 'this.conducir()' para evitar la superclase. Declarando el método conducir() como estático en ambas clases. Copiando y pegando el código de la superclase. En una jerarquía multinivel 'Animal' -> 'Mamifero' -> 'Perro', ¿a qué métodos tiene acceso la clase 'Perro'?. Solo a los métodos estáticos de 'Animal'. Solo a los métodos definidos en 'Mamifero'. Solo a los métodos definidos en 'Perro'. A los métodos públicos/protegidos de 'Mamifero' y de 'Animal'. Si diseñas un sistema de gestión escolar donde 'Profesor' y 'Estudiante' comparten atributos como 'nombre' y 'edad', ¿cuál sería la estructura de herencia más eficiente?. Crear una superclase 'Persona' con los atributos comunes y que 'Profesor' y 'Estudiante' extiendan de ella. Definir 'nombre' y 'edad' como variables estáticas en todas las clases. Hacer que 'Estudiante' herede de 'Profesor'. Usar la palabra clave 'final' para que los atributos no cambien. ¿A qué nivel pertenecen los miembros estáticos en el modelo de objetos de Java?. Al recolector de basura. Únicamente a los métodos locales. A la clase misma. A la instancia del objeto. ¿Cuál es la principal diferencia entre una variable de instancia y una variable estática?. La variable estática consume más memoria que la de instancia. La variable estática es compartida por todas las instancias, mientras que la de instancia es propia de cada objeto. Las variables estáticas solo pueden ser de tipo entero (int). Las variables de instancia no pueden ser modificadas después de su creación. Si una clase declara un método como 'static', pero intenta acceder a una variable de instancia (no estática) dentro de su cuerpo, ¿qué ocurrirá?. La variable de instancia se convertirá automáticamente en estática. Se producirá un error de compilación. El valor de la variable de instancia será siempre null o 0. El programa funcionará correctamente pero será más lento. ¿Qué modificador se utiliza junto con 'static' para crear una constante cuyo valor sea inmutable?. constant. private. protected. final. Al comparar variables estáticas y variables de instancia en un entorno con 100 objetos creados, ¿cuántas copias de cada una existen en memoria?. 100 copias de la variable estática y 1 de la de instancia. 1 copia de cada una para optimizar el rendimiento. Ninguna copia hasta que se invoquen mediante un método. 1 copia de la variable estática y 100 copias de la variable de instancia. ¿Qué afirmación describe mejor la relación entre la herencia y la reutilización de código según el texto?. Obliga a que todos los objetos compartan exactamente los mismos valores en sus atributos. Permite adquirir comportamientos existentes y extenderlos o especializarlos sin reescribir la lógica base. La herencia sirve principalmente para ocultar el código complejo de los usuarios finales. Evita que las subclases puedan tener sus propios métodos independientes. Tienes una clase 'CuentaBancaria' con una variable 'static double tasaInteres'. Si cambias el valor de 'tasaInteres' a través de un objeto llamado 'cuentaA', ¿qué verán otros objetos como 'cuentaB'?. Seguirán viendo el valor original hasta que se reinicien. Verán null ya que la variable fue modificada externamente. Verán el nuevo valor actualizado de forma inmediata. Verán un error de compilación por acceso compartido. ¿Qué sucede con los miembros marcados como 'private' de una superclase cuando son heredados por una subclase?. Permanecen ocultos y no son accesibles directamente por la subclase. Solo pueden ser accedidos mediante la palabra clave 'extends'. Se vuelven públicos automáticamente para la subclase. Se eliminan de la memoria para ahorrar espacio. En el contexto de la herencia, ¿qué significa el concepto de 'sobreescritura'?. Proporcionar una implementación específica en la subclase para un método que ya existe en la superclase. Cambiar el nombre de una variable heredada para evitar conflictos. Crear un nuevo método con el mismo nombre pero diferentes parámetros en la misma clase. Eliminar un método de la superclase para que no pueda ser usado. Si tienes una referencia Animal miAnimal = new Gato();, y tanto Animal como Gato tienen un método hacerSonido(), ¿qué versión del método se ejecutará al llamar miAnimal.hacerSonido()?. El método definido en la clase Gato. El método definido en la clase Animal. Dará un error de ejecución porque los tipos no coinciden. Se ejecutarán ambos métodos en orden aleatorio. ¿Qué palabra clave se utiliza en Java para que una clase herede los atributos y métodos de otra?. inherits. implements. extends. super. ¿Cuál es el propósito fundamental de una clase abstracta?. Evitar que otras clases hereden de ella. Servir como una base común para un grupo de clases relacionadas. Almacenar únicamente métodos con implementación completa. Crear objetos que no consuman memoria. ¿Qué palabra clave se utiliza en Java para que una clase adopte una interfaz?. interface. extends. implements. abstract. ¿Qué elemento NO puede ser marcado con el modificador 'abstract' en Java?. Subclases. Métodos. Variables. Clases. En el contexto de diseño, ¿qué suele representar una interfaz en comparación con una clase abstracta?. La interfaz representa una identidad, la clase abstracta una capacidad. Ambas representan exactamente lo mismo en términos de diseño. La interfaz es para datos y la clase abstracta es para lógica. La interfaz representa una capacidad (lo que puede hacer), la clase abstracta una identidad (lo que es). Se define 'interface Animal { void comer(); }'. Si creas una clase 'Leon' que implementa 'Animal', ¿qué código es obligatorio?. Un constructor llamado Animal(). @Override public void comer() { ... }. Una variable llamada tipoComida. Un método main que instancie la interfaz. En un sistema de archivos, 'Documento' e 'Imagen' implementan 'Imprimible'. Si el sistema llama a 'objeto.imprimir()', ¿qué sucede?. Se ejecuta el código por defecto de la interfaz para ambos. Se ejecuta la lógica específica de impresión definida en cada clase concreta. Ambos imprimen el mismo contenido genérico. El sistema lanza un error porque no sabe si es texto o píxeles. ¿Cuál es el modificador de acceso predeterminado para los métodos declarados dentro de una interfaz en Java?. public. private. package-private. protected. ¿Qué representa conceptualmente una interfaz en la programación orientada a objetos?. Una estructura para almacenar variables de estado globales. Una plantilla de objetos con datos predefinidos. Una clase que permite crear instancias rápidamente. Un contrato formal que define comportamientos. Si una clase abstracta 'Figura' tiene un método abstracto 'dibujar()', ¿qué debe hacer una clase 'Triangulo' que hereda de ella?. Declarar el método 'dibujar()' como privado. Proporcionar el cuerpo y la lógica del método 'dibujar()'. Crear una nueva interfaz llamada 'Dibujo'. Ignorar el método si no necesita dibujo. En el diseño del método 'acelerar()' para un 'Vehiculo' (clase abstracta) y sus subclases 'Coche' y 'Avion', ¿por qué es mejor que sea abstracto?. Porque el compilador de Java no permite métodos concretos en clases abstractas. Para evitar que los vehículos se detengan de forma incorrecta. Porque aunque todos aceleran, el mecanismo técnico de aceleración es radicalmente distinto para cada uno. Porque así se ahorra memoria al no escribir el código de aceleración. Analiza la siguiente afirmación: 'Una interfaz es más flexible que una clase abstracta para añadir comportamientos a clases de distintas jerarquías'. ¿Es esto cierto?. Sí, porque una clase puede implementar múltiples interfaces sin importar su padre biológico. No, porque las clases abstractas permiten herencia múltiple y las interfaces no. No, porque las interfaces no pueden tener ningún tipo de método después de Java 8. Sí, porque las interfaces permiten definir variables de estado compartidas. ¿Cómo se define un método abstracto en una interfaz?. Se utiliza la palabra clave 'concrete'. Se escribe la firma del método seguida de un punto y coma. Se debe inicializar obligatoriamente con el valor null. Se escribe la firma seguida de llaves vacías. Si tienes una interfaz 'Volador' y una clase 'Pajaro' que la implementa, ¿cuál es la sintaxis correcta?. class Pajaro extends Volador { ... }. interface Pajaro extends Volador { ... }. class Volador implements Pajaro { ... }. class Pajaro implements Volador { ... }. Tienes una interfaz 'Calculable' con el método 'int operar(int x)'. ¿Cuál de las siguientes implementaciones en una clase es válida?. public int operar(int x) { return x * x; }. void operar(int x) { System.out.println(x); }. public static int operar(int x) { return 0; }. int operar() { return 10; }. ¿Cuál es la principal diferencia entre la herencia de clases y la implementación de interfaces en Java?. Las clases solo pueden heredar de interfaces. Una clase puede implementar múltiples interfaces pero solo puede heredar de una clase. No hay diferencia técnica entre ambas estructuras. La herencia permite múltiples padres, mientras que las interfaces no. ¿Por qué no se puede instanciar una clase abstracta directamente con el operador 'new'?. Porque las clases abstractas solo pueden contener constantes estáticas. Porque Java prohíbe el uso de constructores en clases abstractas. Porque puede contener métodos sin implementación que el objeto no sabría cómo ejecutar. Porque carece de un nombre identificador válido. Compara una interfaz y una clase abstracta respecto al manejo de estado (variables). ¿Cuál es la limitación de la interfaz?. La clase abstracta solo permite variables privadas. La interfaz solo puede tener constantes, mientras que la clase abstracta puede tener variables de instancia. La interfaz no permite ningún tipo de dato, ni siquiera constantes. Ambas pueden tener variables de instancia que cambian por objeto. Considerando el ejemplo del 'Hidroavion', ¿qué obliga al programador la declaración 'class Hidroavion implements Navegable, Volador'?. A heredar las variables de estado de Navegable y Volador. A definir la lógica de los métodos definidos en ambas interfaces. A convertir al Hidroavion en una clase abstracta obligatoriamente. A elegir solo una de las dos para implementar sus métodos. ¿Qué sucede si una clase implementa una interfaz pero no define todos sus métodos?. El compilador ignora los métodos faltantes. La clase debe ser declarada como abstracta para poder compilarse. Los métodos faltantes se borran automáticamente de la interfaz. Se genera un error de ejecución al intentar usar el objeto. Deseas modelar un 'Smartphone' que es un 'DispositivoElectronico' y además es 'ReproductorMusica' y 'Camara'. ¿Cómo se lograría esto en Java?. Creando tres clases distintas y uniéndolas con el operador add. Heredando de DispositivoElectronico e implementando ReproductorMusica y Camara. Heredando de las tres clases simultáneamente. Implementando las tres interfaces sin usar herencia. Analice la ventaja de usar @Override. ¿Cuál es su impacto principal en el proceso de desarrollo?. Permite que el compilador detecte discrepancias en la firma del método antes de la ejecución. Cambia el tipo de retorno del método automáticamente según el contexto. Es lo que permite que el método pueda ser llamado mediante 'super'. Mejora significativamente la velocidad de ejecución del código. Si tienes la clase Vehiculo y la subclase Coche, ¿cuál es la sintaxis correcta para realizar un downcasting explícito de una referencia 'v' de tipo Vehiculo?. Coche miCoche = (Coche) v;. Coche miCoche = v as Coche;. Coche miCoche = v.toCoche();. Coche miCoche = Coche.from(v);. Compare el upcasting y el downcasting. ¿Cuál es la principal diferencia en términos de seguridad para el compilador?. El upcasting requiere 'instanceof' y el downcasting es automático. El upcasting siempre es seguro (implícito), mientras que el downcasting es arriesgado (explícito). Ambos son igualmente peligrosos y requieren manejo de excepciones. El upcasting solo funciona con clases y el downcasting con interfaces. ¿Qué anotación de Java se utiliza para indicar que un método está reemplazando un comportamiento heredado?. @Polymorphism. @Overload. @Inherit. @Override. Para evitar una ClassCastException al convertir una referencia 'Objeto o' a 'Circulo', ¿cuál es el código correcto?. if (o instanceof Circulo) { Circulo c = (Circulo) o; }. Circulo c = o.castToCirculo();. try { Circulo c = o; } catch (Exception e) {}. if (o == Circulo) { Circulo c = (Circulo) o; }. ¿En qué se diferencia el polimorfismo estático del dinámico?. El estático se basa en la sobrecarga y el dinámico en la sobreescritura. El estático usa herencia y el dinámico usa únicamente interfaces. El estático requiere 'instanceof' y el dinámico es automático. El estático se decide en ejecución y el dinámico en compilación. ¿Por qué se afirma que los constructores no pueden ser sobreescritos en Java?. Porque su firma cambia automáticamente en cada subclase. Porque los constructores no se heredan entre clases. Porque deben tener siempre el modificador 'final'. Porque el compilador solo permite una versión por jerarquía. ¿Qué permite que clases sin una raíz común puedan ser tratadas bajo un mismo tipo polimórfico?. La implementación de interfaces comunes. El casting automático de constructores. El uso de la palabra reservada 'extends'. La sobrecarga de métodos estáticos. Se tiene 'Animal a = new Perro();'. Si llamamos a 'a.hacerSonido()', donde 'Perro' sobreescribe a 'Animal', ¿qué sucede?. Se ejecuta la versión de Perro debido al dynamic binding. El programa pide al usuario elegir qué método usar. Se ejecuta la versión de Animal por ser el tipo de referencia. Se produce un error de compilación por ambigüedad. ¿Cuál es el término técnico en inglés utilizado para referirse a la sobreescritura de métodos?. Method casting. Method overriding. Method shadowing. Method overloading. ¿Cuál es el propósito principal de utilizar la palabra reservada 'super' dentro de un método sobreescrito?. Evitar que la subclase pueda modificar el comportamiento original. Convertir automáticamente el objeto actual a su clase base. Invocar la implementación del método de la superclase para extender su funcionalidad. Llamar al constructor de la clase hija desde la clase padre. ¿Cómo se relacionan el polimorfismo y la sobreescritura de métodos?. La sobreescritura es el mecanismo que permite manifestar el polimorfismo dinámico. Son conceptos opuestos: uno es estático y el otro dinámico. No tienen relación, ya que el polimorfismo solo aplica a interfaces. El polimorfismo es un requisito previo para poder realizar sobreescritura. Usted desea que una subclase ejecute la lógica del padre y luego añada algo propio. ¿Cómo debe estructurar el método?. Definir el método como 'static' en la subclase. No usar @Override para que no se reemplace el original. Usar la anotación @Inherit y escribir solo lo nuevo. Invocar super.metodo() y luego añadir el código adicional. ¿Cuál es la función del operador 'instanceof' en el contexto del casting?. Convertir automáticamente una superclase en una subclase. Eliminar la referencia de un objeto para liberar memoria. Comparar si dos objetos tienen los mismos valores en sus atributos. Verificar si un objeto es una instancia de un tipo determinado antes de la conversión. ¿Qué excepción se lanza en Java si un downcasting es inválido en tiempo de ejecución?. ClassCastException. NullPointerException. TypeMismatchException. IllegalArgumentException. Dada la jerarquía: Documento implementa Imprimible. ¿Cuál de estas líneas representa un upcasting válido y automático?. Imprimible i = (Imprimible) Documento;. Documento d = i instanceof Imprimible;. Documento d = (Documento) new Imprimible();. Imprimible i = new Documento();. En un constructor de la clase 'Empleado' que hereda de 'Persona', ¿cómo se asegura que el nombre definido en 'Persona' se inicialice?. Java lo hace automáticamente sin necesidad de código adicional. Llamando a super(nombre) en la primera línea del constructor de Empleado. Sobreescribiendo el constructor de Persona en Empleado. Usando this.nombre = nombre; directamente. ¿Qué ocurre con el acceso a los miembros del objeto al realizar un upcasting?. Se eliminan físicamente los métodos de la subclase de la memoria. El objeto deja de responder a los métodos sobreescritos. Se pierde el acceso directo a los métodos exclusivos de la subclase. Se requiere un operador especial para mantener la visibilidad. ¿Cómo se conoce al proceso de polimorfismo que ocurre durante el tiempo de ejecución?. Dynamic binding. Implicit casting. Early binding. Static binding. Si una clase 'Animal' tiene un método 'hacerSonido(int volumen)' y quieres sobreescritlo en 'Perro', ¿qué firma debe tener el método en 'Perro'?. hacerSonido(int volumen). hacerSonido(). hacerSonido(int v, String tipo). hacerSonido(double volumen). |




