UOC Examen

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

Prueba de síntesis 2020/21-1

Asignatura Código Fecha Hora inicio


Diseño y programación orientada a objetos 75.564 10/1/2021 10:30

!!! Esta prueba sólo la pueden realizar los estudiantes que


han aprobado la Evaluación Continua

Ficha técnica de la prueba de síntesis

• Comprueba que el código y el nombre de la asignatura corresponden a la asignatura de la que te has


matriculado.
• Tiempo total: 1 hora Valor de cada pregunta: Parte 1: 30%; Partes 2 y 3: 35%.
• ¿Puede consultarse algún material durante la prueba de síntesis? NO ¿Qué materiales están
permitidos? Ninguno, ni siquiera el uso de un IDE como Eclipse.
• ¿Puede utilizarse calculadora? NO ¿De qué tipo? NINGUNO
• Si hay preguntas tipo test, ¿descuentan las respuestas erróneas? SÍ ¿Cuánto? Sólo descuenta en la
"Parte 1": cada respuesta correcta son 3 puntos, cada respuesta incorrecta resta 1.5 puntos. Una
pregunta no contestada ni suma ni resta.
• Indicaciones específicas para la realización de esta prueba de síntesis: Para las "Parte 2" y "Parte 3"
además de indicar tu respuesta, debes justificarla brevemente. Obtendrás 0 puntos en toda pregunta
no respondida, o cuya respuesta sea incorrecta, o cuya justificación sea incorrecta o no sea
proporcionada. Si respuesta y justificación son correctas, entonces se obtienen 8.75 puntos.

Página 1 de 8
Prueba de síntesis 2020/21-1
Asignatura Código Fecha Hora inicio
Diseño y programación orientada a objetos 75.564 10/1/2021 10:30

Enunciados

Parte 1 (30%) - Test con opciones y SIN justificación


Para cada pregunta escoge la respuesta correcta (SÓLO HAY UNA). No tienes que justificar tu respuesta.
Indica tus respuestas en la siguiente tabla:

Pregunta 1 2 3 4 5 6 7 8 9 10
Respuesta C C A A C C D A B D
1. ¿Cuáles son los elementos que definen a un objeto a través de una clase?
a. Abstracción, herencia y polimorfismo.
b. Atributos y asociaciones.
c. Atributos y métodos.
d. Ninguna de las respuestas anteriores.

2. Un atributo estático declarado en una clase es también llamado...


a. atributo global.
b. atributo local.
c. atributo de clase.
d. atributo de instancia.

3. La capacidad para definir varios métodos utilizando el mismo nombre, pero usando diferentes tipos y/o
número de parámetros se llama…
a. Sobrecarga.
b. Sobrescritura.
c. Polimorfismo.
d. Encapsulación.

4. Elemento de programación que, en su concepción original, representa un contrato al 100%:


a. Interfaz.
b. Clase concreta (i.e. normal).
c. Clase abstracta.
d. Test unitario.

5. ¿Cuál de las siguientes afirmaciones NO es cierta sobre los diagramas de clase UML?
a. El símbolo del modificador de acceso "default" (i.e. por defecto, sin modificador) es ~.
b. Las clases y métodos abstractos se representan en cursiva.
c. Lo habitual es escribir los atributos constantes en upper camel case, p.ej. MaxNumPlayers,
TimeElapsed, etc.
d. Los miembros estáticos se representan con un subrayado.

Página 2 de 8
Prueba de síntesis 2020/21-1
Asignatura Código Fecha Hora inicio
Diseño y programación orientada a objetos 75.564 10/1/2021 10:30

6. Al mecanismo por el cual la invocación de un método puede, en diferentes momentos, invocar


diferentes versiones del mismo basadas en el tipo dinámico de la variable que hace la invocación se le
llama…
a. encapsulación.
b. abstracción.
c. polimorfismo.
d. Ninguna de las anteriores.

7. En Java, ¿cuál de las siguientes afirmaciones sobre los constructores es cierta?


