Examen Teórico Convocatoria de Junio de 2016

Anuncio
Programación Orientada a Objetos
26/05/2016
Examen Teórico
Convocatoria de Junio de 2016
Nombre:_______________________________________________________________________
DNI:_______________________ Grupo:_____________________________________________
1. Responde a las siguientes cuestiones:
a) Un programador Java desarrolla un proyecto denominado puzzle utilizando el entorno
Eclipse (con la configuración por defecto del proyecto) y decide ejecutarlo desde la línea de
comandos. Escribe el comando para la ejecución sabiendo que:



la aplicación se lanza desde la carpeta del proyecto
la
clase
principal
puzzle.programa
Inicio.java
se
encuentra
ubicada
en
es necesaria la librería configuracion.jar, ubicada en la carpeta lib.
el
paquete
b) Explica el significado de una clase con el modificador final. ¿Es compatible utilizar el
modificador final en la clase y en las declaraciones (atributos y métodos) de la clase?
Programación Orientada a Objetos
26/05/2016
2. Supuesta la clase abstracta A, y una variable var, responde de forma razonada a las siguientes
cuestiones:
a) ¿Cuál podría ser el tipo estático de var (distinto de A) para que el casting (A)var sea
correcto en tiempo de compilación?
b) ¿Es posible asignar una referencia a un objeto a var de manera que el resultado de la
consulta (var.getClass() == A.class) sea true?
Programación Orientada a Objetos
26/05/2016
3. Responde de forma razonada a las siguientes cuestiones:
a) Explica el concepto de regla covariante y muestra un ejemplo.
b) Si una clase no implementa ningún constructor ¿es posible que el constructor por defecto
falle en tiempo de compilación?
Programación Orientada a Objetos
26/05/2016
4. Dada la jerarquía de excepciones de la figura y el siguiente código, contesta a las siguientes
cuestiones:
public class Excepciones {
public void lanzarMoneda() throws Excepcion1{
Random random = new Random();
int valor = random.nextInt(2);
switch (valor){
case 0: throw new Excepcion1();
case 1: throw new Excepcion2();
}
}
}
public void metodo() throws Excepcion3{
try{
lanzarMoneda();
}catch (Excepcion1 e1){
System.err.println("E1");
}catch (Excepcion2 e2){
System.err.println("E2");
}
finally{
System.out.println("finally");
}
}
a) Define las constantes cara y cruz para mejorar la legibilidad del método lanzarMoneda().
b) El compilador señala que existe un error en tiempo de compilación. Explica el motivo e indica
la forma de solucionarlo. Una vez solucionado explica cuál sería el resultado de una ejecución
del método metodo().
Programación Orientada a Objetos
26/05/2016
5. Responde de forma razonada a las siguientes cuestiones:
a) ¿Qué diferencia existe entre las siguientes declaraciones de métodos?
void metodo(List<Elemento> elementos)
void metodo (List<? extends Elemento> elementos)
b) ¿Qué papel juega el mecanismo de autoboxing en el uso de las colecciones de Java (como
LinkedList) con tipos primitivos?
Programación Orientada a Objetos
26/05/2016
6. Contesta a las siguientes cuestiones:
a) Explica por qué es recomendable redefinir conjuntamente los métodos equals y hashCode.
b) Supongamos una clase A que redefine el método clone de la clase Object, y dada una
variable oa de tipo A. ¿Cuál es el resultado de la siguiente expresión? Justifica la respuesta.
oa.equals(oa.clone());
Programación Orientada a Objetos
26/05/2016
7. Dado el siguiente código, contesta de forma razonada a las siguientes cuestiones:
public class PasoParametros {
void cambio(String x, String[] array){
array[0] = x;
}
public static void main(String[] args){
args[0] = "hola";
cambio("examen", args);
System.out.print(args[0]);
}
}
a) El compilador señala que existe un error de compilación y, además existe otro error
conceptual (compila pero podría no funcionar). Explica y soluciona ambos problemas.
b) Explica cuál sería el resultado de la ejecución del método main.
Programación Orientada a Objetos
26/05/2016
8. Queremos ofrecer una interfaz que defina un tipo de datos que represente un proveedor de
objetos de un mismo tipo. Para ello la interfaz debe declarar una operación que retorne un
objeto. El ejercicio consiste en:
a) Declarar la interfaz, con el fin de que el tipo de datos sea lo más reutilizable posible.
b) Implementar la interfaz en una clase que retorne un número aleatorio entre 0 y 99 cada vez
que se invoque a la operación.
Programación Orientada a Objetos
9. Colecciones.
26/05/2016
Implementa un método genérico que reciba como parámetros una lista y un valor de un
elemento. La funcionalidad del método consiste en borrar todas las ocurrencias en la lista de
elementos iguales al pasado como parámetro. El método devolverá el número de ocurrencias
que se han borrado. Se establece como requisito utilizar un iterador explícito para el
procesamiento de la lista.
Programación Orientada a Objetos
26/05/2016
10. Java 8.
a) Explica qué es y para qué se utiliza el concepto de método por defecto en una interfaz. Ilustra
la explicación con un ejemplo.
b) Utilizando el modelo de procesamiento basado en streams, implementa un método que
muestre por la consola un listado de asignaturas de un cierto tipo. La clase Asignatura se
implementa como sigue:
enum TipoAsignatura {C1, C2, ANUAL}
public class Asignatura {
private String nombre;
private Set<Alumno> matriculados;
private TipoAsignatura tipo;
private LocalDate fechaExamen;
}
// Métodos get
…
El método recibe como parámetros una colección de
asignaturas y un tipo de asignatura. La funcionalidad del
método consiste en mostrar en la consola el nombre de
la asignatura, la fecha del examen y el número de
matriculados, de aquellas asignaturas del tipo
establecido como parámetro. Además, los resultados
deben mostrarse ordenados de menor a mayor fecha de
examen (orden natural). Un ejemplo de uso de este
método podría ser mostrar las asignaturas del primer
cuatrimestre.
Descargar