POO 2019 Septiembre ModeloA Original Solucion
POO 2019 Septiembre ModeloA Original Solucion
POO 2019 Septiembre ModeloA Original Solucion
INGENIERÍA INFORMÁTICA
71901072 – PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA /
TECNOLOGÍAS DE LA INFORMACIÓN)
SEPTIEMBRE 2019 – MODELO A – NO ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONAL
Pregunta 1: Respecto a los conceptos de clases y objetos, según el texto de la bibliografía básica de la
asignatura, podemos afirmar …
Pregunta 2: Respecto al concepto de palabras clave o palabras reservadas, según el texto de la bibliografía
básica de la asignatura, podemos afirmar …
1 import java.util.*;
2 public class Ejemplo {
3 public static void main (String args []) {
4 ArrayList <String> a = new ArrayList (5);
5 for (int i=0; i<=5; i++)
6 {
7 a.add("Hola");
8 }
9 System.out.println("Funciona");
10 }
11 }
Pregunta 5: Según el texto de la bibliografía básica de la asignatura, ¿En qué condiciones puede volverse a
invocar un constructor de una clase para un objeto después de que ese objeto haya sido creado?
a. Cuando queremos resetear todos los campos del objeto a sus valores.
b. Cuando se ha creado un objeto abstracto y se le quiere dar valores iniciales a sus atributos.
c. Cuando se implementa una interfaz para el objeto en cuestión.
d. Nunca.
Pregunta 6: Sea el siguiente fragmento de código de código (se omiten las sentencias import para importar
las clases que correspondan):
1 Random randomGenerator;
2 randomGenerator = new Random(0);
3 char index = (char) randomGenerator.nextInt(0);
4 System.out.println(index);
a. En la línea 1.
b. En la línea 2.
c. En la línea 3.
d. No se produce error de compilación.
a. será responsable de al menos una tarea bien definida, pero puede serlo de más.
b. será responsable de una y sólo una tarea bien definida.
c. es aquel método abstracto que se ha instanciado en una clase determinada.
d. es aquel que se crea en una clase interna para ser invocado desde la clase circundante.
Pregunta 9: Queremos compilar el siguiente código que se puede encontrar en el texto base de la asignatura
y que hemos modificado. ¿Qué ocurre al compilarlo con BlueJ?
1 import java.util.List;
2
3 public abstract class Animal
4 {
5 public void act (List<Animal> newAnimals, char animals) {}
6 public static void act (List<Animal> newAnimals, int animals) {};
7 abstract public static void act (List<Animal> newAnimals, String animals);
8 }
Pregunta 10: Según el texto de la bibliografía básica de la asignatura, respecto al apartado de pruebas, cuál
de las siguientes afirmaciones ES FALSA:
a. Una prueba positiva es la prueba de un caso que se espera que funcione correctamente.
b. La automatización de pruebas simplifica el proceso de pruebas de integración.
c. BlueJ incluye soporte para las pruebas de regresión.
d. JUnit tiene sistemas similares disponibles en otros lenguajes de programación.
Pregunta 11: Queremos compilar el siguiente código que se puede encontrar en el texto base de la asignatura
y que ha sido modificado convenientemente. Se produce un error de compilación. ¿Qué línea es la que
contiene un error, tal que si la modificamos convenientemente, el código compila y no provoca ningún error
de compilación en BlueJ?
1 import java.io.*;
2
3 public class Ejemplo
4 {
5 public static void main () throws IOException
6 {
7 String filename = new String ("EJEMPLO");
8 try {
9 throw IOException ();
10 }
11 catch (Exception e) {
12 System.out.println("Unable to save to "+ filename);
13 }
14 }
15 }
a. El error está en la línea 7
b. El error está en la línea 9
c. El error está en la línea 11
d. El código, tal y como se proporciona en el enunciado sin ningún cambio, compila y no produce error alguno.
Pregunta 12: Según el texto de la bibliografía básica de la asignatura, con respecto a la igualdad de referencias
podemos afirmar …
Pregunta 13: Según podemos deducir de lo indicado en el texto de la bibliografía básica de la asignatura,
¿qué debilitaría la encapsulación?
Pregunta 14: Según el texto de la bibliografía básica de la asignatura, ¿qué podemos afirmar sobre el
concepto de sustitución?
a. Pueden utilizarse objetos de un supertipo en cualquier lugar en el que se espera objetos de un subtipo.
b. Permite crear objetos de un clase que es abstracta.
c. Permite que una variable almacena objetos de diferentes tipos (en concreto, del tipo declarado o de
cualquier supertipo del tipo declarado).
d. Ninguna de las anteriores
RESERVA 1: Queremos compilar el siguiente código que se puede encontrar en el texto base de la asignatura,
convenientemente modificado. ¿Qué ocurre al compilarlo con BlueJ?
1 import java.util.List;
2 public abstract class Animal
3 {
4 private boolean alive;
5 private String field;
6 private String location;
7
8 public abstract Animal(String field, String location)
9 {
10 alive = true;
11 this.field = field;
12 this.location = location;
13 }
14
15 abstract public void act(List<Animal> newAnimals);
16 }
a. Compila, no proporcionando ningún error en tiempo de compilación.
b. No compila. Se soluciona sustituyendo la línea 15 por la siguiente: public void act(List<Animal>
newAnimals);
c. No compila. Se soluciona sustituyendo la línea 15 por la siguiente: public abstract void
act(List<Animal> newAnimals);
d. Ninguna de las anteriores.
RESERVA 2: Según el texto de la bibliografía básica de la asignatura, ¿qué se entiende por abstracción?
a. Proceso de dividir un todo en partes bien definidas que puedan construirse y examinarse por separado y
que interactúen de formas bien definidas.
b. Capacidad de ignorar los detalles de las distintas partes, para centrar la atención en un nivel superior de
un problema.
c. Capacidad de dividir un todo en partes bien definidas ignorando los detalles de las distintas partes.
d. Ninguna de las anteriores.
a) [1,0 puntos] Diseñar utilizando un paradigma orientado a objetos, los elementos necesarios
para la aplicación explicada de la práctica durante el curso. Es necesario identificar la estructura
y las relaciones de herencia (mediante el uso de un diagrama de clases) y de uso de las clases
necesarias para almacenar y gestionar esta información. Debe hacerse uso de los mecanismos
de herencia siempre que sea posible. Se valorará un buen diseño que favorezca la reutilización
de código y facilite su mantenimiento.
b) [2,0 puntos] Implementar un método (o métodos) que permita generar un listado de cada una
de las atracciones que han estado en funcionamiento en un día determinado, proporcionando
además un listado de los responsables de las mismas cada día, así como de los diferentes
ayudantes de atracción que trabajaban en ella, ordenados estos últimos alfabéticamente.
De este modo, la clase Parque debería contener esta estructura que se muestra:
...
Un año tiene 365 o 366 días (tomaremos el caso más general). De este modo, es
posible que si se le pasa a un método una fecha (por ejemplo, el 24 de Febrero)
devuelva qué posición en los 366 días ocupa (el número 55 desde el inicio del año.
Este método recibira el nombre de generaPosicionFecha (Fecha f), y devolverá un
valor int. Y del mismo modo existirá el contrario, indicaFechaPosición (int p),
que devolverá una Fecha. Se podrían tener definidas las siguientes estructuras:
que lo que hacen es poner a cero todas las estructuras anteriores (no se implementa
por su simplicidad, es solo un recorrido de las cuatro tablas inicializando a
cero).
Se requiere un método que recorra todas las entradas y actualice cada una de las
estructuras anteriores.
imprimeAfluenciaNinyos ();
imprimeAfluenciaSeniors ();
imprimeAfluenciaTotal ();
}