a. Un constructor no tiene tipo de retorno.
b. Una clase puede tener varios constructores.
c. Por defecto, todas las clases en Java heredan de la misma superclase.
d. Todas las anteriores.

8. En Java, para invocar a un método de la clase padre desde una subclase que sobrescribe dicho método
debemos usar la palabra clave (keyword):
a. super.
b. self.
c. this.
d. Ninguna de las anteriores.

9. Java no necesita un operador delete como sí utiliza C++ para liberar memoria porque…
a. el programador puede escribir sus propios destructores.
b. utiliza un gestor de memoria llamado garbage collector.
c. los objetos se ubican en el stack.
d. Todas las anteriores son ciertas.

10. En Java, ¿cuál de las siguientes afirmaciones es falsa?


a. El nombre de un constructor debe ser idéntico al nombre de la clase donde se encuentra
ubicado.
b. Dos variables se pueden referir al mismo objeto.
c. Una clase puede tener más de un constructor.
d. En un constructor, el nombre de los parámetros debe ser diferente a los nombres de los
atributos de la clase.

Página 3 de 8
Prueba de síntesis 2020/21-1
Asignatura Código Fecha Hora inicio
Diseño y programación orientada a objetos 75.564 10/1/2021 10:30

Parte 2 (35%) - Test verdadero/falso CON justificación


Indica en la siguiente tabla si cada afirmación que se enuncia a continuación es verdadera (V) o falsa (F).
Además, en los recuadros que verás, justifica brevemente tus respuestas.

Pregunta 1 2 3 4
Respuesta (V/F) F

1. En Java, una clase creada por nosotros no es subclase de una superclase a menos que la definamos con
la palabra reservada extends.

//Escribe aquí tu justificación (brevemente)

Falso. Las clases creadas por nosotros heredan de la superclase Object

2. La salida por pantalla del siguiente código Java es true.

//Escribe aquí tu justificación (brevemente)

F. En primer lugar el String s1 se define a nivel de la clase String siendo objeto ocupando su propio espacio
en el heap. En el segundo lugar se define el String s2 como un String literal compartiendo el heap con el
conjunto de strings creados en esta forma. Por tanto al comparar diferentes posiciones de memoria será
false el resultado para que fuese true debería haberse usado s1.equals(s2);

3. En Java, la siguiente instrucción crea un array con 10 objetos de tipo Animal:

Animal[] arr = new Animal[10];

//Escribe aquí tu justificación (brevemente)

F. Esta instrucción creara un array con 10 objetos apuntando a null.

Página 4 de 8
Prueba de síntesis 2020/21-1
Asignatura Código Fecha Hora inicio
Diseño y programación orientada a objetos 75.564 10/1/2021 10:30

4. En Java, tanto los métodos declarados como private como aquellos declarados como static no
pueden ser sobrescritos.

//Escribe aquí tu justificación (brevemente)

V. Verdadero. Un método private no puede ser sobrescrito porque ni tan siquiera es visible
desde la subclase. En el caso de los métodos static, éstos pertenecen a la clase, no al objeto
en sí, por lo que pueden invocarse sin necesidad de crear ninguna instancia/objeto. Por este
motivo, no tiene sentido que se pueda sobrescribir.

Parte 3 (35%) - Test con opciones y CON justificación


Para cada pregunta escoge la respuesta correcta (SÓLO HAY UNA). Además, en los recuadros que verás,
justifica brevemente tus respuestas. Indica tus respuestas en la siguiente tabla:

Pregunta 1 2 3 4
Respuesta B C B D

1. Dado el siguiente código:

¿Cuál es la salida por pantalla?


a. Wee!
Foo!
I’m still running.

b. Wee!
I’m still running.

c. Foo!

Página 5 de 8
Prueba de síntesis 2020/21-1
Asignatura Código Fecha Hora inicio
Diseño y programación orientada a objetos 75.564 10/1/2021 10:30

Wee!

d. Foo!
Wee!
I’m still running.

//Escribe aquí tu justificación (brevemente)

P1. B. El main invoca foo() y éste llama a bar() que lanza una excepción con el mensaje
"Wee!" que a su vez es propagado por foo(), así pues "Foo!" nunca se ejecuta el println
del método foo(). Ahora estamos en el main, concretamenter en el catch que coge la excepción
lanzada desde bar(), imprime el texto "Wee!" y posteriormente ejecuta el println que hay al
final del método main.

2. Dado el siguiente código en Java:

a. El atributo name puede ser accedido a través de un objeto Customer desde cualquier objeto
de otra clase, siempre y cuando esa clase esté en el mismo paquete que la clase Customer.
b. La clase Customer no puede ser heredada.
c. La clase Customer no puede ser instanciada.
d. Todas las subclases de Customer deben codificar el método buy.

//Escribe aquí tu justificación (brevemente)

C. La clase customer al ser abstracta no puede ser instanciada.

3. Dado el siguiente código en Java:

Página 6 de 8
Prueba de síntesis 2020/21-1
Asignatura Código Fecha Hora inicio
Diseño y programación orientada a objetos 75.564 10/1/2021 10:30

¿Qué tipo de relación/asociación de las vistas en la asignatura hay entre las clases A y B?
a. Una asociación de agregación.
b. Una asociación de composición.
c. Una asociación binaria bidireccional.
d. Una asociación binaria unidireccional.

//Escribe aquí tu justificación (brevemente)

P3. B. Asociación de composición. El motivo es que el objeto de la A dentro de la clase B se crea


en la propia clase B, no es pasado como argumento usando el constructor o un setter. Así pues, la
vida del objeto de tipo A depende del objeto tipo B que lo contiene. Esto hace que la relación sea
una asociación de composición unidireccional.

4. Dado el siguiente diagrama de clases del package animals:

Y sabiendo que:
• El constructor de la clase Animal asigna el valor "Eddie" al atributo name.

Página 7 de 8
Prueba de síntesis 2020/21-1
Asignatura Código Fecha Hora inicio
Diseño y programación orientada a objetos 75.564 10/1/2021 10:30

• Los métodos greeting de Dog y Cat imprimen por pantalla "Woof!!" y "Meow!!",
respectivamente.
• En el caso del método greeting con argumento de la clase Dog, imprime por pantalla
"Woof!!" más el valor del atributo name del animal pasado como argumento, p.ej. "Woof
Bob!!"
Para el siguiente trozo de código:
Núm. Línea Código
1 Animal animalDog = new Dog();
2 animalDog.greeting();
3 Dog dog1 = (Dog) animalDog;
4 dog1.greeting();
5 dog1.greeting(animalDog);
6 animalDog.greeting(dog1);
Indica cuál es la afirmación correcta:
a. Línea 2 imprime "Woof!!", línea 4 imprime "Woof!!", línea 5 imprime "Woof Eddie!!"
y línea 6 imprime "Woof Eddie!!".
b. El programa da un error en tiempo de compilación porque desde el segundo método
greeting de la clase Dog no se puede acceder al atributo name del objeto pasado como
parámetro.
c. Línea 2 imprime "Woof!!", línea 4 imprime "Woof!!", línea 5 imprime "Woof null!!"
y línea 6 imprime "Woof null!!".
d. El programa da un error en tiempo de compilación en la línea 6 porque desde animalDog no
se puede invocar al método greeting(Animal animal).

//Escribe aquí tu justificación (brevemente)

P4. D. El tipo estático de animalDog es Animal y, por lo tanto, para invocar a los métodos de
un objeto de tipo Dog (su tipo dinámico) primero deben estar definidos en la superclase. Es una
de las reglas del polimorfismo. Como D es cierta, entonces A y C son falsas.
La respuesta B es falsa porque name es protected en Animal y es visible desde la subclase
Dog.

Página 8 de 8

También podría gustarte