Examenes Programacion Orientada A Objetos
Examenes Programacion Orientada A Objetos
Examenes Programacion Orientada A Objetos
71901072 -PROGRAMACIÓN ORIENTADA A OBJETOS GRADO EN INGENIERIA INFORMÁTICA/ lEC NOLOGIAS DE LA INFORMACIÓN)
JUNIO 2011 -MODELO A- LLI!I.•�;..w.&:�,alUI.lll!O.!II.':Ls:�L!i:llü.!.;.J.
� L
Pregunta 2: Dado este fragmento de código, ¿cuál sería el resultado de compilar/ejecutar el código?
Número de Línea Código
4 public static void main(String[] arg s) {
5 int valor = 5;
6 cambiarValor (valor);
7 System.out.println(valor);
8
9 public static void cambiarValor(int valor) {
10 private int valor = valor * 2;
11
a. 5
b. 10
c. Error en la línea 10
d. Error en la línea 6
Pregunta 6: Cuando varios componentes de un software colaboran para completar una misma tarea se dice que entre
ellos hay ...
a. una clase clara y bi en definida.
b. una instancia clara y bien definida.
c. una interfaz clara y bien definida.
d. un proceso claro y bien definido.
23 v.imprimirSonido() ;
24 b.imprimirSonido() ;
25
26
a. Fallo de compilación.
b. Lanza una excepción en tiempo de ejecución.
c. Imprime "VehiculoCoche".
d. Imprime "BicicletaBicicleta".
Pregunta 8: ¿Qué pasará si se compila 1 ejecuta este código?
Número de Línea Código
4 class Padre {}
S class Hijo extends Padre { }
6 class Hijo2 extends Padre { }
7 public class CEx{
8 public static void main(String[] args) {
9 Padre p=new Padre();
10 Hijo h=(Hijo) p;
11
12
a. El código compilará y se ejecutará sin errores.
b. El código daría un error a compilar.
c. El código daría un error a ejecutar.
d. El código no daría ningún error; sin embargo, h no tendría el tipo deseado.
Pregunta 10: ¿Cuál de las siguientes definiciones es correcta para una clase abstracta?
a.abstract Animal { abstract void ladrar(); }
b.class abstract Animal { abstract void ladrar();}
c.abstract class Animal { abstract void ladrar(); }
d.abstract class Animal { abstract void ladrar() { System.out.println("RRRRRRR") ; } }
Pregunta 11: ¿Cómo podemos detectar que el usuario ha hecho click en un botón en una interfaz Swing?
a. Implementando public void eventPerformed(ActionEvent e) de la interfaz ActionListener
b. Implementando public void actionPerformed (ActionEvent e) de la interfaz ActionListener
c. Implementando public boolean actionPerformed (ActionEvent e) de la interfaz ActionListener
d. Implementando public void actionPerformed (Event e) de la interfaz ActionListener
Pregunta 12: Las sentencias de código que podrían lanzar una excepción se protegen de la siguiente manera:
try {
11 aquí se protege una o más sentencias
Pregunta 14: ¿Cómo se puede crear una nueva instancia de la clase Vector y añadir un elemento? (índica la respuesta
falsa)
a.Vector<Integer> v new Vector<Integer>(); v.add(99);
b.Vector<Integer> v new Vector<Integer>(99); v.add(99);
c.Vector<Integer> v = new Vector<Integer>(99, 99); v.add(99);
d.Vector<Integer> v = new Vector<Integer>(99); v.add(99, 99);
Pregunta 15: Sobre una variable local que se declara dentro del bloque "try" , se puede decir que ...
a. es visible dentro de los bloques "catch" y "finally".
b. es visible dentro del bloque "catch" pero no del bloque "finally".
c. es visible dentro del bloque "finally" pero no del bloque "catch".
d. no es visible dentro de los bloques "catch" y "f in ally".
Se pide:
1) [1,5 puntos] Identificar la estructura y las relaciones de herencia y de uso de las clases necesarias para
almacenar y gestionar esta información.
2) [1,5 puntos] Dibujar un esquema de la organización de estas clases en el diseño global.
3) [2,0 puntos] Implementar la especificación de las clases.
4) [1,5 puntos] Se quiere declarar un array de objetos para almacenar todos los vehículos,
independientemente del tipo.
a) ¿Cómo declararías el array?
b) ¿Qué métodos se necesitan para acceder a un vehículo concreto?
e) ¿Cómo se almacenan las diferencias entre los distintos tipos de vehículos?
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA- ESCUELA TÉCNICA SUPERIOR DE INGENIERIA INFORMÁTICA
71901072 -PROGRAMACIÓN ORIENTADA A OBJETOS GRADO EN INGENIERIA INFORMÁTICA/ lEC NOLOGIAS DE LA INFORMACIÓN)
JUNIO 2011 -MODELO B- LLI!I.•�;..w.&:�,alUI.lll!O.!II.':Ls:�L!i:llü.!.;.J.
� L
Pregunta 1: Dada la declaración de las siguientes variables, indicar cuáles de ellas son correctas.
1. float foo = -1;
2. float foo1 l. O;
3. float foo2 42e1;
4. float foo3 2.02f;
5. float foo4 3_03d;
6. float foo5 Ox0123;
a. 1 y 2
b.l y3
c. 4 y 6
d. 3 y4
Pregunta 2: Dado el siguiente fragmento de código, indica cuál de las siguientes afirmaciones es correcta en relación al
valor de la variable foo.
Número de Línea Código
4 int index 1; =
Pregunta 3: Dadas las siguientes expresiones, indica cuál de las opciones es la correcta.
l. (1 > 1) && (1 > 1) == (1 > 1) == false
2. (1 == 1) 1 (10 > 1) == true 1 true == true
a. La expresión 1 es evaluada como falsa y la expresión 2 como falsa.
b. La expresión 1 es evaluada como falsa y la expresión 2 como verdadera.
c. La expresión 1 es evaluada como verdadera y la expresión 2 como falsa.
d. La expresión 1 es evaluada como verdadera y la expresión 2 como verdadera.
22 System.out.print(hotel.reservas);
23
24
a. Error de compilación.
b. Lanza una excepción en tiempo de ejecución.
c. o.
d. 2.
Pregunta 6: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
correcta:
a. La depuración es la actividad cuyo objetivo es determinar si una pieza de código produce el comportamiento
pretendido.
b. La prueba viene a continuación de la depuración.
c. La depuración es una actividad dedicada a determinar si un segmento de código contiene errores.
d. La depuración es el intento de apuntar con precisión y corregir un error en el código.
Pregunta 7: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
correcta:
a. Un encapsulamiento apropiado en las clases reduce el acoplamiento.
b. El término acoplamiento describe cuánto se ajusta una unidad de código a una tarea lógica o a una entidad.
c. El acoplamiento describe la conectividad de los propios objetos de una clase.
d. Un sistema débilmente acoplado se caracteriza por la imposibilidad de modificar una de sus clases sin tener que
realizar cambios en ninguna otra.
Pregunta 8: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es FALSA
en relación a los métodos polimórficos:
a. Una variable polimórfica es aquella que puede almacenar objetos de diversos tipos.
b. Las llamadas a métodos en Java no son polimórficas.
c. El mismo método puede invocar en diferentes momentos diferentes métodos dependiendo del tipo dinámico de la
variable usada para hacer la invocación.
d. Cada objeto en Java tiene un método toString que puede usarse para devolver un String de su representación.
Pregunta 9: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes opciones declarará un
método en una clase que fuerza a una subclase a implementarlo:
a.static void methoda (double dl) { }
b.public native double methoda();
c.abstract public void methoda();
d.protected void methoda (double dl) { }
Pregunta 10: Dado el siguiente fragmento de código que pretende mostrar un ejemplo de sobrescritura, indique cuál de
las siguientes opciones completaría el código para dar lugar a un ejemplo correcto de sobrescritura:
Número de Línea Código
4 class BaseClass {
S prívate float x = l.Of
6 protected float getVar () { return x; }
7
8 class Subclass extends BaseClass
9 prívate float x = 2.0f;
10 //Insertar código aquí
11
a.float getVar { return x; }
b. public f loat getVar ( ) { return X; }
c. float double getVar ( ) { return x; }
d.public float getVar (float f ) return f; }
Pregunta 11: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
correcta en relación a la programación por parejas:
a. Consiste en programar una clase por duplicado con el objetivo de depurar los errores más fácilmente.
b. Es una manera de producir código, opuesta a la programación extrema en la que un solo programador desarrolla las
clases asignadas.
c. Era una técnica de programación tradicional que las empresas eliminaron para reducir costes.
d. Es uno de los elementos de una técnica que se conoce como programación extrema.
Pero este último programa tiene el problema de que cuando se cierra la ventana, a pesar de que dejamos de verla, el
programa no finaliza su ejecución. De esta forma, para que el programa funcione correctamente, hemos de interceptar
el evento que se produce cuando cerramos la ventana y hacer que el programa termine su ejecución en ese momento.
Indique qué clase hemos de definir en este caso y asociárselo al JFrame del ejemplo:
a.ActionListener
b.ComponentListener
c. WindowListener
d. ItemListener
Pregunta 13: En el siguiente fragmento de código hemos definido la ejecución de cinco bloques. Estos bloques se
ejecutarán dependiendo de las excepciones que se produzcan en cada caso. Indique cuál de las siguientes afi rmac iones
es correcta:
Número de Línea Código
4 11 Bloquel
5 try{
6 11 Bloque2
7 }eateh (ArithmetieExeeption e)
8 11 Bloque3
9 }finally{
10 11 Bloque4
11 }
12 11 BloqueS
a. El Bloque4 no se ejecutará si se produce una excepción de tipo aritmético en el Bloque2
b. El Bloque4 no se ejecutará si se produce un acceso a un objeto nulo (null) en el Bloque2
c. El Bloque4 se ejecutará antes que el Bloque3 si se produce una excepción de tipo aritmético en el Bloque2
d. El Bloque4 se ejecutará antes de que la excepción producida por un acceso a un objeto nulo (null) en el Bloque2 se
propague hacia arriba
Pregunta 14: Indique el resultado de ejecutar el siguiente código que se muestra a continuación:
Número de Línea Código
4 publie elass test {
5 publie statie void add3 (Integer i)
6 int val = i.intValue();
7 val += 3;
8 i
= new Integer (val);
9
10 pu bli e statie void main (String args[] )
11 Integer i = new Int eg er (0);
12 add3 (i);
13 System.out.println (i.intValue ( ) );
14
15
a. El programa indicará un fallo en tiempo de compilación.
b. El programa imprime por pantalla el valor "0".
c. El programa imprime por pantalla el valor "3".
d. El programa lanzará una excepción en la línea 6 (int val i.intValue (); ) .
a) [1,5 puntos] Diseñe las clases necesarias que permita desarrollar el juego del Cinquillo Online utilizando
un paradigma orientado a objetos. Debe hacerse uso de los mecanismos de la programación orientada a
objetos siempre que sea posible y un diseño que permita la reutilización del código y facilite su
mantenimiento.
b) [1,5 puntos] Implemente un método que defina el funcionamiento del ordenador, teniendo en cuenta que
todos sus procesos tienen que hacerse automáticamente sin la intervención del usuario.
e) [1,5 puntos] Proporcione un método que muestre la lógica del juego, definiendo la información necesaria
para establecer el uso de clases, interacciones entre elementos, declaración y uso de variables y métodos
necesarios, etc.
d) [2,0 puntos] Indiqué qué modificaciones son necesarias introducir en la aplicación para permitir la
participación de varios jugadores humanos (hasta 4). Para ello el juego en lugar de constar de partidas
individuales e11 las cuales gana el jugador que antes se descarta, para a ser una partida formada por un
conjunto de rondas. El ordenador deberá llevar un registro de los puntos que cada jugador ha conseguido
en cada ronda. El jugador que consigue descartarse primero logrará 3 puntos, el jugador o jugadores que
se quede con un mayor número de cartas al finalizar la ronda obtendrá O puntos. El resto obtendrá 1
punto. La partida finaliza cuando un jugador consiga llegar al menos a los 10 puntos, ganando el que más
puntos tenga en caso de superar esta puntuación varios jugadores. En caso de empate se jugará una ronda
extra para decidir el ganador.
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA- ESCUELA TÉCNICA SUPERIOR DE INGENIERIA INFORMÁTICA
71901072 -PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERIA INFORMÁTICA/ lEC NOLOGIAS DE LA INFORMACIÓN)
SEPTIEMBRE 2011- MODELO A - No ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONA
Pregunta 2 ¿Qué pasaría a continuación si se crea un objeto sin parámetros con la sentencia A obj A new A ();
siendo la clase A la siguiente?
public class A
{
intnA;
public A(intnA) { this.nA= nA;}
Pregunta 3 ¿Qué es necesario si queremos utilizar el método de una clase predefinida como por ejemplo
lnteger.parselnt("String");?
a) Solamente se crea una instancia de la clase predefinida.
En este caso: lnteger integ new lnteger(); integ.parselnW'String");
=
Pregunta 4 Un método de clase static, ¿se pod ría llamar sin instanciarse un objeto de la clase?
a) No, siempre hay que declarar el objeto y luego llamar al método
b) No, siempre hay que declarar el objeto, crearlo y a continuación llamar al método
e) Sí, se podría llamar al método desde la misma clase
d) Si, se podría llamar al método pero sólo si la clase es abstracta
Pregunta S Suponie·ndo que, en una estructura de herencia, cada subclase de la clase abstracta "figura" tiene su propio
método "calcula_area", y dado un objeto "f" declarado como "figura", ¿cómo tendrían que estar declarados los
métodos para poder ejecutar "f.calcula_area(}"?
a) "calcula area" sólo en las subclases
b) "calcula_area" en "figura" y en sus subclases
e) "calcula_area" en figura y no en sus subclases
d) No puede ser ejecutado de ninguna manera
Pregunta 6 Sea "el" una clase con 6 atributos, y sea "c2" otra clase con 3 atributos, 3 de los atributos de "el" son los de
la clase "c2". Tienen los mismos métodos aunque algunos se comportan de manera diferente. ¿Qué relación de
herencia es la correcta y por qué?
a) No se puede establecer herencia dado que los mismos métodos se comportan de manera diferente
b) No se puede establecer herencia dado que los atributos no son exactamente los mismos
e) "c2" es hija de "el" dado que todos sus atributos están incluidos en "c2"
d) "el" es hija de "c2" dado que incluye sus atributos y añade nuevos
Pregunta 7 ¿Cuál de las siguientes declaraciones nunca podría generar dos objetos de la misma clase con los mismo
valores?
a) Triangulo objCirl=new Triangulo(5, 8);
Triangulo objCir2=new Triangulo(objCirl);
b) Triangulo objCirl=new Triangulo(5, 8);
Triangulo objCir2=objCirl;
e) Triangulo objCirl=new Triangulo(5, 8);
Triangulo objCir2=new Triangulo(5, 8);
d) Triangulo objCirl=new Triangulo(S);
Triangulo objCir2=new Triangulo(S);
Pregunta 9 ¿Qué tipo de acceso se puede emplear para sobrecargar los métodos que implementan una interfaz?
a) Pueden ser métodos con acceso public y prívate, pero no protected
b) Sólo pueden ser con acceso public
e) Sólo pueden ser con acceso prívate
d) Pueden emplear cualquier tipo de acceso de Java
Pregunta 10 ¿Qué s.e entiende por cohesión en lo que a una unidad de código se refiere?
a) Que la unidad de código es responsable de una y sólo una tarea
b) Que la unidad de código no se descompone en otras unidades de programación (métodos)
e) Que todos los métodos que forman parte de la unidad de código se encuentran en la misma clase
d) Todas las anteriores son correctas
Pregunta 12 Respecto a la declaración de las clases internas y su relación con su clase envolvente...
a) La clase interna puede acceder tanto a los métodos privados como a los públicos y protegidos de la clase
envolvente
b) La clase interna puede acceder tanto a los métodos públicos como a los métodos protegidos de la clase
envolvente, pero no a los métodos privados de la misma
e) La clase interna puede acceder a los métodos públicos de la clase envolvente, pero no a los métodos
privados ni a los protegidos de la misma
d) La clase interna no puede acceder ni a los métodos públicos ni a los privados ni a los protegidos de la clase
envolvente
Pregunta 13 En lo que se refiere a las clases internas anónimas, se puede afirmar...
a) Suelen emplearse en los lugares en los que se requiere la implementación de una sola instancia
b) Siempre se hará referencia la instancia mediante su supertipo
e) Permiten definir una clase y crear una instancia de ella, todo en un solo paso
d) Todas las anteriores son correctas
Pregunta 14 ¿Cuál de las siguientes afirmaciones es cierta para los interfaces en Java?
a) Todos los métodos de la interfaz son abstractos, pero se permiten métodos con cuerpos. No es necesaria la
palabra clave abstract
b) Todos los métodos de la interfaz son abstractos, luego no se permiten métodos on cuerpos. Es necesaria la
palabra clave abstract
e) Todos los métodos de la interfaz son abstractos, luego no se permiten métodos con cuerpos. No es
necesaria la palabra clave abstract
d) Ninguna de las afirmaciones anteriores es cierta
Pregunta 15 ¿Qu é instrucción permite cargar en la variable "a" el tamaño del array?
a) int a; int [ ] b new int[lO]; a=b.size;
b) int a; int [ ] b new int[lO]; a=b.size () ;
Un banco desea enviar a sus clientes una carta, mensaje de correo electrónico o mensaje al móvil (según los
datos y preferencias de cada cliente) de agradecimiento por cada uno de los productos financieros que ha
contratado el cliente. Cada cliente puede haber contratado varios productos (tarjetas de crédito, débito, plan
de pensiones, seguro, fondos de inversión, etc.) y cada tipo de producto requiere una carta/mensaje
diferente. Se quiere usar una jerarquía de clases para representar los diferentes tipos de producto y otra para
los diferentes tipos de mensajes. Para el programa hay que usar un Arraylist del tipo más adecuado más un
iterador para gestionar el envío de mensajes conjuntamente.
a) [2 puntos] Identificar la estructura y las relaciones de herencia y de uso de las clases necesarias para la
aplicación que realice el trabajo descrito.
b) [2 puntos] Dib,ujar un esquema de la organización de estas clases en el diseño global.
e) [2 puntos] Implementar el método "main" del programa mostrando cómo se gestiona el envío de los
mensajes.
d) [0,5 puntos] ¿Qué cambios serían necesarios en el diseño y programa para mandar otro tipo de mensaje,
algo de publicidad sobre nuevos productos, conjuntamente con el mensaje de agradecimiento?
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA- ESCUELA TÉCNICA SUPERIOR DE INGENIERIA INFORMÁTICA
71901072 -PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERIA INFORMÁTICA/ lEC NOLOGIAS DE LA INFORMACIÓN)
SEPTIEMBRE 2011 -MODELO B- No ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONA
l. public class TV {
2. prívate String marca;
3. prívate String modelo;
4.
5. public TV(String marca, String modelo) {
6. this.marca = marca;
7. this.modelo = modelo;
8.
9.
10. publicboolean equals(TV other) {
11. returnmarca.equals(other.marca) &&
12. modelo.equals(other.modelo);
13. }
14.
15.
a) iguales
b) no son iguales
e) Err or de compilación en la línea 11
d) Excepción en tiempo de ejecución en la línea 15
28. Integer i = 5;
29. switch (i) {
30. case 1: System.out.print (l); break;
31. case 3: System.out.print(3);
32. case 5 : System.out.print (5);
33. case 7: System.out.print(7); break;
34. default : System.out.print("default");
35. }
a) 5
b) 57
e) 57default
d) Error de compilación en la línea 29
Pregunta 3: Dado el siguiente código:
30. Set < Object >objetos = new HashSet< Object > ();
31. Str ing one = "hola";
32. int two = 2;
33. Boolean three new Boolean(true);
=
34. objetos.add(one);
35. objetos.add(two);
36. objetos.add(three);
37. objetos.add(three);
38. for(Object objeto : objetos)
39. System.out.print (objeto);}
l. //Legible.java
2. public interface Legible
3. public void leer() ;
4. pu bli c i n t Mll.X LENGTH 10;
5.
l. //MiLector.java
2. public class MiLector implements Legible {
3. public void leer() {
4. Legible.MAX_LENGTH = 25;
5. System.out.println(Legible.MAX_LENGTH);
6.
7.
a) 25
b) 10
e) Error de compilación en la línea 4 deLegible.java
d) Error de compilación en la línea 4 deMiLector.java
5. int x = 5 * 4 % 3;
6. System.out.println(x);
3. int x = 0;
4. String = null;
s
5. if(x == s) {
6. System.out.println("Exito");
7. else {
8. System.out.println("Fracaso");
9.
a) Éxito
b) Fracaso
e) Error de compilación en la línea 4.
d) Error de compilación en la línea S.
l. publicclassForma {
2. private String color;
3.
4. publicForma(String color)
5. System.out.print("Forma");
6. this. color = color;
7.
8.
9. public static void main(String [] args)
10. newRectangulo();
11. }
12.}
13.
14. classRectangulo extends Forma {
15. publicRectangulo() {
16. System.out.print("Rectangulo");
17.
1 8.
a) FormaRectangulo
b) RectanguloForma
e) Rectangulo
d) Error de compilación en la línea 15
l. importjava.awt.*;
2. importjava.awt.event.*;
3.
4. public class MyWindow
5. private Frame frame new Frame();
6.
7. public void registerEvents() {
8. WindowAdapterwa = new WindowAdapter()
9. public void windowClosing(WindowEvent e) {
10. frame.setVisible(false);
11. frame.dispose();
12.
13. };
1 4. frame.addWindowListener(wa);
15.
16.}
¿cuál de las siguientes afirmaciones es cierta?
3. int x = 10, y = 3;
4. if(x % y == 2)
5. System.out.print("dos");
6. System.out.print(x%y);
7. if(x9¿y == 1)
8. System.out.print("uno");
a) dosl
b) dos2
e) uno
d) luna
a) enhorabuena
b) enhorabuenaaprobado
e) Error de compilacion en la línea 4
d) Error de compilacion en la línea 7
Pregunta 11: ¿cual es la salida del siguiente código?
5. int i = O;
6.
7. String lowercase input.toLowerCase();
=
a) O
b) 9
e) 19
d) 20
l.publicclassComparadorRaro {
2. privatelnteger x;
3.
4. publicbooleancompare(int y) {
S. return x ==y;
6.}
7.
8. public static void main(String [] args) {
9. ComparadorRaro u = new ComparadorRaro();
10. if(u.compare(21)) {
11. System.out.println("true");
12. } else {
13. System.out. println("false");
14.
1S.}
16.}
a) true
b) false
e) Error de compilación en la línea S.
d) La línea S lanza una excepción NuiiPointerException
Pregunta 13: Termina la frase. Si todos los campos no finales de una clase se declaran como privados y, además, la clase
contiene métodos públicos para modificar o consultar dichos campos, esto es un ejemplo de:
a) Encapsulamiento alto
b) Acoplamiento bajo
e) Cohesión alta
d) Una relación "es un"
publicintconsultarCanal() {
returncanal;
publicvoidencender() {
estaEncendida "'true;
publicvoidapagar() {
estaEncendida = false;
publicvoidsubirVolumen() {
volumen+= 1;
Map < String, Double > map new HashMap< String, Double > ();
La Universiidad Sin Distancias (USD) quiere diseñar un sistema de gestión de matrículas de alumnos, del
que también forman parte los profesores. Las universidades a nivel nacional se identifican por el nombre, la
dirección y el teléfono de información. Desde el punto de vista de la matrícula, la USD se considera como un
conjunto de estudiantes, a cada uno de los cuales se le debe asignar un número de identificación personal. Los
estudiantes asisten a cierto número de cursos, cada uno de los cuales es impartido por un profesor. En cuanto
a los profesores, la USD se divide en departamentos, cada uno de los cuales está formado por varios
profesores, uno de los cuales actúa como director del departamento. Cada profesor sólo puede pertenecer a
un departamento. A su vez, los departamentos tienen la responsabilidad de impartir uno o más cursos. El
sistema debe permitir añadir o borrar estudiantes, departamentos y profesores, así como realizar consultas
sobre cada uno de estos estamentos.
a. [2 puntos] Identifique las clases necesarias para resolver el problema. Indique, para cada una de ellas, sus
miembros de clase y su ámbito, así como las relaciones existentes entre estas. Ilustre esto último con un
diagrama de clases.
b. [1,5 puntos] Suponiendo que existen y están definidos los métodos "get" y "set" para aquellos miembros
de clase que haya definido como privados, escriba los métodos: "nuevaMatrícula" que permita realizar la
gestíón de una nueva matrícula tal y como se ha descríto en la específícacíón y el método "nuevoProfesor"
que permita añadir un nuevo profesor en el organigrama de la Universidad. Indique además en qué
clase/es incluiría estos métodos.
a) [1,5 puntos] Suponiendo que existen y están definidos los métodos "get" y "set" para aquellos miembros
de clase que haya definido como privados, escriba un método "nuevoDepartamento" que permita añadir
un nuevo departamento con su correspondiente nuevo conjunto de cursos y profesores. Indique además
en qué clase o clases se deberían íncluir estos métodos.
c. [1,5 puntos] En el caso de que la Universidad decidiera realizar una división interna en la que los
departamentos pertenecieran a una determinada escuela o facultad, ¿qué modificaciones se tendrían que
realizar en el díseño de las clases y en el método "nuevoProfesor"?
UN IVERSIDAD NACIONAL D E EDUCACIÓN A DISTANCIA - ESCUELA TÉCNICA SUPERIOR D E INGEN IERIA
IN FORMÁTICA
71 901 072 - PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERIA INFORMÁTICA / TECNOLOGIAS DE
LA INFORMACIÓN)
JUNIO 2012 - MODELO A -
Pregunta 1: Según el texto de la bibliografía básica de la asignatura, indique cuál d e las siguientes afirmaciones es
correcta:
a. Los métodos pueden devolver información de algún objeto mediante un valor de retorno.
b. Los métodos siempre tienen parámetros con los que obtener la información necesaria.
c. A partir de una clase tan solo se puede crear un solo objeto.
d. El estado de los objetos se representa mediante los parámetros de su constructor.
Pregunta 2: Dado el siguiente fragmento de código, indique cuál de las siguientes afirmaciones es el resultado de su
ejecución:
if{" S t ri ng " . t r i m ( ) == " S t r i ng " )
S y s t em . o u t . p r i n t l n ( '' I gu a l '' ) ;
el se
S y s t em . o u t . p r i n t l n ( ''No I g u a l '' ) ;
Pregunta 3: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
correcta:
a. Los campos se conocen como variables de objeto.
b. El alcance de una variable define la sección de código desde donde la variable puede ser declarada.
c. Los constructores permiten que cada objeto sea preparado adecuadamente cuando es creado.
d. El tiempo d e vida de una variable describe el número de veces que es utilizada en u n método.
Pregunta 4: Según el texto de la bibliografía básica de la asignatura, indique cuales de las siguientes expresiones
resultan verdaderas:
l . ( 4 < 5 1
2. 2 > 2 1 1 1 ( ( 4 --
4 1 && ( 1 < o 1 1
3. 2 > 2 1 1 1 ( 4 --
4 1 && ( 1 < o 1
4. 2 > 2 1 1 1 1
( ( 4 --
4 1 && ( 1 < o 1 1
5 . 34 != 33 1 && ! false
a. Las expresiones 3 y 4.
b. Las expresiones 2 y 4 .
c. Las expresiones 3 y 5.
d. Las expresiones 4 y 5.
L_
Pregunta 5: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
correcta:
a. E l lenguaje Java tiene tres variantes del ciclo for : for-each, for y far-do.
b. Un ciclo while es similar en su estructura y propósito q u e el ciclo for-each.
c. El tipo de la variable de ciclo no tiene porqué ser el mismo que el tipo del elemento declarado para la colección
que estamos recorriendo con u n ciclo.
d. Un índice es u n objeto que proporciona funcionalidad para recorrer todos los elementos de una colección.
Pregunta 6 : la siguiente figura muestra u n a captura de pantalla del editor BlueJ con una línea de código recuadrada.
Indica cual de las siguientes afirmaciones es correcta en relación a la línea recuadrada:
IJ ClienteDeCorreo
Class Edit Tools Optfons
/?;7;
1r Impr1me el si•;p.liente :m.ensaje ( s i e s que hay alglm.O) para este
* usuar1o en l a terminal de texto.
'!
pt1blic void imprim.irMens aJeS iguiente ( )
else {
un.Hensaj e . imprimir: ( ) :!
Pregunta 7: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
correcta:
a. U n objeto e s inmutable s i su contenido o s u estado n o puede ser cambia � o una vez q u e se ha creado.
b. Un objeto de tipo String puede ser modificado una vez que está creado, por tanto no es un ejemplo de objeto
inmutable.
c. la clase String tiene un método de nombre tri m que permite modificar caracteres en cualquier posición de una
cadena.
d. Como regla general, las cadenas de texto de tipo String se suelen comparar mediante el operador "==".
Pregunta 8: Dado el siguiente fragmento de código, indique cuál de las siguientes afirmaciones es el resultado de su
ejecución:
class Test
pub l i c s t a t i c v o i d ma i n { S t r i ng a r g s [ ] )
{
int n , e = 1, serie = 5 ;
S y s t em . o u t . p r i n t ( " Cantidad de t e rmi n a s : ") ;
n = 7;
w h i l e ( e <= n )
1
S y s tem . o u t . p r i n t ( " , " + serie ) ;
s e r i e += 5 ;
e++;
Pregunta 9: Según el texto d e la bibliografía básica de la asignatura, indique cuál d e las siguientes afirmaciones es
correcta:
a. Las colecciones de objetos son objetos que pueden almacenar un número predeterminado e invariable de otros
objetos.
b. Un itera dar es un objeto q u e proporciona funcionalidad para recorrer todos los elementos de una colección.
c. Un ciclo consiste en la escritura repetida de un bloque de sentencias.
d. U n arreglo (array) es u n tipo especial d e colección que puede almacenar u n n ú m e ro variable d e elementos.
Pregunta 10: Según el texto de la bibliografía básica d e la asignatura, indique cuál de las siguientes afirmaciones es
correcta en relación a la clase Vector d e Java:
a. Es Final
b. Implementa java.utii. List
c. Es serializable
d. Dispone de u n solo constructor
Pregunta 11: Dado el siguiente fragmento de código, indique cuál de las siguientes afirmaciones es el resultado de su
ejecución:
public c l a s s Test
1
p r í vate int i = get J I ) ;
private i n t j 10;
private i n t getJ ( )
1
return j ;
p ub l i c s t a t i c v o i d ma i n ( S t r i n g a r g s ( ] )
1
S y s t em . o u t . p r i n t l n ( ( n e w T e s t ( ) ) . i ) ;
Pregunta 13: Dado el siguiente fragmento de código, indique cuál de las siguientes afirmaciones es el resultado de su
ejecución:
pub l i c class Test
{
pub l i c static v o i d ma i n ( S t r i n g args [ ] )
{
char e ""' - 1 ;
S y s t em . o u t . p r i n t l n ( c ) ;
a. La expresión '\ c h a r e = - 1 ; " provocará un error de compilación debido a que el rango de la clase " c h a r "
n6-1¡ .
es 0 - 2
b. N o habrá error de compilación, la salida será - l .
c. No habrá error de compilación, la salida no será ningún carácter ascii.
d. No habrá error de compilación, la salida será un carácter U n icode.
Pregunta 14: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
correcta :
a. U n a superclase e s una clase q u e e s i m plementada por otra.
b. Una subclase es una clase que implementa a otra clase.
c. Las clases que están vinculadas mediante una relación de herencia forman una jerarquía de herencia.
d. La herencia nos permite heredar pero no reutilizar en un nuevo contexto clases que fueron escritas
previamente.
Pregunta 15: Dado el siguiente fragmento de código, indique cuál de las siguientes afirmaciones es el resultado de su
ejecución:
import j av a . a w t . * ;
{
s e t L a yout ( ne w G r i dL a y o u t ( ) ) ;
for ( i nt i = 1 ; i <= 4 ; ++ i )
{
add ( n e w B u t t o n ( I n t e g e r . t o S t r i n g ( i ) ) ) ;
pack ( ) ;
s e t V i s ible ( t r u e ) ;
1
{
T e s t F rame tf = new T e s t F rame ( ) ;
a. El código compila, su ejecución provoca q u e todos los botones aparezcan en una sola columna.
b. El código compila, su ejecución provoca que todos los botones aparezcan en una sola fila.
c. El código compila, su ejecución provoca que todos los botones se monten uno encima del otro y tan solo sea
visible el último.
d. E l código compila, pero s e produce u n error e n tiempo d e ejecución cuando s e añaden los componentes.
Liw>:r
.. dt'{>.:tl-ihl',' i"'>f
.. 14• n.�vto
.. gna.rdlim
...
H4v�
�:uardt.Ul
1
.......J 1
l. Naves alienígenas o UFOs, q u e se m u even de izda. a dcha. y van bajando hacia abajo poco a poco.
Esporádicamente lanzan misiles.
2. La nave guardián es controlada por el jugador.
3. El láser disparado por la nave guardián (trayectoria ascendente). Cuando el láser d e la nave alcanza una nave
enemiga, ésta desaparece del juego.
4. Los misiles disparados por los UFOs (trayectoria descendente). Cuando u n misil alcanza a la nave, finaliza el
juego.
a) [2 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 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á u n buen diseño que favorezca la reutilización de código y
facilite su mantenimiento.
b) [1,5 puntos) Implementa la clase Nave G u a r d i a n . Especifica sus atributos y métodos y justifica las decisiones
de implementación que creas importantes .
• e) [1,5 puntos) Implementa la siguiente regla del juego: "Varias filas de naves alienígenas o UFOs avanzan hacia la
base d�fensora, con movimientos oscilatorios de izquierda a derecha, bajando poco a poco". Especifica sus
atributos y m étodos y justifica las decisiones de implementación q u e creas i m portantes.
d) [1,5 puntO,'i) lndique los cambios que serían necesarios en el diseño y programa para permitir que cada nave
alienígena se moviera según una trayectoria independiente del resto de naves alienígenas pudiendo moverse
libremente en las cuatro coordenadas (arriba, abajo, izquierda y derecha). Las naves alienígenas no podrían
ocupar el mismo espacio de coordenadas, por tanto deberían chocar y cambiar su dirección.
U N IV ERSIDAD NAC IONAL DE E D U CACIÓN A D ISTA N C IA - ESCUELA T É C N ICA S U P E R IO R DE I N G E N I E RiA
I N FORMÁTICA
7 1 9 0 1 072 - PROGRAMACIÓN O R I E N TADA A OBJETOS ( G RADO E N I N G E N I E RÍA I N FORMÁTICA f T E C N O LOGÍAS DE
LA I N FORMACIÓN )
J U N IO 2 0 1 2 - M OD E LO 8 - N o ESTÁ P E R M ITIDO EL USO D E M ATE RIAL ADICIONAL
Pregu nta 1: Según el texto de la bibliografía básica de la asignatura, indique cual de las siguientes afirmaciones es falsa:
a. Únicamente las clases que implementan la interfaz List permiten el uso de iteradores.
b. Un iterador es un objeto que proporciona funcionalidad para recorrer todos los elementos de una
colección.
c. Un iterador permite recorrer cualquier tipo de colección hacia adelante utilizando el método next()
combinado con el método hasNext() para comprobar si se ha alcanzado el final de la colección.
d. Una colección puede recorrerse tanto con un iterador como con un ciclo for-each. Ambas formas son
equivalentes.
Pregu nta 2: Respecto a los bucles, indique cual de las siguientes afirmaciones es falsa:
a. El cuerpo de un bucle for-each puede repetirse O o más veces.
b. Un bucle for-each puede aplicarse sobre cualquier clase que implemente la interfaz Iterable.
c. El cuerpo de un bucle while siempre se ejecuta, como mínimo, una vez.
d. Un bucle for-each puede aplicarse sobre arreglos (arrays).
pub l i c b o o l e a n e qu a l s ( Ob j e c t t )
TV t e l e v i s i o n = ( TV ) t ;
r e t u r n ma r c a . e qua l s ( t e l ev i s i o n . ma r c a ) & &
mode l o . equa l s ( t e l ev i s i o n . mo de l o ) ;
}
pub l i c i n t m�§m9:8fill§, ( )
return marca . l ength ( ) * 1 0 + mode l o . l e ngth ( ) ;
i f ( tv 1 . equa l s ( tv2 ) )
S ys t e m . o u t . p r i n t l n ( " l o s t e l ev i s o r e s s o n i gu a l e s " ) ;
} else {
S ys t e m . o u t . p r i n t l n ( " l o s t e l ev i s o r e s n o s o n i gua l e s " ) ;
}
Pregu nta 7: Dado el siguiente código, indique cual de las siguientes afirmaciones es cierta:
pub l i c c l a s s M i C l a s e
int x = 2 ;
float y = 4 . 3 f ;
pub l i c s t a t i c v o i d ma i n ( S t r i n g [ ] a r g s )
for ( int z = 1 ; z < x ; z++ )
S y s t em . o u t . p r i n t l n ( " Va l o r de y= " +y ) ;
pub l i c c l a s s C l a s eA {
pub l i c C l a s e A ( S t r i n g s ) { S y s t em . o u t . p r i n t ( " C o n s t r u y e n do C l a s e A . " ) ;
pub l i c c l a s s C l a s e B e x t e n ds C l a s e A {
pub l i c C l a s e B ( S t r i n g s ) { S y s t em . o u t . p r i n t ( " C o n s t r u y e n do C l a s e
B . " ) ; s upe r ( s ) ; }
pub l i c s t a t i c vo i d ma i n ( S t r i n g [] args )
n ew C l a s e B ( " Ob j e t o C l a s e B " ) ;
S ys t e m . o u t . p r i n t l n ( " " ) ;
Pregu nta 9: Dado el siguiente código, ¿Cuál de las siguientes afirmaciones es correcta?
pub l i c ab s t r a c t c l a s s D i s p a r o {
p r o t e c t e d i n t ve l o c i da d= l O ;
ab s t r a c t pub l i c vo i d d i s p a r a r ( ) ;
pub l i c c l a s s D i s p a r o U FO e x t e n ds D i s p a r o {
pub l i c v o i d di s p a r a r ( )
t h i s . ve l o c i da d= 2 0 ;
S ys t e m . o u t . p r i n t l n ( " D i s p a r a l a nave " ) ;
pub l i c c l a s s T e s t U F O {
pub l i c s t a t i c vo i d ma i n ( S t r i n g [ ] args )
D i s p a r o dn=new D i s p a r oN ave ( ) ;
n ew T e s tU FO ( ) . i n i c i o ( dn ) ;
pub l i c v o i d i n i c i o ( D i s p a r o d )
{
d . disparar ( ) ;
Podemos afirmar:
Pregu nta 11: Según el texto de la bibliografía básica de la asignatura, cuando un objeto permite realizar un conjunto de
tareas muy relacionadas entre sí, podemos afirmar que:
a. El objeto presenta una alta cohesión.
b . E l objeto está muy acoplado.
c. El objeto está poco encapsulado.
d. El objeto presenta una baj a cohesión.
pub l i c c l a s s C l a s e U n o
C l a s eUno obj ;
C l a s eUno ( ) { }
C l a s e U n o ( C l a s e Un o m ) { obj = m;
vo i d i n i c i a l i z a r ( ) S ys t e m . o u t . p r i n t ( " I n i c i a l i z a n do . ") ; }
pub l i c c l a s s T e s t {
pub l i c s t a t i c v o i d ma i n ( S t r i n g [ ] a r g s )
C l a s eUno obj l = new C l a s eUno ( ) ;
C l a s e U n o o b j 2 = n e w C l a s e U n o ( ob j l ) ;
ob j 2 . i n i c i a l i z a r ( ) ;
C l a s e U n o o b j 3 = ob j 2 . ob j ;
ob j 3 . i n i c i a l i z a r ( ) ;
C l a s e U n o o b j 4 = ob j l . ob j ;
ob j 4 . i n i c i a l i z a r ( ) ;
}
pub l i c c l a s s Prueba {
pub l i c s t a t i c vo i d ma i n ( S t r i n g [ ] a r g s )
Ar r a yL i s t < I n t e g e r > va l o r e s = n e w Ar r a yL i s t < I n t e g e r > () ;
va l o r e s . a dd ( 4 ) ;
va l o r e s . a dd ( S ) ;
va l o r e s . s e t ( l , 6 ) ;
va l o r e s . re move ( O ) ;
f o r ( I n t e g e r v : va l o r e s )
S ys t e m . o u t . p r i n t ( v ) ;
Al ejecuta r el cód igo obtendremos:
a. U n e rror en tiempo de ejecución
b. Se mostra rá 4
c. Se mostra rá 5
d . Se mostra rá 6
Pregu nta 15: Si q u isiera orga nizar los componentes de una i nterfaz gráfica de acuerdo a una tabla utiliza ría como gestor
d e contenido:
a . Gri d Layout
b. BoxLayo ut
c. FlowLayout
d. BorderLayout
1) Naves a l i e n ígenas o U FOs, q u e se m u eve n de izd a . a dcha. y va n bajando haci a a bajo poco a poco.
Esporád ica mente l a nzan m isiles.
2 ) L a nave guar d i á n es controlada p o r el jugad or.
3) El láser d i sparado por l a nave guard i á n (trayectoria ascend ente) . Cuando el láser de la nave a l ca nza una nave
enemiga, ésta d esaparece del j u ego.
4) Los m isiles d i sparados por los U FOs (trayecto ria descend ente). Cuando un misil a l ca nza a la nave, fi naliza el
juego.
Se pide diseñar utilizando una aproximación orientada a objetos una ampliación a la práctica realizada a lo largo del curso
que permita la existencia de un nuevo tipo de nave alienígena (NaveDeReconocimiento) que se desplace horizontalmente
por la parte superior de la pantalla (es decir, por encima del conjunto de UFOs que se van desplazando hacia la nave
guardián) y que al llegar a uno de los extremos de la pantalla desaparezca por este y vuelva a aparecer por el extremo
opuesto. Para ello el alumno deberá responder de manera razonada a los siguientes apartados:
a) [ 2 puntos] Proponga, utilizando diagramas de clase, y explique como modelaría este nuevo tipo nave
alienígena aprovechando el diseño que ha realizado en la práctica. Debe IZlhacerse uso 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) [1,5 puntos] Implemente la nueva clase NaveDeReconocimiento especificando sus atributos y métodos,
justificando las decisiones de implementación que considere relevantes.
e) [1,5 puntos] Implemente la regla de juego: "La nave de reconocimiento aparecerá en uno de los extremos
de la pantalla y se desplazará hasta el extremo contrario de manera horizontal. Una vez alcanzado el
extremo opuesto desaparecerá por éste y volverá a aparecer en el extremo inicial de manera iterativa hasta
que sea destruida por un disparo". En caso de que lo considere necesario puede apoyarse en aquellas
clases que ha utilizado en su práctica explicando claramente sus funcionalidades.
d) [1,5 puntos] Explique razonadamente qué cambios serían necesarios en el diseño que ha realizado en los
apartados anteriores para que la NaveDeReconocimiento también pudiera realizar disparos.
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA - ESCUELA TÉCNICA SUPERIOR DE INGENIERiA INFORMÁTICA
71901072 - PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERiA INFORMÁTICA / TECNOLOGÍAS DE LA INFORMACIÓN)
SEPTIEMBRE 201 2 - MODELO A - i�t.Jtid�MMIW·MMII�·M·13&Bi@ijti.]Mf·Hdl
pub l i c c l a s s E j emp l o {
pr ivate int i=j ;
pr ivate int j = l O ;
pub l i c s t a t i c vo i d ma i n ( S t r i n g [ ] a r g s )
S y s t e m . ou t . p r i n t l n ( ( n e w E j emp l o ( ) ) . i ) ;
a. Da un error de compilación debido a las restricciones de acceso a las variables privadas de Ejemplo.
b. Da un error de compilación debido a la referencia que se hace a variables declaradas con posterioridad.
c. No da ningún error de compilación y produce como salida el valor O .
d. No da ningún error de compilación y produce como salida el valor 10.
Pregunta 4: Sean "Mamifero" y "Gato" dos clases que mantienen una relación de herencia padre-hijo. ¿Qué habría
que modificar en el siguiente código para que sea correcto y por qué?
An i ma l a ; /* Linea 1 */
Gato b ; /* Linea 2 */
a = n ew Animal () ; /* Linea 3 */
b = a; /* Linea 4 */
a. Nada. Es correcto.
b. No se puede asignar un objeto a otro de otra clase, luego cambiamos la línea 2 : An imal b ; .
c. Es necesario explicitar el tipo cuando asignamos un objeto a otro objeto perteneciente a una clase hija, luego
cambiamos la línea 4: b = ( Ga t o ) a ; .
d. Es necesario explicitar el tipo y crear una nueva instancia cuando asignamos un objeto a otro objeto
perteneciente a una clase hija, luego cambiamos la línea 4: b = n ew ( Ga t o ) a ; .
X = y-- ;
Pre2unta 1 2 : Según e l texto de l a bibliografía básica de l a asignatura, indique cuál d e las siguientes afirmaciones
es correcta:
a. La depuración es la actividad cuyo objetivo es determinar si una pieza de código produce el comportamiento
pretendido.
b. La prueba viene a continuación de la depuración.
c. La depuración es una actividad dedicada a determinar si un segmento de código contiene errores.
d. La depuración es el intento de apuntar con precisión y corregir un error en el código.
Pre2unta 13 : ¿De qué clase deriva la clase ArrayList?
a. AbstractList.
b. AbstractCollection.
c. ArrayCollection.
d. ListCollection.
Pre2unta 14: Cuando queremos que un objeto oiga eventos de acción disparados por el usuario, el objeto tiene
que implementar la interfaz ...
a. Ac t i o n E v e n t .
b. Act i o nL i s t e ne r.
c. L i s t e n e rAc t i o n .
d. L i s t e n e r Ev e n t .
pub l i c c l a s s E j emp l o
{
p r i v a t e i n t i= dame J ( ) ;
pr ivate int j = l O ;
p r i v a t e i n t dame J ()
{
return j ;
a. Da un error de compilación debido a las restricciones de acceso a las variables privadas de Ejemplo.
b. Da un error de compilación debido a la referencia que se hace a métodos declarados con posterioridad.
c. No da ningún error de compilación y produce como salida el valor O.
d. No da ningún error de compilación y produce como salida el valor 10.
Pregunta 3: ¿Cuál de las siguientes i nstru cciones compila sin provocar un warning o un error?
a. char e=" a " ;
b. b y t e b = 2 5 7 ;
c. b o o l e an b = n u l l ;
d . int i=l O ;
pub l i c c l a s s Q {
pub l i c s t a t i c vo i d ma i n ( S t r i ng a rgv [ ] ) {
int anar [ ] =new i nt [ 5 ] ;
S y s t e m . ou t . p r i n t l n ( an a r [ O ] ) ;
a. Error: anar is referenced befare it is i n itialized
b. nu l l
c. o
d. S
Pregunta 7: ¿ Qu é se mostrará por panta l l a cuando se i ntenta compilar y ejecutar el siguiente código?
imp o r t j av a . awt . * ;
pub l i c c l a s s B u t t e x t e n d s F r ame {
pub l i c s t a t i c v o i d ma i n ( S t r i n g a r gv [ ] ) {
Butt MyB u t = n ew B u t t ( ) ;
Butt ( ) {
B u t t o n H e l l oBut=new B u t t o n ( " Ho l a " ) ;
B u t t o n ByeBut=new B u t t o n ( " Ad i o s " ) ;
add ( He l l oBut ) ;
add ( ByeBut ) ;
setS i z e ( 3 0 0 , 3 0 0 ) ;
s e tVi s ib l e ( t ru e ) ;
a. Dos boto nes j u ntos ocupando todo el frame. Hola en la izq u ierda y Ad ios en la derecha.
b. U n botó n ocupando todo el fra m e d iciendo Hola.
c. U n botón ocupando todo el fram e d iciendo Adios.
d. Dos boto nes e n l a parte s u perior del fra m e diciendo uno Hola y el otro Adios.
Pregunta 8: Dado el sigui ente fragmento, ¿ podemos insta nciar un obj eto de esta clase?
Pregunta 9: Según el texto de la bibliografía básica de la asignatura, i n d iq u e cuál de las siguientes afirmaciones es
correcta :
a. U n encapsulamiento apropiado en las clases reduce el acoplamiento.
b. El térm in o acoplamiento d escribe c u á nto se aj u sta una u n idad de código a una tarea lógica o a una entidad.
c. E l acoplam iento d escribe l a conectividad d e los propios obj etos d e una clase.
d . Un sistema débilmente acoplado se ca racteriza por la i mposi bil idad d e modificar una d e sus clases sin tener q u e
realizar cambios e n ninguna otra .
Pregunta 10: Si se ejecuta el siguiente cód igo, ¿ q u é se i m prime por pa ntalla?
a. Bic.
b. ic.
c. icy.
d . e rror: no m ethod match ing s u bstring( int, char).
Pregunta 12: N ecesita crear u na clase que almacene como elemento base d e la m isma obj etos ú nicos. No se n ecesita
q u e guarden orden algu no, pero sí q u e no se repitan. ¿Qué interfaz sería la más apropiada para este fin?
a. Set.
b. L i s t .
c. Map.
d. Ve c t o r .
Pregunta 13: Dado e l siguiente código, i n d iq u e q u é ocurri ría al llamar al método e j emp l o ( ) ;
Pregunta 15: En lo que se refiere a las clases internas anóni mas, se puede afirmar q u e :
a . S u e l e n emplea rse e n l o s l ugares en l o s q u e se req u iere la implementación d e una s o l a insta ncia.
b. Siempre se hará referencia l a i nstancia med iante su s uperti po.
c. Permiten defin ir una clase y crear una i nsta ncia de el la, todo en un solo paso.
d. Todas las anteriores son correctas.
PARTE PRÁCTICA [6,5 PUNTOS] :
Co n s i d e re pa ra su est u d i o u n a ve rsión d e l conocido j uego Space l nva d e rs . Este j u ego consiste e n q u e
va rias fi l a s de n a v e s a l i e n íge n a s o U FOs ava n z a n hacia la b a s e defe nsora, con m ovi m i e ntos osci latorios de
izq u i e rda a d e recha, baj a n d o poco a poco . As í, u na nave g u a rd i á n d efie nde l a base y t rata de evita r los m is i l e s
la nzados esporá d ica m e nte por l a s n aves i nvasoras. La nave g u a rd i á n la nza d i spa ros de u n o e n u n o . E l j u ego
fi n a l iza c u a n d o todos los i nva sores h a n sido a l ca nzados o c u a n d o los i nvasores l l ega n a la base.
Pregu nta 1: Dado el siguiente fragmento de cód igo, cuál es el res ultado del co mando java test 2:
pub l i c c l a s s t e s t {
pub l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) {
I n t e g e r i n t üb j = I n t e ge r . v a l u e ü f ( a rgs [ a rgs . l e ngth - 1 ] ) ;
i n t i = i n t Ob j . i n tV a l u e ( ) ;
a . test
b. test- 1
c. 1
d. 2
Pregu nta 2 : Dado e l siguiente fragmento de cód igo, i ndi que c u á l de l o s siguientes resultados es el resu ltad o d e s u
ejecu ció n :
pub l i c c l a s s t e s t {
pub l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) {
int i , j = 1 ;
i = (j>1) ?2 : 1;
switch ( i ) {
c a s e 0 : S y s tem . ou t . p r i n t ( O ) ; b r e a k ;
c a s e 1 : S y s tem . ou t . p r i n t ( 1 ) ;
c a s e 2 : S y s tem . ou t . p r i n t ( 2 ) ; b r e a k ;
c a s e 3 : S y s tem . ou t . p r i n t ( 3 ) ; b r e a k ;
a. 01
b. 12
c. 13
d . 23
Pregu nta 3 : Segú n e l texto de la bibliografía básica de la asignatura, i ndi que c u á l de las sigu i e ntes afirmaciones e s
incorrecta sobre l as bibliotecas para la construcción de interfa ces gráficas de us uario en Java:
a . AWT utiliza clases de Swi ng.
b. Swing util iza clases de AWT.
c. H ay clases e q u iva l e ntes en AWT y Swi ng.
d . S e identifica n l a s clases de Swing con l a letra J como prefijo.
Pregu nta 4 : Segú n e l texto d e l a bibliografía básica de la asignatu ra, i ndi que cua les de las sigu i e ntes expresiones
resu lta n ve rd a d eras:
l. ( 4 > 5 )
2 o 1 > 2 ) 1 1 ( ( 3 3 ) && ( 2 < 1 ) )
--
3 o 3 > 3 ) 1 1 ( 3 --
3 ) && ( 1 < 2 )
4 o 3 > 3 ) 1 1 ! ( ( 3 --
3 ) && ( 1 > o ) )
5. 33 '= 33 ) & & ! false
a. La s expresiones 3 y 4.
b. La s expresiones 2 y 4.
c. La s expresiones 3 y S.
d. La s expresiones 1 y 3.
Pregu nta 5 : Segú n e l texto de la bibliografía básica de la asignatura, i ndi que c u á l de las sigu i e ntes afirmaciones e s
incorrecta :
a . La s clases d efi nen ti pos.
b. La s d iagra mas d e clases mu estra n las clases de u na aplicación y la relación entre el los.
c . La s clases son objetos.
d . La s clases d efi nen métodos.
Pregu nta 6: Dado el sigu i e nte fragme nto de cód igo, i ndi que cuál de las siguientes afirmaciones es el resu ltad o de su
ejecu ció n :
1. class U no{
2. protected U no yo M i smo(){ retu rn this;}
3.
4. class Dos exte nds U no{
S. public Dos yo M ismo(){
6. ret u rn su per.yo M ismo();
7.
8.
a. No hay e rrores en el código. El resu lta do sería una refe rencia a un objeto del tipo U no
b. N o hay e rrores en el código. El resu lta do sería una refe rencia a un objeto del tipo Dos
c. I ncompati bil id ad de ti pos línea 6.
d. El método yoM ismo d e la clase U no no es visi ble en línea 6.
Pregu nta 7 : Segú n e l texto de la bibliografía básica de la asignatura, i ndi que c u á l de las sigu i e ntes afirmaciones e s
correcta :
a . El encapsu l amiento a propiado en l a s clases red u ce su acoplamiento.
b. El acopla m ie nto describe el encapsu l a m iento de las clases.
c. El encapsu l amiento a propiado en las clases red u ce su cohesión.
d. La cohesión d e u na unidad de cód igo refleja su acopla miento.
Pregu nta 8: Dado el sigu i e nte fragme nto de cód igo, i ndi que cuál de las siguientes afirmaciones es el resu ltad o de su
ejecu ció n :
a d d (set);
a. O
b. 1
c. 2
d. N u i i Poi nterException
Pregu nta 10: ¿Cu á l de l a s sigu i e ntes afi rmaciones es correcta sobre la clase Math en Java ?:
a . public c l a ss MyCa l c exte nds Math
b. Math.max( 10);
c. Math.round (9. 99, 1);
d. N i nguna d e l a s a nteriores.
Pregu nta 11: Dado e l sigu i e nte fragmento de cód igo, i ndi que cuál d e las siguientes afirmaciones es el res u ltado d e su
ejecu ció n :
pub l i c c l a s s t e s t {
pub l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) {
int i=l , j = l ;
try
i++;
j --;
i f ( i == j )
i++;
c a t c h ( A r i thme t i cExcep t i on e ) {
S y s tem . ou t . p r i n t ( O ) ;
c a t c h ( Excep t i on e ) {
S y s tem . ou t . p r i n t ( 2 ) ;
finally {
S y s tem . ou t . p r i n t ( 3 ) ;
a. 0,4
b. 1,4
c. 2,4
d. 3,4
Pregu nta 12: Segú n el texto de la bibl iografía básica de la asignatura, i ndi que cuál de las siguientes defin iciones d e un
método m, que la nza IO Exception, y que devue lve void, es correcta :
l. c l a s s Parent {
2. Doub l e g e t ( )
3. return 1 . 0 ;
4o
5o
6. c l a s s C h i l d extends P a r e n t {
7. Integer get ( )
8. return 2 ;
9o
10 .
a. Éxito.
b. get() en Child no puede extender get( ) en Pa rent, ti pos del retorno son i ncom pati bles.
c. get() e n Child no puede extender get( ) en Pa rent, no son clases públ icas.
d . get() e n Child y a defi nido en P a rent.
Pregu nta 14: Según el texto de la bibliografía básica de la asignatu ra, i ndi que cuál de las siguientes afirmaciones es
correcta :
a . Si un a cl ase t ie ne a lgún método abstracto hay q u e declara rla como a bstracta .
b. Todos los métodos en u na clase abstracta tienen que ser declarados como abstractos.
c. Una clase q u e hereda de una clase abstracta no tiene q u e implementa r todos los métod os abstractos para no
ser abstracta.
d . U n a clase abstracta no puede implementa r n inguna i nte rface.
Pregu nta 15: Dado e l siguiente fragmento de cód igo, i ndi que cuál es la sa l i d a de su compilación/ejecución :
l. S t r i n g n omb re = n u l l ;
2. F i l e f i l e = new F i l e ( " / f o l d e r " , n omb re ) ;
3. S y s t em . ou t . p r i n t ( f i l e . e x i s t s ( ) ) ;
a . true
b. fa lse
c. N u i i Poi nterExce ption en línea 2.
d . N u i i Poi nterException en l ínea 3 .
1. El juego comenzará c o n u na panta l la de bienvenida a partir de la cual se pod rá seleccionar el mod o d e j u ego
(FAC I L, N O R MAL, CO M P LICADO, I M POSI BLE) y comenzar a jugar.
2. El juego consta rá de u n ú n i co nivel donde el jugador deberá aca b a r co n una horda de naves a l ie níge nas. El
n ú mero d e a l ien ígenas con los que acabar dependerá del modo de j uego sel eccionado. Fácil= 10, N orma l= 15,
Compl icado=20, lm posible=30.
3. El jugador control a rá l a nave a l ia da y d ispondrá de 1 sola vid a .
4. La s naves a l ie n ígenas será n controladas p o r el ordenador.
5. La s naves a l ie n ígenas no d i spara n .
6. N o h a y q u e implementa r re lieve. E s decir, no h a y q u e mostra r ningún tipo de suelo o techo como e n e l j u ego
origi n a l .
7. L a nave a l i a d a podrá moverse a rriba (Tecla Q), a bajo (Tecla A ) , izqu ierda (Tecla O) y derecha (Tecla P ) . Así
mismo pod rá d isparar su l a ser utilizando la tecla ESPACIO.
8. El á rea d e movimiento perm iti do para la nave será toda la pa nta lla, a u nq u e habrá que com proba r que la nave
no sa lga de estos l ím ites.
9. El d isparo que rea liza la nave a l ia da es conti nuo, es decir, no es necesa rio espera r a que el misil d ispara d o
abandone la panta l la para q u e l a nave a l i a d a p u e d a volver a d isparar.
10. La nave a l i a d a sólo puede realizar un tipo d e d i sparo que se desplazará horizonta lmente hacia la de recha d e la
panta l l a , sin va riar su trayectoria y a velocidad consta nte.
11. La s naves a l ie n ígenas se m u even a velocidad consta nte y podrán ser de d os tipos:
a. Nave Alienígena Tipo A. Apa recen po r la pa rte derecha de la panta l la y se m u even horizonta lmente
hacia la izqu ierda a velocidad consta nte sin va riar su trayectoria, es decir, su coordenada "y" no varia e n
todo el desplazamiento.
b. Nave a lienígena Tipo B. Apa recen por la pa rte derecha de la panta l la y se m u even hori zonta lmente
hacia la izqu ierda a velocidad consta nte. La principal d ife rencia con las Naves de Tipo A es q u e éstas
pueden va riar su trayectoria, es decir, en su desplaza miento horizonta l pueden va riar su coordenada "y"
d e manera a l eatoria .
12. La ve locidad a l a q u e s e m u eve n l a s naves a l i e nígenas dependerá del modo de j uego sel eccionado. Tod as las
naves se m u even a l a m isma velocidad.
13. Cuando l a s naves a l i e n ígenas a lcancen l a pa rte izqu ierda de la pa nta lla volve rá n a aparecer por la pa rte d e recha
d e ésta.
14. Se deberán d e detecta r dos ti pos de col isiones.
a . La s colisiones entre la nave a l ia da y las naves a l ie níge nas, lo q u e supondrá el final del j uego.
b. La s col isiones entre los m isiles d i sparados por la nave aliada y las naves ali enígenas, lo que supondrá la
d estru cción de la nave a l i enígena contra la que ha chocado el misil.
15. Si e l jugador fi na l iza el nivel del j u ego deberá aparecer u n me nsaje de fe l icitación y se volvería a mostra r e l
menú i nicia l .
a) [1,5 pu ntos] Diseñar u t i l i z a ndo u n parad igma orie nta do a objetos, los elementos necesarios para la ap l icación
explicada d e l a práctica d u ra nte el cu rso. Es necesario id entificar la estructura y las re laciones de herencia y de
uso d e las clases necesa rias para a l macenar y gestionar esta información. Debe hacerse uso de los meca nismos
d e herencia siem pre que sea posible. Se va lora rá un buen d i seño que favorezca la re utilización d e cód igo y
facilite su ma ntenimiento.
b) [1,5 pu ntos] Impleme nta la clase N aveAl i a da. Especifica sus atri butos y métodos y j ustifica las decisiones de
implementación q u e creas im porta ntes.
e) [1,5 pu ntos] I mplementa la siguiente regla del j uego: "Las naves a l ien ígenas Tipo A aparecen por la pa rte
d erecha de la panta l l a y se mueven horizonta lmente hacia la izqu ierda a ve locidad consta nte sin va riar su
trayectoria, es decir, su coord enada "y" no varia en todo el desplaza miento". Especifica sus atri butos y métod os
y ju stifica las decisiones de i mplementación q u e creas im porta ntes.
a) [2 pu ntos] I n d i q u e los ca m bios q u e sería n necesarios en el d iseño y progra ma para permiti r que ca d a nave
a l ienígena se moviera seg ú n u na trayectoria independ iente del resto de naves a l ieníge nas p u d iendo moverse
li bremente e n las cuatro coordenadas (a rriba, a bajo, izqu ierda y derecha ) . Las naves a l ien ígenas no pod ría n
ocu par el m ismo espacio de coordenadas, por tanto debería n choca r y cambiar su d i rección.
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA - ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA
71901072 - PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA / TECNOLOGÍAS DE LA INFORMACIÓN)
JUNIO 201 3 - MODELO A - No ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONA
Pregunta 1 : Según e l texto d e la bibl iografía básica d e la asignatura, el alcance d e una va riable lll
a. U na versión d e l a apl icación en la q u e se simula una parte de el la, en vías a experimentar co n las resta ntes
partes.
b. U na versión de l a apl icación en l a que se simulan varias partes, en vías a experimentar con una de sus partes.
c. U na versión de l a apl icación en l a q u e se simulan varias partes, en vías a experimentar con las restantes partes.
d. N inguna d e l a s a nteriores
a . Todas las su bclases d e la clase está ndar d e Java Run T imeE x c ep t i o n son excepciones compro badas.
b. Todas las su bclases de la clase está ndar de Java E x c ept i o n son excepciones comprobadas.
c. E r r o r es una s u bclase d i recta de T h r owab l e, m ientras q u e E x c ept i o n es una s u bclase d i recta de E r r o r .
d. Tanto E r r o r como E x c ep t i o n son s u bclases d i rectas d e Th rowab l e .
Pregunta 4 : ¿Qu é meca nismo usa J ava para i m p l em entar herencia m ú ltiple?
a. E n Java no se perm ite l a herencia m últiple d e clases, ni tam poco la implementación m últiple d e i nterfaces.
b. E n Java no se perm ite l a herencia m últiple de clases, pero sí la implementación m ú ltiple de interfaces.
c. E n Java se permite la herencia m últiple de clases, pero no la implementación m últiple de interfaces.
d. En Java se permite la herencia m últiple de clases, y ta m bién la implementación m ú ltiple de i nterfaces.
a. 2
b. 3
c. 4
d. 2.5
a. 1 y 3.
b. 2 y 4.
c. 3 y 5.
d. 4 y 6.
Pregunta 7: ¿Qu é i nterfaz proporciona la capacida d d e al macenar obj etos usando u n va lor l lave?
a . 1 y 2.
b. 2 y 3 .
c. 3 y 4.
d . Todas son correctas.
Pregunta 9 : ¿Cuál d e las siguientes sentencias declara l ega l m e nte, construye e in icial iza u n array?
Pregunta 10: ¿Cuál de las siguientes listas contiene sólo pala bras clave de Java?
a. c l a s s, i f, vo i d, l o n g, I n t, c o n t i nu e .
b. g o t o , i n s t a n c e o f, n a t ive, f i n a l l y, de f a u l t, t h r o w s .
c. t r y, v i r t u a l , t h row, f i n a l , vo l a t i l e, t ra n s i e n t .
d. b y t e , b r e a k, a s s e r t, s w i t ch, i n c l ude.
pub l i c c l a s s T e s t
{
pub l i c s t a t i c v o i d l e ft s h i f t ( i n t i , int j )
{
i <<= j ;
pub l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] )
{
int i = 4 , j = 2 ;
l e ftshift ( i , j ) ;
S ys t em . ou t . p r i n t l n ( i ) ;
a. 2
b. 4
c. 8
d . 16
class Test {
pub l i c s t a t i c v o i d ma i n ( S t r i n g [] a rg s )
T e s t p = new Te s t ( ) ;
p . s t a rt ( ) ;
void start ( )
b o o l e a n b l = fa l s e ;
boolean b2 = fix ( bl ) ;
S y s t e m . ou t . p r i n t l n ( b l + " " + b2 ) ;
a. true true
b. fa lse true
c. true fa lse
d. fa lse fa lse
l. pub l i c c l a s s T e s t {
2. pub l i c i n t aMe thod ( )
3. static int i = O ;
4 o i++;
5. r e t u rn i ;
6 o
7. pub l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) {
8. T e s t t e s t = new T e s t ( ) ;
9. i n t i = t e s t . aMe thod ( ) ;
10 . i n t j = t e s t . aMe thod ( ) ;
11 . S ys t em . ou t . p r i n t ln ( j ) ;
12 .
13 .
a. O
b. 1
c. 2
d. La co m pilación fa l l a .
for ( i nt i = O ; i <= 4 ; i += 2 )
S y s t em . o ut . p r i nt ( i + " ") ;
S y s t em . o ut . p r i n t l n ( i ) ;
a. O24
b. o245
c. o1234
d. La compilación fa l l a .
Pregunta 15: ¿Qué cód igo hay que añadir en la posición i n d icada en el código para que co mpile?
pub l i c c l a s s Except i o n T e s t {
c l a s s T e s tExcept i o n extends Except i o n { }
pub l i c v o i d run T e s t ( ) t h r ows T e s tExcept i o n { }
pub l i c v o i d t e s t ( ) / * Codigo a añadir * / {
run T e s t ( ) ;
l. El j u ego comenzará con u na panta lla d e bienvenida a partir d e la cual se podrá sel eccionar el modo d e j u ego
( FACI L, N O R M AL, CO M P LI CADO, I M PO S I B LE) y comenzar a j ugar.
2. El j u ego constará d e u n ú n ico n ivel d o n d e el j ugador d e berá acabar con una horda d e naves ali e n ígenas. E l
n ú me ro d e al i enígenas con l o s q u e aca bar dependerá del modo d e j u ego seleccionado. Fácil= 10, Normal=15,
Complicado=20, l mposi ble=30.
3. E l j ugad or controlará l a nave aliada y d ispondrá de 1 sola vida.
4. Las naves al ie n ígenas serán controladas por el ordenador.
5. Las naves al ie nígenas no d ispara n.
6. N o h ay q u e i mplementar rel i eve. Es decir, no hay q u e mostrar n i ngún ti po d e suelo o techo como e n e l j u ego
original.
7. La nave aliada podrá moverse arriba (Tecla Q), a bajo (Tecla A), izq u ierda (Tecla O) y derecha (Tecla P). Así m ismo
podrá d isparar s u laser utilizando l a tecla ESPACIO.
8. E l á rea d e movimiento permitido para l a nave será toda la pantal la, a u n q u e habrá que compro bar que la nave
no salga d e estos l ím ites.
9. E l d isparo que real iza l a nave aliada es conti n uo, es decir, no es necesario esperar a que el m isil d isparado
a bandone la panta l l a para que la nave aliada pueda volver a d isparar.
10. La nave a l iada sólo puede real izar un tipo de d isparo que se despl azará horizonta l m e nte hacia la de recha de la
pantal la, sin variar s u trayectoria y a velocidad constante.
11. Las naves al ie n ígenas se m u even a velocidad constante y podrán ser de dos tipos:
a. Nave Alienígena Tipo A. Aparecen por la parte derecha de la pa nta lla y se m u even horizontalmente
hacia la izq u ierda a velocidad constante sin va riar s u trayectoria, es decir, s u coordenada f11]1 o varia en
todo e l desplazamiento.
b. Nave Alienígena Tipo B. Aparecen por la parte derecha de la panta lla y se m u even horizonta l me nte
hacia l a izq u ierda a velocidad constante. La principal d iferencia con las N aves de Tipo A es q u e éstas
pueden va riar su trayectoria, es decir, en su desplazamiento horizontal pueden variar su coordenada �
d e manera a l eatoria.
12. La velocidad a la que se m u even las naves ali enígenas dependerá del modo de j u ego seleccionado. Todas las
naves se m u even a la m isma velocidad.
13. Cuando las naves a l i enígenas a l cancen la parte izq u ierda d e la pantalla volverán a aparecer por la parte d e recha
de ésta.
14. Se d e berán de d etectar dos ti pos de col isiones.
a. Las col isiones entre la nave aliada y las naves ali enígenas, lo q u e s upo ndrá el final del j u ego.
b. Las co l isiones entre los m isiles d isparados por la nave aliada y las naves ali enígenas, lo que su pondrá la
d estru cción d e la nave a l i enígena contra la que ha chocado el m isil.
15. Si e l j ugador finaliza el n ivel del j u ego deberá aparecer u n mensaje d e felicitación y se volvería a mostrar e l
m e n ú i n icial.
b) [1,5 pu ntos] I mplemente la n u eva clase especificando sus atri butos y métodos, j ustificando las decisiones d e
i mplementación q u e considere relevantes.
e) [2,0 puntos] Implemente la regla del j u ego: �lila nave alienígena Tipo C se com porta como una nave Tipo A, con
la particularidad de que, cuando alca nza la parte izquierda, en lugar de aparecer por la parte derecha, lo que
hace es desplazarse de izquierda a derecha, hasta que alcanza nuevamente el límite derecho, volviendo
entonces a desplazarse hacia la izquierda (y así sucesivamente hasta ser destruida)IZI.
a) [1,5 puntos] Explique razonadamente q u é cambios serían necesarios en el d iseño q u e ha realizado en los
apartados anteriores para que la nave a l i enígena Tipo C pudiera rea l izar un n ú mero N de idas y venidas ( d e
d e recha a izq u ierda y viceversa) y q u e cuando pasaran ese n ú mero d e veces sin ser d estruida, e ntonces se
a utodestruyera.
U N IV ERSIDAD NAC IONAL DE E DU CAC IÓN A D ISTA N C IA - ESCUELA T É C N ICA S U P E R IO R DE I N G E N I E RiA
I N FORMÁTICA
7 1 9 0 1 0 7 2 - PROGRAMACIÓN O R I E N TADA A OBJETOS ( G RADO E N I N G E N I E RÍA I N FORMÁTICA f T E C N O LOGÍAS DE
LA I N FORMACIÓN)
S EPTI E M B R E 2 0 1 3 - M O DELO C - No ESTÁ PERM ITIDO E L USO D E MATERIAL ADICIO NAL
Pregu nta 1: ¿Qué ocu rrirá al com p i l a r y ejecuta r el sigu i e nte código?
c l a s s Padre { }
c l a s s C l a s e H i j a extends Padre { }
c l a s s C l a s e H i j a 2 e x t e n ds P a d r e { }
pub l i c c l a s s T e s t {
pub l i c s t a t i c vo i d ma i n ( S t r i n g a r gv [ ] ) {
P a d r e b=new P a d r e ( ) ;
ClaseHi j a s= ( C laseHi j a ) b ;
S y s t em . o u t . p r i n t ( " E j e c u t a n do Ap l i c a c i ó n " ) ;
}
Pregu nta 2: Segú n la bibliografía básica, ¿Qu é elementos cree q u e defi nen a un objeto?
a . S u s ca rd i na l i d a d y su tipo
b. Sus atri butos y sus métodos
c. La forma e n q u e esta blece com u nicación e i nterca mbia mensajes
d . Su inte rfaz y l o s eventos asociados
Pregu nta 3: Dada l a siguiente definición de cla se, ¿Cuál sería el contenido más coherente a i mplementa r en el
constructor?
class Test {
i n t var ;
T e s t ( i n t va r ) { CONTE N I DO C ON S T RU C T OR }
a. va r=va r;
b. int var=va r;
c. this.va r=var;
d. No s e puede l l a m a r igua l el parám etro d e l constru ctor q u e el atri buto de la clase
int cont ;
for ( cont=S ; cont>O ; cont- - )
S y s t em . o ut . p r i n t ( c o n t ) ;
S y s t em . o ut . p r i n t ( c o n t ) ;
Pregu nta 6: Dados los sigu i e ntes fragmentos de cód igo ¿Cu á l de ellos asocia ría a una I nterfaz en Java ?
Pregu nta 7: De acu erdo a l a bibliografía básica ¿Qué significa insta nciar una clase?
Pregu nta 8: Dado el sigu i e nte cód igo, el resu lta do será :
c l a s s Mi C l a s e { p ub l i c i n t va l o r ; }
class Test {
pub l i c s t a t i c v o i d ma i n ( S t r i n g [ ] a r g s ) {
MiClase a l n e w Mi C l a s e ( ) ;
M i C l a s e a 2 = n e w Mi C l a s e ( ) ;
M i C l a s e a 3 = n e w Mi C l a s e ( ) ;
a l . va l o r= l S O ;
a 2 . va l o r= l 5 0 ;
a 3 = a2 ;
if (al a2 ) S ys t e m . ou t . p r i n t l n ( " UNO " ) ; }
if (al a3) S ys t e m . ou t . p r i n t l n ( " D O S " ) ; }
if (a2 a3) S ys t e m . ou t . p r i n t l n ( " TRE S " ) ; }
a. UNO
b. U N O TRES
c. UNO DOS TRES
d. TRES
c l a s s C l a s e Padre { }
c l a s s C l a s e H i j a l e x t e n ds C l a s e Pa d r e { }
c l a s s C l a s e H i j a 2 e x t e n ds C l a s e Pa d r e { }
y l a s siguientes insta nciaciones:
a . va rO = va r1;
b. va r2 = (Ci ase H ij a 2 )va r1;
c. va r2 = va r4;
d. va r1 = var2;
Pregu nta 10: ¿Qué ocu rrirá al com pilar y ejecutar el sigu iente cód igo?
pub l i c c l a s s M i C l a s e {
s t a t i c i n t va r i ab l e E s t a t i c a ;
pub l i c s t a t i c v o i d ma i n ( S t r i n g a r gv [ ] ) {
S ys t e m . o u t . p r i n t l n ( va r i ab l e E s t a t i c a ) ;
}
}
a . Error e n tiempo de ejecución. La va riable "va riable Estatica" no ha sido i nicia l izada
b. Se mostra rá e n panta l l a n u l l
c. Se mostra rá e n panta l l a 1
d . S e mostra rá e n pa nta l l a O
Pregu nta 11: De acuerd o a l a bibliografía básica ¿Qué significa sobreca rga r un métod o?
Pregu nta 12: ¿Qué se mostra rá en panta l la al ejecuta r el siguiente cód igo?
pub l i c s t a t i c vo i d ma i n ( S t r i n g a r gv [ ] ) {
AppB o t o n MiApp B o t o n= n e w AppB o t o n () ;
pub l i c App B o t o n ( ) {
B u t t o n b o t o n 1 = n e w B u t t o n ( " BOTON 1 " ) ;
B u t t o n b o t o n 2 = n e w B u t t o n ( " BOTON 2 " ) ;
add ( b o t o n 1 ) ;
add ( b o t o n 2 ) ;
setS i z e ( 1 0 0 , 1 0 0 ) ;
s e tVi s ib l e ( t ru e ) ;
}
}
a. Dos botones, u n o j u nto a otro ocupando todo el fra me. En el botón de la izqu ierda aparecerá BOTON 1 y e n e l
d e l a d e recha ap a recerá BOTO N 2 .
b. U n botón ocu pando todo el fra me con l a eti q u eta BOTON 1.
c. U n botón ocu pando todo el fra me con la etiq ueta BOTON 2.
d. Dos botones en l a pa rte superior del fra me, uno de ellos con la eti q u eta BOTO N 1 y otro d e ellos con la etiq u eta
BOTON 2.
Pregu nta 13: De acuerd o a l a bibliografía básica, ¿Cuál es la descripción q u e crees q u e define mejor el conce pto 'clase'
e n l a progra mación orienta da a objetos?
Pregu nta 14: De acuerd o a la bibliografía básica, el q u e una va riable en una clase sea estática implica
Pregu nta 15: Segú n e l cód igo siguiente ¿Qué se visu a l izará en panta l l a ?
c l a s s C l a s eA {
pub l i c C l a s eA ( int x ) {
S y s t em . o ut . p r i n t ( " C l a s eA- " + x) ; }
c l a s s C l a s e B e x t e n ds C l a s e A {
pub l i c C l a s e B ( ) {
supe r ( 6 ) ;
S y s t em . o ut . p r i n t ( " C l a s e B - " ) ; }
pub l i c c l a s s C l a s e P r i n c i p a l {
pub l i c s t a t i c v o i d ma i n ( S t r i n g [ ] args )
C l a s e B ob j B l = n e w C l a s e B ( ) ;
C l a s e B ob j B 2 ;
S ys t e m . ou t . p r i n t l n ( " FIN" ) ;
La práctica d e l prese nte cu rso ha sido u na versión del j uego "R-Type". A conti nuación se presentan las reglas d e l
j u ego ta l y como se sol icita ba para l a práctica del curso:
1. El juego comenzará c o n u na pa nta l l a de bienvenida a partir de la cual se pod rá sel eccionar el mod o d e j u ego
( FACI L, NORMAL, CO M P LICADO, I M POS I BLE) y comenzar a jugar.
2. El juego consta rá de u n ú n ico nivel donde el j ugado r deberá acabar co n una horda de naves a l i enígenas. El
n ú me ro d e a l i e nígenas con los que a ca b a r depend erá del modo de j uego seleccionado. Fácil= 10, Normal=15,
Co mpl icado= 20, l m posible=30.
3. El juga d or contro l a rá la nave aliada y d i spondrá de 1 sola vid a .
4. La s naves a l i e nígenas será n controladas por el ordenador.
S. La s naves a l i e nígenas no d ispara n.
6. No hay que implementa r re lieve. Es decir, no hay que mostra r ningún tipo de suelo o techo como e n e l j u ego
origi n a l .
7. L a nave a l ia d a pod rá moverse a rriba (Tecla Q), a bajo (Tecla A ) , izqu ierda (Tecla O) y derecha (Tecla P). Así m ismo
pod rá d isparar su laser util iza ndo l a tecla ESPACIO.
8. El á rea d e movimiento permitido para la nave será toda la pa nta lla, a u nq u e habrá que com proba r que la nave
no salga de estos límites.
9. El d isparo que rea liza l a nave a l i a d a es conti nuo, es decir, no es necesario espera r a que el misil d isparado
a ba ndone l a pa nta l l a para que la nave a l ia da pueda volver a d i sparar.
10. La nave a l ia d a sólo puede rea l izar u n tipo d e d isparo que se desplazará horizonta lmente hacia la de recha d e la
panta l la, sin va riar su trayecto ria y a veloci dad consta nte.
11. La s naves a l i e nígenas se m u even a ve locidad constante y pod rá n ser de dos tipos:
a . Nave Alienígena Tipo A . Apa recen p o r la pa rte derecha de la pa nta lla y s e m u even horizo nta lmente
hacia la izqu ierda a velocidad consta nte sin va riar su trayectoria, es decir, su coordenada "y" no va ria en
todo el desplaza m iento.
b. Nave Alienígena Tipo B. Apa recen por la pa rte derecha de la panta l l a y se mueven horizonta lmente
hacia la izqu ierd a a ve locidad consta nte. La pri nci pal d ife rencia con las N aves de Tipo A es q u e éstas
pueden va riar su trayectoria, es decir, en su desplazamiento hori zonta l pueden va riar su coord enada "y"
de ma nera a l eatoria.
12. La ve locidad a la que se mueven l a s naves a l ien ígenas d ependerá del modo de j uego sel eccionado. Tod as las
naves se m u even a la misma ve loci d a d .
13. C u a n d o las naves a l ien ígenas a l ca ncen la pa rte izqu ierda de la panta l la volverá n a aparecer p o r la pa rte d e recha
d e ésta .
14. Se d e berá n de detecta r dos ti pos de colisiones.
a. La s colisiones entre l a nave a l i a d a y las naves a l i enígenas, lo que supondrá el fi nal del j uego.
b. La s col isiones entre los m isiles d i sparados por la nave a l iada y las naves a l ie nígenas, lo q u e supondrá la
d estrucción de l a nave a l ie nígena contra la q u e ha choca do el misil.
1S. Si e l jugador fi na l iza el nivel del j u ego deberá aparecer u n mensaje de felicitación y se volvería a mostra r e l
menú inicial.
To mando como pu nto de partida l a práctica rea lizada, se pide i mplementa r a lgunas mejoras para q u e la nave a l iad a
d isponga d e u n escud o p rotector. Este escu do protector pod rá activa rse pulsando la tecla " E" y, en es e momento, h ará
q u e la nave sea i n morta l d u ra nte S segu ndos. El jugador d ispondrá inicialmente de 3 escu dos protectores q u e irán
d ismi nuyendo conforme éste los vaya a ctiva ndo.
a) [1,5 pu ntos] M u estre el d i agra ma de clases genera l q u e ha d iseñado en la práctica, explicando claramente la
fu nciona l id ad de ca da u na de l a s clases y sus métodos asociados.
b) [1,5 pu ntos] Explicar q u é clases de la práctica habría q u e mod ifica r para materia l izar los ca m bios sol icitados.
M uestre claramente las va riables de i nsta ncia nueva s que habría que defi ni r y los métodos que h a b ría q u e
implementa r, i ndicando en c a d a caso a q u é clases afecta ría n .
e) [2 puntos] Implemente las mod ificaciones propuestas.
d) [1,5 pu ntos] Explique razona d a m e nte qué cambios sería n necesarios en el d iseño que ha rea l izado en los
a pa rtados a nteriores para que a p a rezca n a leatori amente Bonus d e Escudos Protectores que la nave a l iad a
pueda recoger a l p a s a r por enc i m a de el los. El efecto de recoger u n bo nus de escu dos protectores será e l
a u m ento d e l n ú mero de escu dos d isponibles para su uso.
U N IVERSIDAD NACIONAL DE E D UCACIÓN A D ISTA N CIA - E S C U E LA TÉC N ICA S U P E RIOR DE I N G E N I E RfA
I N FORMÁTICA
7 1 9 0 1 072 - P ROGRAMACIÓN O R I E N TA DA A O BJ ETOS ( G RADO EN I N G E N IERfA I N FO R M ÁTICA /
T E C N OLOGÍAS D E LA I N FORMAC IÓN}
S EPTIE M B R E 2 0 1 3 - MODELO 0 - No ESTÁ PERM ITIDO E L USO DE MATERIAL ADICIONAL
Pregu nta 1: Seg ú n el texto de l a bibliografía básica de la asignatu ra, i ndi que cu á l de las sigu i e ntes
afirmaciones es correcta :
a . La signatu ra es el encabezado de u n método y pro porci ona la información necesaria para i nvocarlo.
b. La signatu ra está form a da por los parámetros de u n método y proporciona la información necesaria
para i nvoca rlo.
c. La signatura es el nom bre de un método y puede te ner pará m etros para proporcionar información
a d i cional p a ra realizar u na ta rea .
d . La signatu ra es el encabezado de u n método y puede tener pará metros para proporcionar
i nformación a d icional para rea l izar u na ta rea .
i:at. indice = 1 ;
boolean [ ] examen = new boolean [ 8 ] ;
boo lean poo = examen [ indice ] ;
I nd ica cual d e l as sigu i e ntes afirmaciones es correcta en relación a l va lor de la va riable poo.
Pregu nta 3: Segú n el texto de l a bibliografía básica de la asignatu ra, i n d i q u e cu á l de las sigu i e ntes
afirmaciones es correcta :
a . Los ca m pos s e conocen como va riables de objeto.
b. El a l ca nce de una va riable defi ne la secci ón de cód igo desde donde la va riable puede ser d eclara d a .
c. Los constructores permiten q u e cada objeto sea preparado adecu a d a m ente cuando es creado.
d. El tiempo de vida de u na va riable describe el n ú m ero de veces q u e es utilizada en u n método.
Pregu nta 4: Dado el sigu iente fragmento d e cód igo, i ndi que cuál de las siguientes afirmaciones es el
resultado d e su ejecución:
Pregu nta 5: Segú n el texto de l a bibliografía básica de la asignatu ra, i n d i q u e cu á l de las sigu i e ntes
afirmaciones es correcta :
a . Los ca m pos s e defi nen dentro de l o s constructores y de l o s métodos.
b. Los ca m pos se usan para a lmacenar datos q u e nu nca persisten d u ra nte la vida del objeto.
c. Los ca m pos tienen un tiempo de vida q u e perd u ra después de term i n a r el objeto.
d . La accesi bilidad de l o s ca m pos s e exti ende a tod a clase y p o r este motivo pueden usarse d entro d e
cua l q u ier constru ctor o método de c las e en la q u e estén d efi nidos.
Pregu nta 6: Segú n el texto de la bibliografía básica de la asignatu ra, i ndi que cuales de las siguientes
expresiones resu lta n verda d eras:
l. 4 < 5 )
2. 2 > 2 ) 1 1 ( ( 4 --
4 ) && ( 1 < o )
3. 2 > 2 ) 1 1 ( 4--
4 ) && ( 1 < o )
4. 2 > 2 ) 1 1 ! ( ( 4 --
4 ) && ( 1 < o )
5. 34 ' = 33 ) & & ! fa 1 s e
a. La s expresiones 4 y S .
b. La s expresiones 3 y 4 .
c. La s expresiones 2 y 4 .
d. La s expresiones 3 y S .
Pregu nta 7: Segú n el texto de l a bibliografía básica de la asignatura, i n d i q u e cual de las siguientes
afirmaciones es correcta :
a. U n objeto de tipo String puede ser modificado una vez q u e está creado, por ta nto no e s u n ejemplo
d e objeto i nmutable
b. La clase String tiene u n método de nombre trim que permite mod ifica r caracteres en cu a l q u ie r
posición de u na cadena
c. Como regla genera l, l a s cadenas de texto de tipo Stri ng se suelen comparar media nte el operador
d. U n objeto es i nm utable si su contenido o su esta do no puede ser ca m biado una vez que se ha
creado
Pregu nta 8: Segú n el texto de l a bibliografía básica de la asignatura, i n d i q u e cual de las siguientes
afirmaciones es correcta :
a. El térm ino acopla m iento describe cuá nto s e aj usta una unidad de cód igo a una tarea lógica o a u n a
entidad
b. El acopla m iento describe l a conectivi dad de los propios objetos d e una clase
c. U n enca ps u l a miento a p ropiado en l as clases red uce el acoplamiento
d. U n sistema debilmente acoplado s e ca racte riza por la i mposibilidad de modifica r una de s u s clases
sin te ner que rea l izar ca m bios en ninguna otra
Pregu nta 9: Dado el siguiente fragmento de cód igo q u e prete nde mostra r un ejemplo de sobrescritu ra :
class Examen {
private f loat pregunta = l . O f ;
protected f loat getNota ( ) { return pregunt a ; }
}
I n d i q u e cual de l a s siguientes opciones completa ría el cód igo a nterior para d a r lugar a u n ejemplo correcto
de sobrescritura :
Pregu nta 10: Seg ú n el texto de l a bibliografía básica de la asignatu ra, i ndi que cual de las siguientes
afirmaciones es correcta :
Pregu nta 11: Dado el siguiente fragmento de cód igo, i ndi que cuál de las sigu i e ntes afi rmaciones es el
resultado d e su ejecución:
Pregu nta 12: Segú n el texto de la bibl iografía básica de la asignatu ra, i ndi que cual de las siguientes
opciones d eclara rá un método en una clase q u e fuerza a una su bclase a implementa rlo:
Pregu nta 14: En el sigu iente fragmento de cód igo hemos defi nido la ejecución de cinco bloques. Estos
bloques se ejecutará n dependiendo de l a s excepciones q u e se prod u zca n en ca da caso.
try {
} finally {
a. El Bloque4 no s e ejecuta rá s i s e prod uce u n a exce pción de tipo a ritmético en el Bloq ue2
b. El Bloque4 se ejecuta rá a ntes de q u e la exce pción prod ucida por u n acceso a u n objeto nu/1 en e l
Bloq ue 2 se propague ha c i a a rriba
c. El Bloque4 no se ejecuta rá si se prod uce un acceso a un objeto nu/1 en el Bloq ue2
d. El Bloque4 s e ejecuta rá a ntes q u e el Bloque3 s i s e produce u n a exce pción de tipo a ritmético e n e l
Bloq ue 2
Pregu nta 15: Segú n el texto de la bibl iografía básica d e la asignatura, i n d i q u e cuál de las sigu i e ntes
afirmaciones es correcta :
a . En Javadoc l a eti q u eta @ pa ra m i ndica el nú mero de pará metros del método
b. En Java doc l a eti q u eta @ dep recated ind ica q u e el va lor d evuelto por el método puede conte ner
e rrores
c. En Javadoc l a eti q u eta @ see ind ica una referencia cru zada
d. En Javadoc l a eti q u eta @throws ind ica el modo en que debe ser lanzado u n método
PARTE PRÁCTICA [6,5 PU NTOS] :
La práctica d el presente c u rso ha sido u n a versión del j uego "R-Type". A conti nuación se presenta n las
reglas d e l juego ta l y como se sol icita ba para la práctica del curso:
Se pide d iseñar utilizando u na a proxi mación orienta da a objetos una a m pl iación a la práctica rea l izada
a l o l a rgo d e l cu rso que permite l a existe ncia d e u n nuevo tipo de nave a l i enígena (Ti po C).
Este n uevo tipo de nave es u na mod ificación de la nave Tipo A, con la pa rticu l a ridad de q ue, cuando
a lcanza l a pa rte izq u ierda, en l ugar de aparecer por la pa rte derecha, lo q u e hace es desplazarse d e
izqu ierda a d e recha, ha sta q u e a lcanza nu eva me nte el límite derecho, volviendo entonces a desplazarse
hacia la izqu ierda (y así sucesivame nte ha sta ser destru ida).
En u n momento determ inado, sólo puede haber una nave de Tipo C en el j uego, y no se puede cre ar
otra mientras l a a nterior de es e t i p o no haya s i do destru ida. Además, como máximo, se pod rá n generar 2
naves de Tipo C en el modo Fácil; 3 en el modo Normal; 4 en el modo Co mplicado y 5 en el modo I mposible.
Se pide:
a. Línea 5.
b. Línea 3.
c. Línea 2.
d. Línea 1.
Pregunta 6: Sea el siguiente fragme nto de cód igo modificado de la clase Ma i l i t em mostra da en el li bro
d e texto:
1 pub l i c c l a s s Ma i l i t e m {
2 s t at i c int num1 10 ; =
5 new Ma i l i t e m ( ) ;
6 }
7 pub l i c Ma i l i t e m ( ) {
8 int aux thi s . num2 ;
=
9 i f ( aux > 1 ) {
10 S y s t em . out . print ln ( aux ) ;
11 }
12 }
13 }
Pregunta 8: Dado q u e u n elemento But t o n puede propici a r el lanzam iento d e u n A c t i o nEvent, ¿qué
tipo d e listener habría q u e i mplementar en l a clase q u e q u iera gestionar este evento?
a. W i n dowL i s t e n e r
b. ActionL i s tener
c. C omp o n e n t L i s t e n e r
d. PushL i s te n e r
Pregunta 9 : ¿ E n q u é condiciones puede volverse a invocar u n constru ctor de una clase para u n objeto
después de q u e ese o bjeto haya sido creado?
a. Cuando q u eremos resetea r tod os los ca m pos del objeto a sus va lores i niciales.
b. Cuando se ha creado u n objeto abstracto y se le q u iere d a r va lores iniciales a sus atributos.
c. Cuando se i mplementa una i nterfaz para el objeto en cu esti ón.
d. N u nca .
Pregunta 10: Sea el siguiente cód igo modificado de la clase Mu s i c O r ga n i z e r mostrada en el li bro base:
1 i mp o r t j ava . u t i l . * ;
2 pub l i c c l a s s Mu s i c O r g a n i z e r
3 pub l i c s t a t i c v o i d ma i n ( S t r i n g a r g s [ ] ) {
4 A r r a yL i s t < S t r i n g> a = n e w Ar r a yL i s t (5) ;
5 f o r ( i n t i = O ; i <= 5 ; i + + )
6
7 a . a dd ( " Ho l a " ) ;
8
9 S y s t em . o ut . p r i n t l n ( " Fu n c i o n a " ) ;
10
11
¿Cuál es el resu lta do d e com p i l a r y ejecuta r este código?
a. S e prod uce u n error de ejecu ción a l defi ni r u n A r r a yL i s t de S elementos y q u e rer inse rtar 6
elementos.
b. No se prod u ce n i ngú n tipo de error y proporciona el resu ltado por panta l l a "Fu nciona".
c. La línea 4 provoca u n warn ing pero se ejecuta sin problemas proporcionando el resu ltad o por
panta l la "Fu nciona".
d. La línea 7 provoca u n warn ing pero se ejecuta sin problemas proporcionando el resu ltad o por
panta l la "Fu nciona".
Pregunta 11: ¿Cómo se l l a m a el entorno de pruebas que soporta la prueba estructurada de u nidades y las
pruebas d e regresión en J ava ?
a. JDK
b. J Boss
c. Javadoc
d. J U nit
Pregunta 14: S i u n a clase B exti ende u na clase abstracta A q u e tiene u n método abstracto me t, ¿qué
pod emos afirmar?
La p rá ct i ca d e l p rese nte cu rso ha sido u n a ve rsi ó n d e l l ege nda rio a rcade "Pac-M a n" . A
co nti n u ación se m uestra la p ro p uesta d e l j u ego t a l y co m o se s o l i cita ba pa ra la p rá ctica d e l c u rso.
1. E l j uego consta rá de un solo n ive l donde el j ugador d e b e rá co m e r todos los p u ntos d e la
pa nta l l a .
2. E l j ug a d o r co ntro l a rá a P a c- M a n y d is p o n d rá de 1 vi d a .
3. Los fa nta s m a s se rá n contro l a d os p o r e l o rd e n a d o r te n i e ndo e n cue nta e l co m po rta m i e nto
d ife re nte d e cada u no .
4. P a c- M a n pod rá m overse ( Ut i l iz a n d o l a s fl echas d e l teclado) a rri ba (Tecla U p ), a bajo (Tecla
Dow n), i zq u i e rda (Tecla Left) y d e recha (Tecla Right). Así mismo pod rá pa usa r e l j uego
p u l s a n d o la tecla "P" .
5. El á rea de m ovi m i e nto p e rm itido pa ra Pac- M a n y los fa nta s m a s s e rá e l m a pa d e l ú n ico
n i ve l d i s po n i b l e .
6. S e rá necesa rio co m p ro ba r q u e ta nto Pac- M a n co m o los fa nta s m a s n o su p e re n los l ím ites
del m a p a .
7. Los ca m i nos d e l m a pa so lo p e rm it e n e l p a so d e u n i n d ivid uo a l m i s m o t i e m po, por ta nto
h a b rá q u e t e n e r en cue nta las co l isiones.
8. Los fa nta s m a s d e b e n i m p l e m e n ta r co m po rta m i e ntos d ife re ntes:
a. B l i n ky, e l fa nta s m a rojo, b usca rá co l i s i o n a r con Pac-M a n . P a ra acerca rse a Pac- M a n
ca l c u l a rá l a d ista ncia ( po r eje m p l o m e d i d o e n fi l a s y co l u m na s ) e i nte nta rá p ri m e ro
acerca rse ve rtica l m e nte y l uego h o ri zo nta l m e nt e .
b. P i n ky. B usca rá co l i s i o n a r con Pac-M a n . Pa ra acerca rse a P a c- M a n ca lcu l a rá l a
d i sta ncia ( po r eje m p lo m e d i d o e n fi l a s y co l u m na s ) e i nte nta rá p ri m e ro a ce rca rse
h o ri zo nta l m e nte y l u ego ve rtica l me nte .
c. Clyd e . É l no p e rsigue a P a c- M a n, si no que dea m b u l a s i n u n a ruta es pecifica .
9. Se d e b e rá n d e detecta r dos ti pos d e co l isiones.
a. La s co l is i o n e s e nt re Pac- M a n y los fa nta s m a s, l o q ue s u p o n d rá la p é rd ida de u na
vida o e l fi n a l d e l j uego e n caso de no d i s p o n e r de m á s vidas.
b. La s co l i si o n e s e nt re los fa nta s m a s, q ue su pond rá u n ca m b io de d i rección e n los
fa nta s m a s i nvo l ucra d o s .
10. H a b rá cuatro p u ntos m á s gra ndes de lo n o rm a l s i t u a d o s ce rca de l a s esq u i n a s d e l la beri nto
y proporci o n a rá n a P a c- M a n la h a b i l id a d te m po ra l (5 seg u ndos) de co m e rse a los
fa nta s m a s (todos e l los se vuelven a z u les m i e nt ra s Pac- M a n t i e n e esa h a b i l i d a d ) . Después
de h a be r sido t ragados, los fa nta s m a s se rege n e ra n e n " casa de fa nta s m a s " .
11. S e rá necesa rio i m p l e m e nta r u n conta d o r con los p u ntos o bte n i dos e n cada m o m e nto,
t e n i e n d o en c u e nta los o bjetos co m idos. U n p u nto p e q u e ñ o s u po n e 10 p u ntos. Co m e r u n
fa nta s m a 100 p u ntos.
12. Si el j uga d o r fi na l i za el n ive l del j uego d e b e rá a p a rece r un m e nsaje de fe l icita ción y se
volve ría a m o st ra r la pági na i n icia l .
a) [ 2 puntos] D i se ñ a r uti l i za ndo u n pa ra d i g m a orie ntado a o bjetos, los e l e m e ntos necesa rios pa ra
la a p l ica c i ó n e x p l i ca d a de la p rá ctica d u ra nte el c u rso. Es necesa rio i d e ntifica r la estruct u ra y
l a s re l a ci o n e s de h e re ncia y de u so de l a s clases n ecesa ri a s p a ra a l m a ce n a r y gest i o n a r esta
i n fo r m a ció n . D e be h a ce rse uso de los m eca n i smos de h e re ncia si e m p re q u e sea posi b l e . Se
va l o ra rá u n b u e n d iseño q ue favorezca la re util ización de código y fac i l ite su m a nte n i m ie nto.
b) [1,5 puntos] I m p l e m e nta la c l a se F a n t a s ma S u s t o . Este fa nta s m a l o q u e h a ce es h u i r del
Pregu nta 1: Si la primera pa rte de una clase TicketMachine tuviera la sigu i e nte estructura :
Pregu nta 3: Hay u n a clase M essage Post q u e hereda de otra Post. Si a m bas clases tuviera n la sigu i e nte
estruct ura :
c l a s s Post {
pub l i c String men s a j e = " En P o s t " ;
p . envi arMe n s a j e ( ) ;
}
}
¿Cual sería e l resulta do de ejecuta r el método m a i n ? :
a . En Post E n Post
b. En Message Post E n Post
c. En Post E n M essagePost
d . En Message Post E n M essagePost
Pregu nta 4: ¿En BlueJ, cómo se pueden ver los métodos que tiene una l i brería del siste ma como
java . l a ng.Stri ng? :
a . En e l m e n ú 'Ed it(Ed itar)' h a y u na entrada para ma nej ar las clases en la li brería .
b. En e l menú 'View(Vista)' hay u na entrada para ma nej ar las clases en la l i brería .
c. En el menú 'Tools(H erra m i entas)' hay una entrada para ma nej ar las clases en la l ibre ría .
d . N o s e puede hacer en Bl ueJ.
Pregu nta 5: E n una simu l a ción de los zorros y los conejos se puede defi ni r una clase abstracta Anima l . En
u na versión d e l a s i m u lación, el cód igo pod ría ser:
import j ava . ut i l . Li s t ;
ab stract c l a s s Animal {
String nombre = " Animal " ;
pub l i c c l a s s Z orrosCone j o s {
pub l i c s t at i c void main ( S tring [ ] args ) {
Z orro z = new Z orro ( ) ;
S y s t em . out . print ln ( z . nombreAnimal ( ) ) ;
}
}
Pregu nta 6: ¿Cuál sería l a signatu ra de u n método p ú b lico suma que tenga u n parámetro que es u n a rray
d e i nt y q u e d evuelva un int?:
Pregu nta 8: En u n reloj d igita l la clase ClockDisplay gestiona las horas y los m i nutos. Se pod ría a ñ a d i r un
método a l a rma para comprobar para a ctiva r u n despertador:
Pregu nta 9: En la práctica de este año hay q u e crear un ta blero para el j uego Pacm a n . Para ello se puede
d i buja r un a matriz de cuadros negros, dejando otros en bla nco. ¿Cu á l de los siguientes métodos nos
permite d i bujar u n cu a d ra do negro entero en la panta l la ? :
EstudianteDeDoctorado
a. 1, 2,3,4
b. 1,2,3
c. 2,3,4
d. 1, 2,4
Pregu nta 12: ¿ Existen varios modelos para la construcción de software. ¿Cuáles son dos de los más
conoci dos?:
Pregu nta 13: En el orga nizador de m ú sica podemos usar un Arraylist para guard a r los nom bres d e las
ca nciones:
¿Qué habrá q u e poner en vez de los XXX para q u e a l ejecutar mai n el progra ma pro duzca el res u ltado
"Exi ste l a ca nción?: true"?
Pregu nta 14: En l a s d ife rentes versiones de un proyecto del j uego z u u l se pueden plantea r d ife rentes
versiones del método getExitString; por ejemplo:
Pregu nta 15: E n un visor de imágenes se usa botones para q u e el usu a rio pueda cambiar el tamaño d e la
i magen; por ejemplo:
¿Qué tipo d e Listener habrá q u e usar (donde está n los XXX en el cód igo a nterior) para detecta r q u e e l
u s ua rio ha h e c ho clic en el botón?
La p rá ctica del p rese nte c u rso ha sido una versión del lege nda rio a rca d e "Pac-M a n" . A
co nti n u ación se m uestra la p ro p uesta d e l j u ego ta l y co m o se sol icita ba pa ra la p rá ctica d e l c u rso .
2- E l j ug a d o r co ntro l a rá a P a c- M a n y d is p o n d rá de 1 vi d a .
3- Los fa nta s m a s se rá n contro l a d os p o r e l o rd e n a d o r te n i e ndo e n cue nta e l co m po rta m i e nto
p u l s a n d o la tecla "P" .
n i ve l d i s po n i b l e .
11- S e rá necesa rio i m p l e m e nta r un conta d o r con los p u ntos o bte n i d o s e n cada m o m e nto,
Pregu nta 1: Ind ica cual de las sigui entes declaraciones es vá lida para el método m a i n :
Pregu nta 2: Ind ica cual de las sigui entes afirmaciones es correcta :
Pregu nta 3: Ind ica cual de las sigui entes afirmaciones es correcta :
a. U n d e pu rador es u na herra m i enta de software q u e ayuda a exa m i n a r cómo com pila una aplicación.
b. U n a llamada a método interno consiste en que los métodos pueden llamar a otros métod os d e la
m isma clase como pa rte de su implementa ción.
c. U n a llamada a método exte rno consiste en que los métodos pueden l l a m a r a métodos de otras
clases abstractas usando la nota ción de pu nto.
d. Los objetos pueden crea r otros objetos usando el operado r "i nsta nceof" .
Pregu nta 4: Su pongamos que q u e remos implementa r una Agenda, ¿cuál sería la salida del sigu i e nte
código?
pub l i c c l a s s Agenda {
protected Agenda ( ) {
for ( int i = O ; i< l O ; i ++ ) {
S y s t em . o u t . print ln ( i ) ;
}
}
}
a. El l e nguaje J ava tiene tres tipos de ciclo: whi le, while-do y for.
b. Un ciclo while es similar en su estru ctu ra y propósito q u e el ciclo for-each.
c. El tipo d e la va riable de ciclo no tiene porq ué ser el mismo que el tipo del elemento declarado para
la colección q u e esta mos recorriendo con u n ciclo.
d. U n índ ice es u n objeto q u e proporciona fu nciona l idad para recorrer todos l o s elementos de u n a
colección.
Pregu nta 6: Dado el siguiente fragmento d e cód igo, i ndi que cuál de las siguientes afirmaciones es el
resultado d e su ejecución:
Pregu nta 7: Ind ica cual de las sigui entes afirmaciones es correcta :
a. La prueba es la actividad de descu brir si una pieza de cód igo prod uce el comporta mie nto
pretendido.
b. U n a a serción es u na expresión q u e esta b lece u n a cond ición q u e esperamos q u e resu lte verdad e ra .
c. Un segu imiento es la a ctividad de tra baj ar a través de un segme nto de cód igo línea por línea,
m ie ntras se observa n ca m bios de estado y otros comportami entos de la aplicación.
d. Tod as las respuestas a nteriores son correcta s.
Pregu nta 9: Basado en el eje m plo de la Base de Datos de CDs y DVDs visto en la asignatura en el capítu lo 8,
¿cuál sería la salida del siguiente cód igo?
pub l i c c l a s s B a s eDeDatos {
a. Error en tiempo de com pi lación i ndicando q u e una clase con métodos fi nales deben s e r declarada
ta m bién como fi na l .
b. Error e n tiempo de co mpilación ind icando q u e no se puede heredar de una clase con métod os
fi n a les.
c. Error e n tiempo de ejecución ind icando q u e Base De Datos no ha sido definida como fin a l .
d. Éxito en la com pil ación y salida " Agrega r Elemento".
Pregu nta 11: I n d ica cual de las sigu i e ntes afirmaciones es correcta :
Pregu nta 12: Dado un visor de i mágenes, ¿Cuál sería la salida del sigu i e nte código?
P u l s ador ( ) {
Button BotonHol a=new Button ( " Ho l a " ) ;
Button Boto sAdios =new Button ( " Adi o s " ) ;
add ( BotonH o l a ) ;
add ( Boto sAdios ) ;
setSize ( 3 0 0 , 3 0 0 ) ;
s etVi s ib l e ( true ) ;
}
}
a. Dos botones u no a l l a d o del otro ocu pando todo el ma rco, "Hola" en la izqu ierda y "Ad ios" e n l a
d e recha.
b. Dos botones u no encima del otro d iciendo, "Hola" a rriba y "Ad ios" a bajo.
c. Un solo botón ocupando el m a rco entero d iciendo "Hola".
d. U n solo botón ocupando el m a rco entero d i ciendo "Ad ios" .
Pregu nta 13: Te niendo en cuenta el modelo en cascada prese nte en la constru cción del softwa re, ind ica
cual de l as sigu i e ntes fa ses N O perte nece a l desa rro llo de software :
a. Anál isis del problema.
b. Prueba U nita ria.
c. Prueba Secu encia l .
d. Entrega del sistema a l cliente.
Pregu nta 14: ¿Cuál sería l a salida del siguiente cód igo?
int i = l ;
swi t c h ( i ) {
case 0 :
S y s t em . ou t . print ( " c ero " ) ;
break ;
case 1 :
S y s t em . ou t . print ( " uno " ) ;
case 2 :
S y s t em . o u t . print ( " dos " ) ;
break ;
de fault :
S y s t em . ou t . print ( " otro " ) ;
}
a. uno
b. un o otro
c. un o dos
d. un o dos otro
Pregu nta 15: I n d ica cual de las sigu i e ntes afirmaciones es correcta :
La p rá ctica del p rese nte c u rso ha sido una versión del lege nda rio a rca d e "Pac-M a n" . A
co nti n u ación se m uestra la p ro p uesta d e l j u ego ta l y co m o se sol icita ba pa ra la p rá ctica d e l c u rso .
pa nta l l a .
2- E l j ug a d o r co ntro l a rá a P a c- M a n y d is p o n d rá de 1 vi d a .
3- Los fa nta s m a s se rá n contro l ados p o r e l o rd e na d o r te n ie ndo e n cue nta e l co m po rta m i e nto
p u l s a n d o la tecla "P" .
n i ve l d i s po n i b l e .
6- S e rá necesa rio co m p ro ba r q u e ta nto Pac- M a n co m o los fa nta s m a s no su p e re n los l ím ites
del m a p a .
11- S e rá necesa rio i m p l e m e nta r un conta d o r con los p u ntos o bte n i dos en cada m o m e nto,
pub l i c c l a s s Mu s icOrgan i z e r
{
private int valor ;
pub l i c int c a l c u l ar ( )
{
int r e s u l t ado= ! ;
int numero=valor ;
if ( va lor>= ! )
{
whi le ( numero>= l ) {
r e s u l t ado* =numero ;
numero- - ;
}
return r e s u l t ado ;
}
else{
return 1 ;
}
}
}
a. 24
b. 6
c. 120
d. o
Pregunta 6: Se ha visto en la asignatura u na clase Message Post q u e hereda de otra Post. Si a m bas clases
tuviera n la siguiente estruct u ra :
c l a s s Post {
pub l i c String men s a j e = " En P o s t " ;
a. La ejecución de l a s pruebas pasa da s previamente para asegu rarse de q u e la nueva versión aún las
pasa.
b. La ejecución de pruebas a utomatiza das a leatorias sobre los d istintos va lores q u e puede reci bir la
c l a se eva l u a d a .
c. La a p l i cación sistemática del conj u nto de casos de prueba base q u e se defi nieron j usto al comenzar
con e l desarrollo de l a a p l icación y q u e no varía n nu nca a lo largo d e éste.
d. El conju nto de pruebas negativas necesa rias para demostrar q u e la clase eva l u ada fa l l a .
Pregunta 8: En u na simu l a ción de l o s zorros y l o s conejos s e p u e d e defi ni r una clase abstracta Anima l . E n
u na versión modifica da de la simu lación el cód igo pod ría ser:
import j ava . ut i l . Li s t ;
ab stract c l a s s Animal {
String nombre = " Animal " ;
pub l i c c l a s s Z orrosCone j o s {
pub l i c s t at i c void main ( S tring [ ] args ) {
Animal z = new Z orro ( ) ;
S y s t em . out . print ln ( z . nombreAnimal ( ) ) ;
}
}
Pregunta 9 : Dado el cód igo de l a clase MusicOrga nizer. ¿Cu á l sería el res ultado de la ejecución del método
m a in ?
pub l i c c l a s s Mu s icOrgan i z e r
{
pub l i c Mu s icOrgani z er ( )
{ f i l e s = new ArrayL i s t< S tring> ( ) ; }
pub l i c void addF i l e ( String f i lename )
{ f i l e s . add ( f i lename ) ; }
mo . l i s t F i le ( l ) ;
mo . remove F i l e ( l ) ;
mo . l i s t F i le ( l ) ;
}
}
a. Di sco 2 n u l l
b. Error e n tiempo de ejecución
c. Di sco 1 Disco 2
d. Di sco 2 Disco 3
Pregunta 10: Dado el sigu i e nte fragmento de cód igo, pod emos afirm a r q u e la salida del progra m a :
pub l i c c l a s s T e s t
{
pub l i c s t at i c void main ( S tring [ ] args ) {
a. 1
b. 1y4
c. 1,2 y 4
d. 4
pub l i c c l a s s P o s t
{
pub l i c String toString ( ) {
pub l i c c l a s s T e s t
{
pub l i c s t at i c void main ( S tring arg s [ ] ) {
Post p = new Me s s agePost ( ) ;
S y s t em . out . print ln ( p ) ;
}
}
Pregunta 14: En el cód igo li breta de d i recciones ( a d d ress book) explicado en el li bro d e texto se hace uso d e
las a serciones.
Pregunta 15: I n d i q u e cual de las siguientes afirmaciones relativas al uso de excepciones en Java es fa lsa :
a. La s excepciones com proba da s están pensadas para aq uel los casos en los q u e el cliente debería
espera r q u e u na o peración pueda fa l la r.
b. La s excepciones no comprobadas están pensadas para aq uel los casos q u e nu nca debería n fa l l a r
d u ra nte la operación norm a l .
c. La s excepciones no comprobadas heredan de la clase Error.
d. La s excepciones com proba da s heredan d e la clase Exce ption.
La p rá ctica del p rese nte c u rso ha sido una versión del lege nda rio a rca d e "Pac-M a n" . A
co nti n u ación se m uestra la p ro p uesta d e l j u ego ta l y co m o se sol icita ba pa ra la p rá ctica d e l c u rso :
Pregu nta 1: Ind ica cual de las sigui entes afirmaciones es correcta :
a. Los métodos pueden d evolver información de a lgún objeto media nte u n va lor de retorno.
b. Los métodos siem pre tienen pará m etros con los q u e obtener la i nformación necesa ria.
c. A partir de u na clase ta n solo se puede crear u n solo objeto.
d. El esta d o de l o s objetos s e representa media nte los métodos i mple mentados.
i n t estudiante = 1 ;
b o o l e a n [] mat ri culas = n ew b o o l e a n [3] ;
b o o l e a n ap robado = mat ri culas [estudi ante] ;
I nd ica cual de l as sigu i e ntes afirmaciones es correcta en relación a l va lor de la va riable ap robado.
Pregu nta 3: Ind ica cual de las sigui entes afirmaciones es correcta :
Pregu nta 4: Su pongamos que q u e remos implementa r una Agenda, ¿cuál sería la salida del sigu i e nte
código?
Pregu nta 5: Ind ica cual de las sigui entes afirmaciones es correcta :
a. El l e nguaje J ava tiene tres varia ntes del ciclo for : for-each, for y far-d o.
b. U n ciclo while es similar en su estru ctu ra y propósito q u e el ciclo for-each.
c. El tipo de la va riable de ciclo no tiene porq ué ser el mismo q u e el tipo del elemento declarado para
la colección q u e esta mos recorriendo con u n ciclo.
d. U n índ ice es u n objeto q u e proporciona fu nciona l idad para recorrer todos l o s elementos de u n a
colección.
Pregu nta 7: Ind ica cual de las sigui entes afirmaciones es correcta :
a. La prueba es la actividad de descu brir si una pieza de cód igo prod uce el comporta m ie nto
pretendido.
b. U n a a serción es u na expresión q u e esta b lece u n a cond ición q u e esperamos q u e resu lte verdad e ra .
c. Un segu imiento es la a ctividad de tra baj ar a través de un segme nto de cód igo línea por línea,
m ie ntras se observa n ca m bios de estado y otros comportami entos de la aplicación.
d. Tod as las respuestas a nteriores son correcta s.
a. U n objeto de tipo String puede ser modificado una vez q u e está creado, por ta nto no e s u n ejemplo
d e objeto i nmutable
b. La clase String tiene u n método de nombre trim que permite mod ifica r caracteres en cu a l q u ie r
posición de u na ca dena
c. La s ca denas de texto de tipo Stri ng solamente se pueden com pa ra r media nte el operador "=="
d. U n objeto es i nm utable s i su contenido o su esta d o no puede s e r ca mbiado una vez q u e s e h a
creado
Pregu nta 9 : Basado en el ejemplo de la Base de Datos de CDs y DVDs vi sto en la asignatu ra en el ca pítulo 8,
¿cuál sería la salida del siguiente cód igo?
public class B a s e De Da t o s {
a. Error en tiempo de com pi lación i ndicando q u e una clase con métod os fi nales deben s e r declarada
ta m bién como fi na l .
b. Error e n tiempo de co mpilación ind icando q u e no se puede heredar de una clase con métod os
fi n a les.
c. Error e n tiempo de ejecución ind icando q u e Base De Datos no ha sido definida como fi nal.
d. Éxito en la com pil ación y salida " Agrega r Elemento".
a. El térm ino acopla m iento describe cuá nto s e aj usta una u n idad de cód igo a u n a tarea lógica o a u n a
entidad
b. El acopla m iento describe l a conectivi dad de los propios objetos d e una clase
c. U n enca ps u l a miento a p ropiado en l as clases red uce el acoplamiento
d. U n sistema debilmente acoplado s e ca racte riza por la i mposi bilidad de mod ificar una de s u s clases
sin tener q u e rea l izar ca m bios en n i nguna otra
Pregu nta 11: Dado el sigu i e nte fragmento de cód igo q u e prete nde mostra r un ejem plo de sobrescritura :
c l a s s Examen{
private f loat pregunta = l . O f ;
protected f loat getNota ( ) { return pregunt a ; }
}
extends Examen {
c l a s s Test
private f loat nota = 2 . 0f ;
I n d i q u e cual de l a s siguientes opciones completa ría el cód igo a nterior para d a r lugar a u n ejemplo correcto
de sobrescritura :
Pregu nta 13: En el sigu iente fragmento de cód igo hemos defi nido la ejecución de cinco bloques. Estos
bloques se ejecutará n dependiendo de l a s excepciones q u e se prod uzca n en ca da caso.
try {
} finally {
Pregu nta 15: I n d ica cual de las sigu i e ntes afirmaciones es correcta :
a. La interfa z de u na clase describe l o q u e hace la clase y cómo puede usarse p u d iendo mostra r pa rte
de su implementa ción.
b. U n mapa es u na colección q u e a l macena entradas d e ternas de va lores ll ave/va lor/posición.
c. La documentación de u na clase debe ser suficientemente deta l l a d a como para que otros
progra madores puedan usar la clase sin necesidad de leer su i mple mentación.
d. Los modificadores de a cceso defi nen las restricciones d e uso de u n objeto para determi nados
métodos, constructores o cam pos.
PARTE PRÁCTICA [6,5 PU NTOS] :
La práctica d e l presente c u rso ha sido u na termi nal pu nto de venta (por sus siglas, TPV) q u e ha servi do para
estu d i a r y practicar los meca nismos de la P rogra m a ción Orientada a Objetos.
Segú n la Wikipedia (www.wiki pedia.org), un termi nal pu nto de venta (cuyo acrónimo es TPV hace referencia
a l d ispositivo y tecnol ogía s que ayu d a n en l a ta rea de gestión de u n esta blecimiento co mercial de venta al
públ ico que puede conta r con sistemas i nfo rmáticos especi a l i zados media nte una i nterfaz accesible para los
vended ores.
Los TPV permiten la creación e i m p resión del tiq ue de venta mediante las referencias de prod uctos, rea l izan
d ive rsas operaciones d u ra nte todo el proceso de venta, así como ca mbios en el inventa rio. Ta m bién
ge nera n d iversos reportes que ayu d a n en la gestión del negocio. Los TPV se co mponen de una pa rte
h ardware (dispositivos físicos) y otra software (sistema operativo y progra ma de gestión).
En nuestro caso concreto, el hadwa re será u n o rdenador tipo PC o similar y nu estro softwa re será u n a
a pl icación d esarro l l a da en J ava q u e se ejecuta rá sobre d icho equ ipo.
Funcionalidades
Los TPV permite n la i mplementación desde l a bores simples de gestión de una venta, hasta operaciones más
com plejas como es la gestión de a l macén o i nventa rio, gestión de facturación o gestión de clientes. En esta
práctica, se propondrá diferentes fu ncionalidades para el sistema de gestión del TPV:
•
Lleva r u n control de d ife rentes elementos q u e existen en nuestro esta bleci miento. Así, los
prod uctos habrá n de estar identificados en el sistema por, a l menos, los sigui entes datos: cód igo
d escri ptivo (por ejem plo, el cód igo de ba rras), descripción, precio u n itario sin IVA, IVA apl ica ble,
precio u n itario con IVA, cantidad d i spo nible en stock.
• El sistema debe permiti r d a r de a lta nu evos prod uctos, d a r de baja prod uctos existentes así como
modifica r los datos del m ismo.
• Rea lizar la i mporta ción y/o expo rta ción de los prod uctos a/d esde ficheros (u otro método sim i l a r
q u e e l a l umno considere en su l ugar).
• Lleva r u n control de l a s d ife rentes ventas q u e se prod u cen. Así, el sistema deberá l leva r u n control
d e ti ckets generad os, de modo q u e cada ticket se considera rá una ve nta . Cada ticket tiene q u e
te ner u n cód igo de identifica dor ú n ico. U na forma de genera r u n cód igo ú nico pod ría s e r d e la
forma AAAA M M D D H H M M, donde AAAA es el año en cu rso, M M el mes en q u e se genera la venta,
DD e l d ía de l a ve nta, H H M M las horas y mi nutos en las q u e se i nicia la ve nta . Asu mi remos q u e sólo
hay u n TPV, por l o que no procede que haya dos ventas simu ltá neas.
•
La ve nta consistirá en la inclusión de va rios pro ductos en u n a lista, generá nd ose una l ínea por ca d a
prod ucto ve ndido. Cada línea mostra rá, a l menos, el cód igo del prod u cto, la descripción d e l
prod ucto, l a cantidad de unidades ve ndidas, el precio u n itario co n IVA, el IVA q u e se le apl ica y el
importe total de la ve nta de ese prod ucto según el n ú m ero de unidades ve ndidas.
•
El proceso de venta impl icará a utomática mente u n proceso de actual ización del inventa rio. De este
mod o, si se i ntrod uce un cód igo q u e no pertenece a ningún pro ducto, o si se introd uce un prod u cto
q u e no existe en stock (o más u n idades de las existentes), el progra ma deberá mostra r los errores
correspon dientes.
•
El sistema deberá permitir ta m bién i ntrod ucir u n prod ucto a ve nder en el ticket haciendo u n a
búsq ue da por l a descripción, además de co n el cód igo q u e lo identifica.
• Rea lizar la i mporta ción y/o exportación de los d iferentes tickets de ventas a/desde ficheros (u otro
método s i m i l a r q u e el a l u m no consid ere en su l uga r).
• Lleva r u n control de los d ife rentes clientes q u e tra baj an con el esta blecimiento com erci a l . Así, los
clientes habrá n de estar identificados en el sistema por, a l menos, los sigu ientes datos: cód igo
identificativo del clie nte, N I F o C I F, nom bre y a pel lidos 1 razón social, domicilio, fecha de a lta en e l
sistem a .
•
El sistema debe permitir d a r de a lta nuevos clientes, d a r de baja clientes existentes así como
modifica r los datos de los mismos.
• Rea lizar la i m porta ción y/o exportación de los clientes a/desde ficheros (u otro método sim i l a r q u e
e l a l u m no considere en su lugar).
•
Permitir generar factu ras a partir d e u n conj u nto de ti ckets. Puede ge nerar factu ras agru pando
diferentes tickets siem pre y cuando perte nezca n a l mismo cliente y se han rea l izado de ntro d e l
m ismo periodo fisca l ( es d ecir, dentro del mismo a ño). L a información q u e i rá en cada fa ctu ra
deberá ser, a l menos, la sigu iente : nú mero de la factu ra (identifica dor ú nico), C I F del vendedor,
razón social del ve nded or, fecha de emisión de la fa ctura, datos del cliente (los ind icados con
a nterioridad, excepto la fecha de a lta en el sistema), l istado de los d iferentes prod uctos ve ndidos
(especificando para cada p ro du cto, e l ticket en el q u e se encuentra, su cantidad ve ndida e im porte
tota l ) así como suma del total de la venta (valo r tota l de la fa ctura).
• Rea lizar la i m portación y/o exporta ción de las factu ras a/desde ficheros (u otro método similar q u e
e l a l u m no considere en su l uga r).
• Generación de l ista dos: se de berá implementa r, a l menos, la emisión de tres listad os, a saber:
ventas rea l izadas en u n interva lo de tiempo d etermi nado agru padas estas ventas por clientes,
ventas rea lizadas en un i nterva lo de tiempo determ inado a un cliente y ra nking de prod uctos más
ve nd idos en u n i nterva lo de tiempo determinado.
a) [1,0 pu ntos] Diseña r utilizando u n parad igma orie nta do a objetos, los elementos necesarios para la
a pl icación explicada de la p rá ctica d u ra nte el cu rso. Es necesario identificar la estru ctu ra y las
re laciones de herencia (mediante el uso de u n d iagra ma de clases) y de uso de las clases necesa rias
para a l macenar y gestionar esta info rmación. Debe hacerse uso de los meca n ismos de herencia
siem pre que sea posible. Se va lora rá u n buen d i seño que favorezca la reutilización de cód igo y
fa ci lite su ma ntenim iento.
b) [1,5 pu ntos] I m plementa la fu nciona lidad q u e permita d a r de a lta nuevos clientes, d a r de baja
clientes existentes así como mod ifica r los datos de los mismos. J u stifíq ue las opciones y decisiones
que se tomen.
e) [1,5 puntos] Implementa la fu ncionalidad que perm ita la generación de listados: se deberá
implementa r, a l menos, la emisión de tres l istados, a saber: ventas rea l izadas en u n interva lo d e
tiempo determ inado agru padas estas ventas po r clientes, ventas rea l izadas en u n i nterva lo d e
tiempo determ inado a u n cliente y ra nking de prod uctos más ve ndidos en u n interva lo de tiempo
determinado. J u stifíq u e las opciones y decisiones que se tomen.
d) [2,5 pu ntos] P a ra l a siguiente versión del softwa re se desea a ñ a d i r la figu ra del proveedor. De cada
proveedor se debe te ner u n lista do de los prod uctos que sirve, así como su precio, que pod ría
a ctu alizarse m a n u a l mente después de la ú ltima ve nta . El sistema debería consultar el i nventa rio
después de ca da venta y por debajo de un mínimo de prod uctos realizar un ped ido al proveedor
más ba rato, de ma nera a utomática . El nú mero de prod uctos ped ido, pod rá ser configu ra b l e para
q u e el vendedor esta blezca u n va lor por cada prod ucto. ¿Qué ca m bios sería n necesarios en e l
d i seño para a d a ptar esta nu eva fu ncion a l i d a d ? Imple me nte el método (o métodos) q u e permita
esta n ueva fu ncionalidad .
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA - ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA
71 901 072 - PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA / TECNOLOGÍAS DE LA
INFORMACIÓN �
Pregu nta 1: ¿Qué significa el siguiente fragm ento de cód igo Java ?:
i nt u no() { return 1; }
a. H ay u n método "int u no" q u e no recibe n i ngún pará metro de entrada y devu elve el va lor 1.
b. H ay un a va riable "i nt" cuyo va lor es "uno() { retu rn 1; }"
c. H ay un método "u no" q u e no recibe n i ngún pará m etro de entrada y devue lve un entero cuyo va lor es
1.
d. El fragmento no rep resenta u n fragmento de cód igo lega l en Java.
Pregu nta 2: Pa ra l ogra r q u e una clase entre en el depurador en BlueJ a hacer una insta ncia en BlueJ, ¿ q u é
h a y q u e h a c e r c o n el cód igo fuente? :
a . Co mpilarl o de nu evo con la opción Debug activado .
b. Meter u n pu nto de ruptura.
c. La nzar d i rectamente el dep u ra d or.
d . S e hace a utomática mente a l encontra r u n error en el cód igo.
i nt m, n;
public void f() {
m = (m + 2) % n;
Syste m.out. print(m + " ");
a. O246O246
b. 24624624
c. 2460246024
d. 246o246o
Pregu nta 4: Segú n el l ibro de l a a signatu ra, ¿cómo se l l a m a el cód igo fuente de una clase?:
a. La implementación de la clase.
b. La interfa z de la clase.
c. Los métodos de l a clase.
d. La visibilidad de la clase.
Pregu nta 5: Para ca pta r el evento de d a r en un botón en Java, ¿que i nterfaz hay q u e implementa r?:
a. public class Demo Boto n exte nds J Pa n el i mplements Windowliste ner
b. public class DemoBoton exte nds J Pa n el implements Eventliste ner
c. public class Demo Boto n exte nds J Pa n el i mplements Button listener
d. public class Demo Boto n exte nds J Pa n el i mplements Actionliste ner
Pregu nta 6: Segú n el l ibro de l a a signatu ra, l a d u pl icación de cód igo es u n síntoma d e :
a . B u e n a cohesión.
b. M a l a cohesión.
c. La solución inevita ble de u n problema com plejo.
d . Mal encapsu l a m i ento.
Pregu nta 7 : Segú n el l ibro de l a a signatu ra, ¿qué significa "prueba de u n idades" ?:
a . U n a prueba completa de la a p l i cación.
b. U n a prueba sistemática de u n método en concreto.
c. Una prueba de las pa rtes indivi d u a les de la aplicación.
d. U n a d e p u ración completa de la a p l icación.
class 1 {}
class J extends 1 {}
class K extends J {}
public void h h () {
J j new J();
=
System .out.println(bl + +
11
b2 +
11 11 11 +
b3 + 11 11 +
b4);
Pregu nta 10: Si existe un Arraylist<String> as, ¿cómo se consigue un iterador sobre as?
a. lterator it a s.getlterator();
=
Pregu nta 12: En l a práctica hay q u e leer información desde un a rchivo. ¿Cómo se puede gen era r u n a
exce pción si no se encuentra el a rchivo ? :
a . th row new FileNotFound Exce pti on( "Arch ivo no encontrado");
b. th row new NoFileExce pti on( "Archivo no encontrado");
c. th row new File Exception( "Arch ivo no encontrado");
d. th row new N u i i Poi nte rException ("Archivo no encontrado ");
Pregu nta 13: Dado el sigu i e nte fragmento de cód igo en Java :
String s1 = 0 + "5"; // ( 1 )
String s2 = "0" + 5; // ( 2 )
String s3 = 0 + 5 + " "; // (3)
String s4 = java . l a ng. l nteger.toStri ng(O) + 5; // (4)
Pregu nta 14: Seg ú n el l ibro de la a signatu ra, las i nstrucciones cond iciona les lleva n a cabo (con la exce pción
del switch ):
a . un a d e d o s acciones posibles.
b. un a d e va rias a cciones posibles.
c. las dos acciones posi bles.
d. dos o más de l a s a cciones posibles.
Pregu nta 15: ¿Cuál es la d ife rencia entre declarar una va riable de clase private y protected?:
a . private: Acceso solo de ntro d e la cla se, protected : Acceso desde la clase y s u s hijos.
b. private: Acceso desde la clase y sus hijos, protected : Acceso solo d entro de la clase.
c. private: Acceso solo de ntro del paquete, protected : Acceso desde la clase y sus hijos.
d . S e pueden aplica r private y protected sol amente a la declaración de clases y no a va riables.
PARTE PRÁCTICA [6,5 PUNTOS] :
La práctica del presente cu rso ha sido u na termi nal pu nto de venta (por sus siglas, TPV) q u e ha servido para
estudiar y pra ctica r los meca nismos de la P rogram ación Orientada a O bjetos.
Segú n la Wikipedia (www.wiki pedia.org), un te rminal pu nto de venta (cuyo acrónimo es TPV hace referencia
al d ispositivo y tecnol ogía s que ayu d a n en l a ta rea de gestión de un esta blecimiento co mercial de venta a l
públ ico q u e puede conta r con sistemas i nform áticos especial izados mediante una i nterfaz accesi ble para los
vended ores.
Los TPV permiten la creación e i m p resión del tiq ue de venta mediante las referencias de prod uctos, rea l izan
d ive rsas operaciones d u ra nte todo el proceso de venta, así como ca m bios en el inventa rio. Ta mbién
genera n dive rsos reportes que ayu d a n en la gestión del negoci o. Los TPV se com ponen de una pa rte
h ardware (dispositivos físicos) y otra software (sistema operativo y progra ma de gestión).
En n uestro caso concreto, el ha dwa re será u n ordenador tipo PC o similar y nuestro software será u n a
a pl icación d esarro l l a da en J ava q u e se ejecuta rá sobre d icho equ ipo.
Funcionalidades
Los TPV permite n la i mplementación desde l a bores simples de gestión de una venta, hasta operaciones más
com plejas como es la gestión de a l macén o i nventa rio, gestión de factu ra ción o gestión de clientes. E n esta
práctica, se propondrá diferentes fu ncionalidades para el sistema de gestión del TPV:
• Lleva r u n control de d ife rentes elementos q u e existen en nuestro esta bleci miento. Así, los
prod uctos habrá n de esta r identificados en el sistema por, a l menos, los sigui entes d atos: cód igo
d escri ptivo (por ejem plo, el cód igo de ba rras), descripción, precio u n itario sin IVA, IVA apl ica ble,
precio u n itario con IVA, cantidad d i sponible en stock.
• El siste ma debe perm iti r d a r de a lta nuevos prod uctos, d a r de baja prod uctos existentes así como
modifica r los datos del m ismo.
•
Rea lizar la i mporta ción y/o expo rta ción de los prod uctos a/d esde ficheros (u otro método s i m i l a r
q u e e l a l umno considere en su l ugar).
• Lleva r u n control de l a s d ife rentes ventas q u e se prod u cen. Así, el sistema deberá l leva r u n control
d e ti ckets generad os, de modo q u e cada ticket se considera rá una ve nta . Cada ticket tiene q u e
te ner u n cód igo de identifica dor ú n ico. U na forma de genera r u n cód igo ú n i co pod ría s e r d e la
forma AAAA M M D D H H M M, donde AAAA es el año en cu rso, M M el mes en q u e se genera la venta,
DD e l d ía de l a ve nta, H H M M las horas y mi nutos en las q u e se i nicia la venta . Asu mi remos q u e sólo
hay un TPV, por l o q u e no procede q u e haya dos ventas sim u ltáneas.
• La ve nta consistirá en la inclusión de va rios pro ductos en u n a lista, generá nd ose una l ínea por ca d a
prod ucto ve ndido. Cada línea mostra rá, a l menos, el cód igo del pro ducto, la descripción d e l
prod ucto, l a cantidad de unidades ve ndidas, el precio u n itario co n IVA, el IVA q u e se le apl ica y el
importe total de la ve nta de ese prod ucto según el n ú m ero de unidades ve ndidas.
•
El proceso de ve nta i mpl icará a utomática mente u n proceso de actu a l ización del i nventario ta l y
como se ha defi nido en el N ivel 2. De este modo, si se i ntrod uce u n cód igo q u e no pertenece a
n i ngún prod u cto, o si se i ntro du ce u n prod u cto q u e no existe en stock (o más u n ida des de las
existentes), el progra ma deberá mostra r los errores correspondientes.
• El sistema deberá permitir ta m bién i ntrod ucir u n prod ucto a vender en el ticket haciendo u n a
búsq ue da por l a descripción, además de co n el cód igo q u e lo identifica.
• Rea lizar la i mporta ción y/o exportación de los d iferentes tickets de ventas a/desde ficheros (u otro
método s i m i l a r q u e el a l u m no consid ere en su l uga r).
• Lleva r u n control de los d ife rentes clientes q u e tra baj an con el esta blecimiento com erci a l . Así, los
clientes habrá n de estar identificados en el sistema por, a l menos, los siguientes datos: cód igo
identificativo del clie nte, N I F o C I F, nom bre y a pel lidos 1 razón social, domicilio, fecha de a lta en e l
sistem a .
•
El sistema debe permitir d a r de a lta nuevos clientes, d a r de baja clientes existentes así como
modifica r los datos de los m ismos.
• Rea lizar la i m porta ción y/o exportación de los clientes a/desde ficheros (u otro método sim i l a r q u e
e l a l u m no considere en su lugar).
•
Permitir generar factu ras a partir d e u n conj u nto de ti ckets. Puede ge nerar factu ras agru pando
diferentes tickets siem pre y cuando perte nezca n a l mismo cliente y se han rea l izado dentro d e l
m ismo periodo fisca l ( es d ecir, dentro del mismo a ño). L a información q u e i rá en cada fa ctu ra
deberá ser, a l menos, la sigu iente : nú mero de la factu ra (identifica dor ú nico), C I F del ve nded or,
razón social del ve nded or, fecha de emisión de la fa ctura, datos del cliente (los ind icados con
a nterioridad, excepto l a fecha de a lta en el sistema), l istado de los d iferentes prod uctos ve ndidos
(especificando para cada p ro du cto, e l ticket en el q u e se encuentra, su ca ntidad ve ndida e i mporte
tota l ) así como suma del total de la venta (valo r tota l de la fa ctura).
• Rea lizar la i m portación y/o exporta ción de las factu ras a/desde ficheros (u otro método similar q u e
e l a l u m no considere en su lugar).
• Generación de listados: se deberá i mplementa r, a l me nos, la emisión de tres listad os, a saber:
ventas rea l izadas en u n interva lo de tiempo d etermi nado agru padas estas ventas por clientes,
ventas rea lizadas en un i nterva lo de tiempo determinado a un cliente y ra nking de prod uctos más
ve nd idos en u n i nterva lo de tiempo determinado.
a) [1,0 pu ntos] Diseñar utilizando u n parad igma orientado a objetos, los elementos necesarios para la
a pl icación explicada de la p rá ctica d u ra nte el cu rso. Es necesario identificar la estru ctu ra y las
re laciones de herencia (mediante el uso de u n d iagra ma de clases) y de uso de las clases necesa rias
para a l macenar y gestionar esta info rmación. Debe hacerse uso de los meca n ismos de herencia
siem pre que sea posible. Se va lora rá u n buen d i seño que favorezca la reutilización de cód igo y
fa ci lite su ma ntenim iento.
b) [2,0 pu ntos] Implementa la fu ncionalidad de ge nerar factu ras agru pando d ife rentes tickets siem pre
y cuando pertenezcan a l m ismo cliente y se han rea l izado dentro del mismo periodo fisca l (es decir,
d e ntro d el m ismo a ño). La i nformación q u e irá en cada fa ctu ra de berá ser, al menos, la siguiente:
n ú me ro de la fa ctu ra (identifica dor ú n i co), CIF del ve ndedor, razón social del vendedor, fecha d e
e misión de la fa ctu ra, datos del cliente (los i ndicados co n a nterioridad, excepto la fecha de a lta e n
e l sistema), lista do de los d ife rentes prod uctos vend idos (especificando para cada prod ucto, e l
ti cket e n el q u e se encuentra, su cantidad ve ndida e i m porte tota l) as í como suma del total d e la
venta (va lor total d e la factu ra ) .
e) [1,0 pu nto] Implementa u n método q u e d é una notificación cuando se ve nda el ú ltimo ejemplar d e
u n prod u cto en el a l macén para q u e se pueda ped ir más.
d) [2,5 puntos] P a ra l a siguiente versión del software se q u i ere incluir u n catá logo de los pro d u ctos
para q u e un cliente pueda m irarlo en pa nta llas dentro de la tienda y com pra r los prod u ctos
d i recta mente desde el catá l ogo. Se trata ría de una nueva interfa z sobre el TPV q u e proporciona ría
a lgunas de l a s fu nciones (aquellas releva ntes para el cliente) d i recta mente al cliente. ¿Qué cambios
sería n necesarios en el d i seño para incluir esta nueva fu ncionalidad? I m plementa los cambios
necesarios q u e perm ita n esta nu eva fu nciona l i d a d .
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA - ESCUELA TÉCNICA SUPERIOR DE
Pregunta 1 : Segú n el texto d e l a bibliografía básica d e la asignatura, los constru ctores ...
Pregunta 2: En B l u eJ, ¿qué nos p erm ite experimenta r con expresiones Java ?
a. El Pad Code
b. El Patch Cod e
c. El Pa n Cod e
d. N inguna d e l a s a nteriores.
a. El proceso d e d ividir u n todo en pa rtes laxa m ente d efinidas que puedan constru i rse y exa m i n a rse e n
conju nto y q u e intera ctú en d e formas bien d efi nidas.
b. El proceso d e d ivid i r un todo en pa rtes bien d efinidas que puedan constru irse y exa m i n a rse e n
conju nto y q u e intera ctú en d e formas bien d efi nidas.
c. El proceso d e d ivid i r u n todo en pa rtes bien d efi ni das q u e puedan constru irse y exa m in a rse por
separa do y q u e intera ctúen de formas bien d efi nid as.
d. N inguna d e l a s a nteriores.
Pregunta 4: Qu e remos com p i l a r el siguiente cód igo q u e se puede enco ntra r en el texto base de la asignatu ra
y q u e ha sido modifica do conve n i entemente. ¿Cuál es el resultado q u e obtenemos a l co mpilar?
1 pub 1 i c c 1 a s s Ma i 1 I t e m
2 {
3 pr ivate s t a t i c S t r i n g from;
4 p r i v a t e S t r i ng t o ;
5 p r i v a t e S t r i ng me s s a ge ;
6
7 pub 1 i c s t a t i c Ma i 1 I t em ( S t r i ng f r o m , S t ring to , S t r i ng m )
8 {
9 th i s . f r o m = f r o m ;
10 th i s . t o = t o ;
11 th i s . me s s a ge = m ;
12
13
a. El cód igo com pila s i n errores
b. Prod uce un error de com pilación en la l ínea 3.
c. Prod uce un error de com pilación en la l ínea 1 1 .
d. N inguna d e l a s a nteriores.
Pregunta 5 : Qu e remos com p i l a r el siguiente cód igo q u e se puede enco ntra r en el texto base d e la asignatu ra
y q u e ha sido mod ifica do conve n ientemente. Al compi lar, Bl u eJ nos da error d e co mpilación. ¿Qué d e beremos
ca m biar para que el progra ma com pi l e?
1 imp o r t j ava . ut i l . Ar r a y L i s t ;
2
3 pub l i e e l a s s Mu s i e O r g a n i z e r
4 {
5 p r i v a t e Ar r a yL i s t < S t r i n g> f i l e s ;
6 p r i v a t e Mu s i e P l a ye r p l a ye r ;
7
8 pub l i e Mu s i e O r g a n i z e r ()
9 {
10 f i l e s = n e w Ar r a yL i s t < S t r i n g> () ;
11 p l a y e r = n ew Mu s i e P l ay e r ( ) ;
12
13
14 pub l i e v o i d s t a r t P l a yi ng F i l e ( i n t i n de x )
15 {
16 S t r i ng f i l e n ame = f i l e s . ge t ( i n de x ) ;
17 p l a y e r . s t a rt P l ay i n g ( f i l e n ame ) ;
18
19
20 pub l i e v o i d s t op P l a y i n g ()
21 {
22 pl ayer . s top ( ) ;
23
24
Pregunta 6: Queremos compilar el sigu iente cód igo q u e se puede encontra r en el texto base de la asignatura .
Al compil a r, Bl ueJ pod ría da rnos u n error en tiempo d e compila ción y/o un error en tiempo de ejecución.
¿Cómo d e be remos proceder para que el cód igo compi le y se ejecute correcta m ente?
1 pub l i e e l a s s E j e mp l o
2 {
3 pub l i e s t a t i e Ve h i e l e v ;
4 pub l i e s t a t i e C a r e ;
5 pub l i e s t a t i e B i e y e l e b ;
6
7 pub l i e s t a t i e vo i d ma i n ()
8 {
9 e = new Car ( ) ;
10 V e;
11 b = ( B i c yc l e ) e ;
12 b = ( B i c yc l e ) v ;
13 S y s t em . o u t . p r i n t l n ( " Fu n c i o n a " ) ;
14
15
a. Con i n d ependencia d e cómo d efina mos las cla ses Ve h i c l e, C a r y B i c y c l e, siem pre n o s d a rá u n
e rror en tiempo d e ejecución en l a l ínea 1 2 .
b. Con i n d ependencia de cómo d efinamos las cla ses Ve h i c l e, C a r y B i c y c l e, siem pre nos d a rá u n
e rror en tiempo d e com pilación en l a l ín ea 1 1 .
c. Si d efi nimos q u e C a r e x t e n ds Veh i c l e y q u e B i c yc l e e x t e n d s C a r, consegu imos
e l i m i n a r todos los errores del cód igo y muestra el mensaje por pa nta lla "Fu nciona".
d. Si d efi n imos q u e Veh i c l e e x t e n ds B i c y c l e y q u e C a r e x t e n ds Ve h i c l e , consegu imos
e l i m i n a r tod os los errores del cód igo y muestra el mensaje por pa nta lla "Fu nciona".
Pregunta 7 : Que remos compilar el sigu iente cód igo q u e s e puede encontra r en el texto base d e la asignatura .
¿Qué ocu rre a l com pi l a rl o con B l u eJ ?
1 imp o r t j ava . ut i l . L i s t ;
2 i n t e r f a c e Ac t o r
3
4 vo i d a c t ( L i s t <Ac t o r > n ewAc t o r s ) ;
5 b o o l e a n i s Act ive ( ) ;
6
a. El tipo estático d e u na va ria ble v y el tipo d i ná m ico de una va riable v co inciden siempre.
b. El tipo estático de una va ria ble v se mod ifica a utomática mente al mod ifica r el tipo d i ná m ico de la
va riable.
c. El tipo estático siempre coincide con el tipo d eclarado en la i nstru cción d e d eclaración d e la va ria ble.
d. N inguna d e l a s a nteriores.
Pregunta 9: Segú n el texto d e la bibliografía básica d e la asignatura, co n respecto a la igu aldad d e referencias
pod emos afi rmar ...
1 imp o r t j ava . ut i l . L i s t ;
2
3 pub l i c a b s t r a c t c l a s s An imal
4 {
5 pub l i c v o i d a c t ( L i s t <An ima l > n ewAn i ma l s , c h a r a n i ma l s ) { }
6 pub l i c s t a t i c vo i d a c t ( L i s t <A n i ma l > n ewAn ima l s , i n t a n ima l s ) ;
7 ab s t ra c t pub l i c s t a t i c v o i d a c t ( L i s t<An ima l > newAnima l s , S t r i ng a n i ma l s ) ;
8
Pregunta 1 1 : Queremos com p i l a r el siguiente cód igo q u e se pued e encontra r en el texto base d e la asignatura
y q u e h emos mod ifica do . ¿Qué ocu rre a l compi larlo con B l u eJ?
1 pub l i c c l a s s E j e mp l o
2 {
3 pub l i c s t a t i c vo i d ma i n ( String [ ] args )
4 {
5 int [ ] nume r a s = n e w i n t [ ] {1,2,3};
6
7 S y s t em . o ut . p r i nt ( nume r o s ) ;
8 S y s t em . o ut . p r i nt ( nume r o s . l e n gt h ) ;
9 S y s t em . o ut . p r i nt ( nume r o s . last) ;
10 S y s t em . o ut . p r i nt ( nume r o s . first ) ;
11
12
Pregunta 1 2 : ¿Cuál d e l a s sigu ientes opciones perm ite mod ifica r una cad ena d eclara d a como S t r i ng
i nput ; ?
a. i nput . t o Upp e r C a s e ( ) ;
b. i nput . t r i m ( ) ;
c. i nput . s t a r t sW i t h ( " h o l a " ) ;
d. N inguna d e l a s a nteriores.
Pregunta 1 3 : E n rel ación a l o s conceptos d e acoplam iento y cohesión, pod emos afi rmar ...
a. Un a lto gra do d e a cop l a m iento impl ica necesa riamente u n a lto grado d e cohesión.
b. Un bajo gra do de a copl a m i ento no impl ica necesa riam ente un a lto grado de cohesión.
c. En u n d iseño d e clases persegu imos un bajo grado d e cohesión y u n bajo acoplam iento
d. N inguna d e l a s a nteriores.
Pregunta 14: Queremos com p i l a r el siguiente cód igo que se pued e encontra r en el texto base de la asignatura
y q u e hemos mod ificado. El cód igo co mpila sin ca usar ningún error d e com pi l a ción, pero no m u estra nada
por pa nta l l a . ¿Qué falta por añadir para q u e el cód igo muestre a lgo por panta l la a l crear u n obj eto de la clase
I ma geVi e w e r dentro del entorno d e B l u eJ ?
Pregunta 1 5 : Queremos com p i l a r el siguiente cód igo q u e se pued e encontra r en el texto bas e d e la asignatura
y q u e ha sido mod ificado conven ientemente. Se prod uce u n error de com pilación. ¿Qué línea es la q u e
contiene u n e rror, ta l q u e si la mod ifica mos conve n ientemente, el cód igo com pila y no provoca ningún e rro r
d e co mpilación en B l u eJ ?
1 imp o r t j av a . i o . * ;
2
3 pub l i c c l a s s E j e mp l o
4 {
5 pub l i c s t a t i c vo i d ma i n () throws I OE x c ept i o n
6 {
7 S t r i ng f i l e n ame = n e w S t r i ng ( " E JEMPLO " ) ;
8 try {
9 t h r o w I OE x c ept i o n () ;
10
11 c a t c h ( E x c ep t i o n e )
12 S y s t e m . o ut . p r i n t l n ( " Un ab l e t o s ave t o " + f i l e n ame ) ;
13
14
15
Según la Wikipedia (www.wikipedia.org), un terminal punto de venta (cuyo acrónimo es TPV hace
referencia al dispositivo y tecnologías que ayudan en la tarea de gestión de un establecimiento
comercial de venta al público que puede contar con sistemas informáticos especializados mediante
una interfaz accesible para los vendedores.
Los TPV permiten la creación e impresión del tique de venta mediante las referencias de productos,
realizan diversas operaciones durante todo el proceso de venta, así como cambios en el inventario.
También generan diversos reportes que ayudan en la gestión del negocio. Los TPV se componen de
una parte hardware (dispositivos físicos) y otra software (sistema operativo y programa de gestión).
En nuestro caso concreto, el hadware será un ordenador tipo PC o similar y nuestro software será una
aplicación desarrollada en Java que se ejecutará sobre dicho equipo.
Funcionalidades
Los TPV permiten la implementación desde labores simples de gestión de una venta, hasta
operaciones más complejas como es la gestión de almacén o inventario, gestión de facturación o
gestión de clientes. En esta práctica, se propondrá diferentes funcionalidades para el sistema de
gestión del TPV:
• Llevar un control de diferentes elementos que existen en nuestro establecimiento. Así, los
productos habrán de estar identificados en el sistema por, al menos, los siguientes datos:
código descriptivo (por ejemplo, el código de barras), descripción, precio unitario sin IVA,
IVA aplicable, precio unitario con IVA, cantidad disponible en stock. D
• El sistema debe permitir dar de alta nuevos productos, dar de baja productos existentes así
como modificar los datos del mismo. D
• Realizar la importación y/o exportación de los productos a/desde ficheros (u otro método
similar que el alumno considere en su lugar). D
• Llevar un control de las diferentes ventas que se producen. Así, el sistema deberá llevar un
control de tickets generados, de modo que cada ticket se considerará una venta. Cada ticket
tiene que tener un código de identificador único. Una forma de generar un código único podría
ser de la forma AAAAMMDDHHMM, donde AAAA es el año en curso, MM el mes en que
se genera la venta, DD el día de la venta, HHMM las horas y minutos en las que se inicia la
venta. Asumiremos que sólo hay un TPV, por lo que no procede que haya dos ventas
simultáneas. D
• La venta consistirá en la inclusión de varios productos en una lista, generándose una línea por
cada producto vendido. Cada línea mostrará, al menos, el código del producto, la descripción
del producto, la cantidad de unidades vendidas, el precio unitario con IVA, el IVA que se le
aplica y el importe total de la venta de ese producto según el número de unidades vendidas.
D
• El proceso de venta implicará automáticamente un proceso de actualización del inventario.
De este modo, si se introduce un D código que no pertenece a ningún producto, o si se introduce
un producto que no existe en stock (o más unidades de las existentes), el programa deberá
mostrar los errores correspondientes.
• El sistema deberá permitir también introducir un producto a vender en el ticket haciendo una
búsqueda por la descripción, además de con el código que lo identifica. D
• Realizar la importación y/o exportación de los diferentes tickets de ventas a/ desde ficheros (u
otro método similar que el alumno considere en su lugar). D
• Llevar un control de los diferentes clientes que trabajan con el establecimiento comercial. Así,
los clientes habrán de estar identificados en el sistema por, al menos, los siguientes datos:
código identificativo del cliente, NIF o CIF, nombre y apellidos 1 razón social, domicilio,
fecha de alta en el sistema. D
• El sistema debe permitir dar de alta nuevos clientes, dar de baja clientes existentes así como
modificar los datos de los mismos. D
• Realizar la importación y/o exportación de los clientes a/ desde ficheros (u otro método similar
que el alumno considere en su lugar). D
• Permitir generar facturas a partir de un conjunto de tickets. Puede generar facturas agrupando
diferentes tickets siempre y cuando pertenezcan al mismo cliente y se han realizado dentro
del mismo periodo fiscal (es decir, dentro del mismo año). La información que irá en cada
factura deberá ser, al menos, la siguiente : número de la factura (identificador único), CIF del
vendedor, razón social del vendedor, fecha de emisión de la factura, datos del cliente (los
indicados con anterioridad, excepto la fecha de alta en el sistema), listado de los diferentes
productos vendidos (especificando para cada producto, el ticket en el que se encuentra, su
cantidad vendida e importe total) así como suma del total de la venta (valor total de la factura).
D
• Realizar la importación y/o exportación de las facturas a/ desde ficheros (u otro método similar
que el alumno considere en su lugar). D
• Generación de listados: se deberá implementar, al menos, la emisión de tres listados, a saber:
ventas realizadas en un intervalo de tiempo determinado agrupadas estas ventas por clientes,
ventas realizadas en un intervalo de tiempo determinado a un cliente y ranking de productos
más vendidos en un intervalo de tiempo determinado. D
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) [1,0 puntos] Implementa un método (o métodos) que permitan la importación (cargar al
programa) de los diferentes tickets de ventas desde fichero (u otro método similar que el
alumno considere en su lugar). Justifíquese las opciones y decisiones que se tomen.
e) [2,0 puntos] Implementa un método (o métodos) que implementen el proceso de venta, junto
con la actualización del inventario. De este modo, si se introduce un código que no pertenece
a ningún producto, o si se introduce un producto que no existe en stock (o más unidades de
las existentes), el programa deberá mostrar los errores correspondientes. Justifíquese las
opciones y decisiones que se tomen.
d) [2,5 puntos] Proporcione un método (o métodos) que permita mostrar por pantalla un
formulario básico en modo gráfico que permita recoger los parámetros necesarios para dar
de alta un nuevo cliente en el sistema. El método deberá comprobar si el cliente existe, y si
existe, mostrar el correspondiente mensaje por pantalla. Si no existe, procederá a dar de alta
al cliente. Justifíquese las opciones y decisiones que se tomen.
UNIVERSIDAD NACIONAL. DE EDUCACIÓN A DISTANCIA � ESCUELA TÉCNICA SUPERIOR DE
INGENIERÍA INl"ORMÁTlCA
71901072 � PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA 1
TECNOLOGÍAS DE. LA INFORMACIÓN)
ruNI o/sEPTIEMBRE 20 1s � MoDE i"'. i
Lo n!IJI!�•r=-----------
No ESTÁ PERMITIDO EL USO DE MATERIAL
d.JtWt.l!LI
PARTE TEÓRICA - TEST [2,5 PUNTOS] :
Solo una de las respuestas es válida. Las respuestas correctas se puntuarán con + 1 .0, mientras que las
respondidas de manera incorrecta se puntuarán con -0.25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
Pregu nta 1: ¿Cuál es el resu lta do de co mpilar y ejecuta r el siguiente cód igo?
imp o r t j ava . u t i l . * ;
pub l i c c l a s s T e s t {
pub l i c s t a t i c v o i d m a i n ( S t r i n g [ ] Arg s ) {
A r r a yL i s t < S t r ing> l i s ta=new A r r a yL i s t < S t r ing> ( ) ;
l i s t a . add ( " u n o " ) ;
l i s t a . add ( " do s " ) ;
l i s t a . add ( " t re s " ) ;
for ( S t ring valor : l i s t a ) {
S y s t em . ou t . p r i n t ( " E l im i n o " +v a l o r + " - " ) ;
l i s t a . remove ( v a l o r ) ;
Pregu nta 2: ¿Cuál es el resu lta do de co mpilar y ejecuta r el siguiente cód igo?
imp o r t j ava . u t i l . * ;
pub l i c c l a s s T e s t {
pub l i c s t a t i c v o i d m a i n ( S t r i n g [ ] Arg s ) {
A r r a yL i s t < S t r ing> l i s ta=new A r r a yL i s t < S t r ing> ( ) ;
l i s t a . add ( " u n o " ) ;
l i s t a . add ( " do s " ) ;
l i s t a . add ( " t re s " ) ;
I t e r a t o r < S t r i ng> i t = l i s t a . i t e r a t o r ( ) ;
wh i l e ( i t . h a s N e x t ( ) ) {
S t r i n g v a l o r= i t . n e x t ( ) ;
S y s t em . ou t . p r i n t ( " E l im i n o " +v a l o r + " - " ) ;
i t . remove ( ) ;
a. El térm ino a coplamiento describe l o bien q u e una u n i d a d de cód igo se corresponde co n una tarea
lógica o con u na enti d a d .
b. El término cohesión describe la interconexión de las clases.
c. Se debe tender a un acopla m iento débil.
d. Se debe tender a u n acopla m iento fu erte.
Pregu nta 4: ¿Cuál es el resu lta do de co mpilar y ejecuta r el siguiente cód igo?
pub l i c c l a s s Padre
{
p r ivate i n t x ;
pub l i c Padre ( i n t v a l o r ) { x valor; }
pub l i c c l a s s T e s t {
pub l i c s t a t i c v o i d m a i n ( S t r i n g [ ] Arg s ) {
H i j o h=new H i j o ( ) ;
S y s tem . ou t . p r i n t l n ( " C l a s e i n s t a n c i a da " ) ;
Pregu nta 5: ¿Cuál es el resu lta do de co mpilar y ejecuta r el siguiente cód igo?
pub l i c c l a s s Padre
{
v o i d met odoA ( ) {
S y s t em . ou t . p r i n t l n ( " E j e c u t o e l m é t odo A de l a c l a s e Padr e " ) ;
pub l i c c l a s s T e s t {
pub l i c s t a t i c v o i d m a i n ( S tr ing [ ] Arg s ) {
Padre h=new H i j o ( ) ;
h . met odoA ( ) ;
pub l i c c l a s s Padre
{
v o i d met odoA ( ) {
S y s t em . ou t . p r i n t l n ( " E j e c u t o e l m é t odo A de l a c l a s e Padr e " ) ;
pub l i c c l a s s T e s t {
pub l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s )
H i j o h=new Padre ( ) ;
i f ( h instanceof Hij o )
S y s tem . ou t . p r i n t l n ( " I n s t a n c i a de l a c l a s e H i j o " ) ;
el se
S y s tem . ou t . p r i n t l n ( " I n s t a n c i a d e l a c l a s e padr e " ) ;
a. Declarar u n ca m po o u n método protegido (protected ) permite acceder d i recta mente a él des d e las
su bclases d i recta s o ind irecta s.
b. Declarar u n campo o u n método protegi do (protected ) perm ite acceder d i rectamente a él
ú nicamente desde las su bclases d i recta s.
c. Los miembros defi nidos como private en una su bclase son accesi bles para los objetos de otra s
clases.
d. Los miembros defi nidos como private en una su perclase son accesi bles para los objetos d e sus
su bclases.
Pregu nta 8: ¿Cuál es el resu lta do de co mpilar y ejecuta r el sigu i e nte código?
pub l i c c l a s s Padre
{
v o i d met odoA ( ) {
S y s t em . ou t . p r i n t l n ( " E j e c u t o e l m é t odo A de l a c l a s e Padr e " ) ;
pub l i c c l a s s T e s t {
pub l i c s t a t i c v o i d m a i n ( S t r i n g [ ] args )
H i j o h= ( H i j o ) new Padre ( ) ;
i f ( h instanceof Hij o )
S y s tem . ou t . p r i n t l n ( " I n s t a n c i a de l a c l a s e H i j o " ) ;
el se
S y s tem . ou t . p r i n t l n ( " I n s t a n c i a d e l a c l a s e padr e " ) ;
Pregu nta 9 : ¿Cuál es el resu lta do de co mpilar y ejecuta r el siguiente cód igo?
pub l i c c l a s s Padre
{
v o i d met odoA ( ) {
S y s t em . ou t . p r i n t ( " E j e c u t o e l m é t odo A de l a c l a s e Padre . ") ;
pub l i c c l a s s T e s t {
pub l i c s t a t i c v o i d m a i n ( S t r i n g [ ] args )
Padre p=new H i j o ( ) ;
p . met odoA ( ) ;
Pregu nta 10: ¿Cu á l es el resulta do de compi l ar y ejecuta r el sigu i e nte código?
pub l i c ab s t r a c t c l a s s Padre
{
ab s t r a c t v o i d met odoA ( ) ;
imp o r t j ava . u t i l . * ;
pub l i c c l a s s T e s t
pub l i c s t a t i c v o i d m a i n ( S t r i n g [ ] args )
L i s t< P a d r e > l i s ta=new A r r a y L i s t < P a d r e > ( ) ;
l i s t a . add ( n ew H i j o ( ) ) ;
l i s t a . add ( n ew H i j o ( ) ) ;
l i s t a . add ( n ew H i j a ( ) ) ;
f o r ( I t e r a t o r< P a d r e > i t = l i s t a . i t e r a t o r ( ) ; i t . ha sNext ( ) ; ) {
Padre p= i t . n e x t ( ) ;
p . met odoA ( ) ;
Pregu nta 11: ¿Cu á l es el resulta do de compi lar y ejecuta r el sigu i e nte código?
pub l i c ab s t r a c t c l a s s Padre
{
v o i d met odoA ( ) {
th i s . met odoB ( ) ;
ab s t r a c t v o i d met odoB ( ) ;
imp o r t j ava . u t i l . * ;
pub l i c c l a s s T e s t {
pub l i c s t a t i c v o i d m a i n ( S t r i n g [ ] args ) {
H i j o h=new H i j o ( ) ;
h . met odoA ( ) ;
a. La s clases i nternas a nónimas s o n u na estru ctu ra muy úti l a la hora d e i mplementar escuchas d e
su cesos.
b. U n a i nterfaz G U I se construye d ispon iendo componentes en panta l l a . Los compone ntes se
re presenta n media nte objetos.
c. Para d efi nir la colocación de los compone ntes de una G U I se utilizan gestores de d iseño gráfico.
d. U n objeto puede escu char los sucesos de l o s componentes extendiendo una clase abstracta d e
escucha de sucesos.
a. La seri a lización perm ite leer y escri bir en una ú n i ca operación o bjetos completos, pero no
jera rq u ía s de objetos.
b. Una excepción no com proba da es un tipo de exce pción cuyo uso no req u i ere n i nguna
comprobación por pa rte del co mpilador.
c. Una excepción com proba da es un tipo de exce pción cuyo uso req u i e re com probaciones ad icionales
por pa rte del compilador.
d . U n a a serción es u n e n u nciado de u n hecho q u e debe ser cierto d u ra nte la ejecución del progra m a .
a. La s pruebas son l a a ctivida d consistente en averigua r si u n fragmento de cód igo prese nta el
comporta m iento desea do .
b. U n recorrido manual es l a a ctividad consistente en a n a l izar u n segmento de cód igo línea a l ínea
mi entras que se o bserva n los cambios de esta do y otros comportami entos de la aplicación.
c. Una prueba negativa es una prueba de un caso q u e se espera q u e fu ncione correcta mente y q u e
fi n al mente no fu nciona.
d. Si l a condición definida en u na a serción es fa lsa, decimos que la aserción ha fa llado.
La práctica del presente curso ha sido una terminal punto de venta (por sus siglas, TPV) que ha
servido para estudiar y practicar los mecanismos de la Programación Orientada a Objetos.
Según la Wikipedia (www.wikipedia.org), un terminal punto de venta (cuyo acrónimo es TPV hace
referencia al dispositivo y tecnologías que ayudan en la tarea de gestión de un establecimiento
comercial de venta al público que puede contar con sistemas informáticos especializados mediante
una interfaz accesible para los vendedores.
Los TPV permiten la creación e impresión del tique de venta mediante las referencias de productos,
realizan diversas operaciones durante todo el proceso de venta, así como cambios en el inventario.
También generan diversos reportes que ayudan en la gestión del negocio. Los TPV se componen de
una parte hardware (dispositivos físicos) y otra software (sistema operativo y programa de gestión).
En nuestro caso concreto, el hadware será un ordenador tipo PC o similar y nuestro software será
una aplicación desarrollada en Java que se ejecutará sobre dicho equipo.
Funcionalidades
Los TPV permiten la implementación desde labores simples de gestión de una venta, hasta
operaciones más complejas como es la gestión de almacén o inventario, gestión de facturación o
gestión de clientes. En esta práctica, se propondrá diferentes funcionalidades para el sistema de
gestión del TPV:
•
Llevar un control de diferentes elementos que existen en nuestro establecimiento. Así, los
productos habrán de estar identificados en el sistema por, al menos, los siguientes datos:
código descriptivo (por ejemplo, el código de barras), descripción, precio unitario sin IVA,
IVA aplicable, precio unitario con IVA, cantidad disponible en stock.
•
El sistema debe permitir dar de alta nuevos productos, dar de baja productos existentes así
como modificar los datos del mismo.
•
Realizar la importación y/o exportación de los productos a/desde ficheros (u otro método
similar que el alumno considere en su lugar).
•
Llevar un control de las diferentes ventas que se producen. Así, el sistema deberá llevar un
control de tickets generados, de modo que cada ticket se considerará una venta. Cada ticket
tiene que tener un código de identificador único. Una forma de generar un código único
podría ser de la forma AAAAMMDDHHMM, donde AAAA es el año en curso, MM el mes
en que se genera la venta, DD el día de la venta, HHMM las horas y minutos en las que se
inicia la venta. Asumiremos que sólo hay un TPV, por lo que no procede que haya dos
ventas simultáneas.
•
La venta consistirá en la inclusión de varios productos en una lista, generándose una línea
por cada producto vendido. Cada línea mostrará, al menos, el código del producto, la
descripción del producto, la cantidad de unidades vendidas, el precio unitario con IVA, el
IVA que se le aplica y el importe total de la venta de ese producto según el número de
unidades vendidas.
•
El proceso de venta implicará automáticamente un proceso de actualización del inventario.
De este modo, si se introduce un código que no pertenece a ningún producto, o si se
introduce un producto que no existe en stock (o más unidades de las existentes), el programa
deberá mostrar los errores correspondientes.
•
El sistema deberá permitir también introducir un producto a vender en el ticket haciendo una
búsqueda por la descripción, además de con el código que lo identifica.
•
Realizar la importación y/o exportación de los diferentes tickets de ventas a/desde ficheros
(u otro método similar que el alumno considere en su lugar).
•
Llevar un control de los diferentes clientes que trabajan con el establecimiento comercial.
Así, los clientes habrán de estar identificados en el sistema por, al menos, los siguientes
datos: código identificativo del cliente, NIF o CIF, nombre y apellidos 1 razón social,
domicilio, fecha de alta en el sistema.
•
El sistema debe permitir dar de alta nuevos clientes, dar de baja clientes existentes así como
modificar los datos de los mismos.
•
Realizar la importación y/o exportación de los clientes a/desde ficheros (u otro método
similar que el alumno considere en su lugar).
•
Permitir generar facturas a partir de un conjunto de tickets. Puede generar facturas
agrupando diferentes tickets siempre y cuando pertenezcan al mismo cliente y se han
realizado dentro del mismo periodo fiscal (es decir, dentro del mismo año). La información
que irá en cada factura deberá ser, al menos, la siguiente: número de la factura (identificador
único), CIF del vendedor, razón social del vendedor, fecha de emisión de la factura, datos
del cliente (los indicados con anterioridad, excepto la fecha de alta en el sistema), listado de
los diferentes productos vendidos (especificando para cada producto, el ticket en el que se
encuentra, su cantidad vendida e importe total) así como suma del total de la venta (valor
total de la factura).
•
Realizar la importación y/o exportación de las facturas a/desde ficheros (u otro método
similar que el alumno considere en su lugar).
•
Generación de listados: se deberá implementar, al menos, la emisión de tres listados, a
saber: ventas realizadas en un intervalo de tiempo determinado agrupadas estas ventas por
clientes, ventas realizadas en un intervalo de tiempo determinado a un cliente y ranking de
productos más vendidos en un intervalo de tiempo determinado.
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) [1,0 puntos] Modifique aquellas clases que considere oportunas para incluir la
funcionalidad de tener clientes VIP. A estos clientes se les aplicará un descuento del 1 0% en
todos los productos.
e) [2,0 puntos] Modifique los métodos de venta y generación de facturas para aplicar el
descuento en el precio final de cada producto en el caso en el que el cliente sea VIP.
d) [2,5 puntos] Proporcione un método (o métodos) que permitan mostrar por pantalla un
listado, en modo gráfico, de los clientes VIPs ordenados de mayor a menor en función del
gasto realizado.
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA = ESCUELA TÉCNICA SUPERIOR DE.
INGENIERÍA IN"FORMÁTlCA
71 901072 � PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENlEIÚA INFQRMÁTlCA /
TECNOLOGÍAS DE. LA INFORMACIÓN}
JUNIO 2Q16 = MODELO B = O ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONAL
Las preguntas de reserva sólo tendrán utilidad en el caso de que alguna de las 1 4 preguntas iniciales del test
sea anulada por cualquier circunstancia. Caso de ocurrir este hecho, si se produjera la anulación de alguna de
las 1 4 preguntas iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso de que una
segunda pregunta de las 1 4 iniciales fuese anulada, entonces la segunda pregunta de reserva sustituiría a esta
segunda pregunta anulada. En aquellos hipotéticos casos en los que se produj ese la anulación de una tercera o
sucesivas preguntas de las 1 4 iniciales, entonces sólo en ese caso, las preguntas tercera y sucesivas anuladas
se considerarían como correctas (al no existir más preguntas de reserva que las sustituyan).
Pregunta 1 : Según el texto de la bibliografía básica de la asignatura, un ArrayList tiene las siguientes
características (indica la respuesta que NO es correcta) :
a. Puede incrementar su capacidad interna si es necesario.
b. Mantiene su propio contador del número de elementos almacenados.
c. Mantiene el orden de almacenamiento de los elementos.
d. No permite la duplicación de objetos.
Pregunta 2: Según el texto de la bibliografia básica de la asignatura, ¿cuál de las siguientes clases NO es una
colección?
a. ArrayList
b. HashSet
c. HashMap
d. ArraySet
Pregunta 6: ¿Cómo se activan por primera vez las herramientas de prueba de JUnit en BlueJ?
a. No es necesario, ya vienen activadas.
b. Con el botón derecho, seleccionando Activar (Activate) JUnit
c. A través de la pestaña Miscelánea (Miscellaneous) del cuadro de diálogo Preferencias (Preferences).
d. A través del menú.
¿Qué tendremos que añadir a la línea 1 3 , en vez de XXX, para asignar el valor de autor a variable usuario en
la clase Post?:
a. super ( ) ;
b. u s u a r i o = au t o r ;
c. s u p e r ( au t o r ) ;
d. supe r . u s u a r i o = au t o r ;
Pregunta 9 : Según e l texto de la bibliografía básica de l a asignatura, caracterizan los campos, constructores y
métodos de la siguiente forma:
l. . . . implementan el comportamiento de un objeto.
2. . . . almacenan datos de manera persistente dentro de un obj eto.
3. . . . son responsables de garantizar que un objeto s e configure apropiadamente a crearlo por primera vez.
Pregunta 10: Dado el siguiente fragmento de código del ejemplo del libro Image Viewer:
1 p r i v a t e vo i d ma keMenuBa r ( JF r ame f r ame ) {
2 f i n a l i n t S HORTCUT MAS K =
3 T o o l ki t . g e t D e f au l t T o o l ki t ( ) . ge tMen u S h o r t c u tK e yMa s k ( ) ;
4
5 JMe n u B a r menubar = new JMe n u B a r ( ) ;
6 f r ame . s e t JMenuB a r ( menuba r ) ;
7
8 JMenu menu ;
9 JMenu i t em i t e m ;
10
11 / / g e n e r a r menú de p r e f e r e n c i a s
12 XXX
Si se quisiera añadir una nueva entrada en la barra de menús con el nombre Preferencias, ¿que habrá que añadir
en la línea 1 3 en vez de XXX? :
a. menu = new JMenuitem("Preferencias"); menubar.add(menu);
b. menu = new JMenu("Preferencias"); frame.add(menu);
c. menu = (Jmenu)new JMenuitem("Preferencias"); menubar.add(menu);
d. menu = new JMenu("Preferencias"); menubar.add(menu);
Pregunta 11: Según el texto de la bibliografia básica de la asignatura, para crear una representación de un
objeto en forma de String tenemos que implementar el método:
a. getString()
b. toString()
c. printString()
d. parseString()
Pregunta 12: Se quiere proporcionar dos constructores en la clase del reloj ClockDisplay del libro para iniciar
el reloj de dos formas diferentes (fijando las horas y los minutos y fijando los minutos y los segundos) :
1 pub l i c C l o c k D i s p l a y ( i n t hou r , i n t m i nu t e )
2 {
3 hou r s = new Numbe r D i s p l a y ( 2 4 ) ;
4 m i nu t e s = new Numbe r D i s p l a y ( 6 0 ) ;
5 s e conds = new Numbe r D i s p l a y ( 6 0 ) ;
6 s e t T ime ( hou r , m i nu t e , s e c o n d ) ;
7 th i s . h o u r = hou r ;
8 th i s . m i n u t e m i nu t e ;
9 th i s . s e cond = O ;
10
11
12 pub l i c C l o c k D i s p l a y ( i n t m i nu t e , int s econd)
13 {
14 hou r s = new Numbe r D i s p l a y ( 2 4 ) ;
15 m i nu t e s = new Numbe r D i s p l a y ( 6 0 ) ;
16 s e conds = new Numbe r D i s p l a y ( 6 0 ) ;
17 s e t T ime ( hou r , m i nu t e , s e c o n d ) ;
18 th i s . h o u r = O ;
19 th i s . m i n u t e = m i nu t e ;
20 th i s . s e cond s econd;
21
Pregunta 1 3 : Para definir una nueva clase de excepción, como s e h a hecho en e l ejemplo AddressBook del
libro, se hace de la siguiente forma:
1 pub 1 i c c 1 a s s NoMa t c h i n gD e t a i 1 sExcept i o n extends XXX {
2 p r i v a t e S t r i n g ke y ;
3
4 pub 1 i c NoMa t c h i ngDe t a i 1 sExcept i o n ( S t r i n g ke y ) {
5 th i s . k e y = ke y ;
6
¿Que habrá que añadir en la línea 1 3 en vez de XXX para declarar correctamente la nueva clase? :
a. RunException
b. Exception
c. IOException
d. java.util.Exception
Pregunta 14: Si se quiere insertar el siguiente método en la clase de la máquina expendedora de billetes, ¿cuál
es el resultado de compilar 1 ej ecutar el método con un valor de coste de 50?
1 pub 1 i c v o i d p roba r D i n e r o ( i n t di n e ro )
2 {
3 i f ( di n e ro = 5 0 ) {
4 S ys t e m . ou t . p r i n t l n ( " No s e adm i t e n b i l l e t e s d e 5 0€ . " ) ;
5
6 else
7 S ys t em . ou t . p r i n t l n ( " I mp r e s i ón de b i l l e t e en c u r s o . " ) ;
8
9
Reserva 1 : Supongamos que reescribimos una parte de la simulación de los zorros y los conej os del libro de
la forma que se muestra a continuación:
1 imp o r t j ava . u t i l . L i s t ;
2 pub l i c ab s t ra c t c l a s s An imal
3
4 pub l i c An imal ( ) { }
5
6 ab s t ra c t pub l i c v o i d a c t ( L i s t<An ima l > newAn ima l s ) ;
7 p r o t e c t e d v o i d i sA l i ve ( ) { }
8 protected void s etDead ( ) { }
9
10
11 c l a s s Rabb i t extends An imal {
12
13 XXX
14 p r i v a t e v o i d i n c r ementAge ( ) { }
15 p r i v a t e v o i d giveB i rth ( L i s t<An ima l > newRabb i t s ) { }
16
¿Qué tendremos que añadir a la línea 1 3 , en vez de XXX para que el código no genere un error de
,
compilación?:
a . pub l i c Rabb i t ( ) ;
b. pub l i c v o i d a c t ( L i s t<An ima l > newRabb i t s ) { }
c. pub l i c v o i d a c t ( L i s t<An ima l > newRabb i t s ) ;
d. El código se compilará sin ningún error de todas formas.
Reserva 2: Según el texto de la bibliografia básica de la asignatura, ¿cómo se usa instanceofpara averiguar si
el tipo dinámico de un objeto (miobj) es de una cierta clase (MiClase)?
a. MiClase.instanceof(miobj)
b. java.lang.Object.instanceof(miobj, MiClase)
c. miobj instanceof MiClase
d. Object.instanceof(miobj, MiClase)
Funcionalidades
a) [1 punto] Diseñar utilizando el 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) [1 punto] Implementar el método que permite producir listados de préstamos según el tipo
de material. Justifíquese las opciones y decisiones que se tomen.
e) [2 puntos] Implementar la funcionalidad de la preparación y exportación de una lista de
solicitudes que se quiere hacer a una biblioteca como parte del préstamo entre bibliotecas.
Justifíquese las opciones y decisiones que se tomen.
d) [2,5 puntos] Se quiere añadir una cafetería a la biblioteca para que los clientes puedan tomar
algo mientras miran los libros, revistas o periódicos. Se quiere utilizar el sistema de gestión
de la biblioteca para gestionar la compra y venta de los productos de la cafetería. Indique los
cambios que serían necesarios en el diseño y la implementación para permitir esa nueva
funcionalidad.
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA = ESCUELA TÉCNICA SUPERIOR DE.
INGENIERÍA IN"FORMÁTlCA
71 901072 � PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENlEIÚA INFORMÁTICA /
TECNOLOGÍAS DE. LA INFORMACIÓN}
JUNIO 2016 = MODELO C = NO ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONAL
Las preguntas de reserva sólo tendrán utilidad en el caso de que alguna de las 1 4 preguntas iniciales del test
sea anulada por cualquier circunstancia. Caso de ocurrir este hecho, si se produjera la anulación de alguna de
las 1 4 preguntas iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso de que una
segunda pregunta de las 1 4 iniciales fuese anulada, entonces la segunda pregunta de reserva sustituiría a esta
segunda pregunta anulada. En aquellos hipotéticos casos en los que se produj ese la anulación de una tercera o
sucesivas preguntas de las 1 4 iniciales, entonces sólo en ese caso, las preguntas tercera y sucesivas anuladas
se considerarían como correctas (al no existir más preguntas de reserva que las sustituyan).
Pregunta 2 : Segú n el texto d e l a bibliografía básica d e la asignatu ra, ¿cuál d e l a s sigu ientes afirmaciones N O
es correcta?
a . Los campos a l m acenan datos d e manera no persistente d entro de u n o bj eto.
b. Los constructores son responsa bles de gara ntizar que un o bj eto s e configu re apropiadamente e n el
momento d e crearlo por prim era vez.
c. Los métodos implementan el co mporta m iento de un obj eto; proporcionan s u funcionalidad.
d. N i nguna d e las a nteriores.
Pregunta 3: Queremos compilar el siguiente cód igo que se puede enco ntrar en el texto base d e la asignatu ra
y q u e ha sido modificado convenientemente. ¿Cuál es e l resu ltado q u e o btenemos al compilar?
1 pub l i c c l a s s P r u e b a
2 {
3 pub l i c s t a t i c vo i d ma i n ( S t r i ng a r g s [ ] )
4 {
5 String cadenal = " e j emPLO " ;
6 String cadena2 = " E JEMPLO " ;
7 c a d e n a l . t o Upp e r C a s e ( ) ;
8
9 if ( c a d e n a l . e qu a l s ( ca de na 2 ) )
10
11 S y s t e m . ou t . p r i n t l n ( " S o n i g u a l e s " ) ;
12
13 else
14
15 S y s t e m . ou t . p r i n t l n ( " S o n di f e re n t e s " ) ;
16
17
18
Pregunta 4 : Según el texto d e la bibl iografía básica d e la asignatu ra, ¿ q u é d e b i l itaría la encapsulación?
a . Em plear e l acceso protegido a l o s métodos d e una clase.
b. Em plear e l acceso protegido a los cam pos de una clase.
c. Em plear e l acceso protegido a los co nstructores de una clase.
d. N i nguna d e las a nteriores.
1 imp o r t j ava . u t i 1 . * ;
2 pub 1 i c c 1 a s s Mu s i c O r ga n i z e r
3 pub 1 i c s t a t i c vo i d ma i n ( S t r i n g a r g s [ ] ) {
4 A r r a yL i s t < S t r i n g > a = n ew A r r a y L i s t (5 ) ;
5 f o r ( i n t i = O ; i <= 5 ; i + + )
6 {
7 a . a dd ( " Ho 1 a " ) ;
8
9 S y s t em . o u t . p r i n t 1 n ( " Fu n c i o n a " ) ;
10
11
La com pilación pro d uce u n warning. ¿Cómo podemos resolver ese pro blema?
a. Sustituyendo l a línea 4 por: A r r a y L i s t a = n ew A r r a y L i s t ( 5 ) ;
b. Sustituyendo la línea 4 por: A r r a y L i s t a = n ew A r r a y L i s t < S t r i ng> ( 5 ) ;
c. Sustituyendo la línea 4 por: A r r a y L i s t < S t r i ng> a = new A r r a yL i s t < S t r i n g > (5) ;
d. Tanto ( a ) como ( e ) res uelven el problema.
Pregunta 7 : Queremos compilar el sigu iente código que se puede encontrar en el texto base d e la asignatu ra,
conve n i enteme nte mod ificado. ¿Qué ocurre a l com pilarlo con Bl ueJ ?
1 imp o r t j ava . u t i l . L i s t ;
2 pub l i c a b s t r a c t c l a s s An i m a l
3 {
4 p r i v a t e b o o l e a n a l ive ;
5 private S t r i n g f i e l d ;
6 p r i v a t e S t r i n g l o c at i o n ;
7
8 pub l i c ab s t r a c t A n i ma l ( S t r i ng f i e l d , S t r i n g l o c at i o n )
9 {
10 a l ive = t ru e ;
11 th i s . f i e l d = f i e l d ;
12 th i s . l o ca t i o n = l o ca t i o n ;
13
14
15 ab s t ra c t pub l i c v o i d a ct ( L i s t <A n i ma l > n e wAn imal s ) ;
16
Pregunta 8 : Segú n el texto d e l a bibliografía básica de la asignatu ra, las s u bclases d e E r r o r suelen esta r
reservadas para ...
a . Los e rrores d el sistema en tiem po d e ejecución.
b. Los e rrores del sistema en tiem po de compilación.
c. Los e rrores d e programación en tiempo d e com p ilación.
d. N i nguna d e las a nteriores.
Pregunta 9 : Según el texto d e la bibl iografía básica d e la asignatu ra, ¿cuál es el método i mprescindible y q u e
ha d e i m pl ementarse siem pre d e l a i nterfaz S e r i a l i z ab l e cuando queremos implementar la
serial ización?
a . El métod o I OWrite.
b. El métod o l n putOutputWrite.
c. El métod o WriteOutput.
d. N i nguno d e los a nteriores.
Pregunta 10: Queremos com p i l a r el siguiente cód igo que se puede encontrar en el texto base de la asignatu ra
y q u e ha sido conven ientemente mod ificado. El programa compila sin problemas pero no m uestra por
pantal l a e l texto "Ejemplo de texto". ¿ Qué tend ríamos que añad i r / modificar para se mostrase?
Pregunta 11: Según el texto d e l a bibl iografía básica de la asignatura, ¿ q u é d efine e l térmi no acoplamiento?
a . L a bondad d e la correspondencia e ntre una u n i d a d d e código y una tarea lógica o e ntidad.
b. La interco nexión existente entre clases, busca ndo un acoplamiento lo menor posi ble.
c. La capacid ad d e u n obj eto d e comportarse como otra clase d e la cual proviene.
d. N i nguna d e las a nteriores.
Pregunta 12: Sea el siguiente fragmento de código modificado de la clase Ma i 1 I tem mostrada en e l l i bro
de texto:
1 p u b 1 i c c 1 a s s Ma i l i t e m {
2 s t a t i c S t r ing f rom ;
3 s t a t i c S t r ing t o ;
4 s t a t i c S t r ing me s s age ;
5 i n t numb e r ;
6
7 p u b 1 i c s t a t i c v o i d ma i n ( S t ri n g a r g s [ ] )
8 Mai 1 I tem m = new Ma i 1 I tem ( " Ho 1 a " , "Adi o s " , " Lu e go " , 3) ;
9 S ys t em . o u t . p r i n t 1 n ( " Func i on a " ) ;
10
11
12 p ub 1 i c Ma i l i t e m ( S t r i n g f r om , S tring to , S t r i n g me s s ag e , i n t numb e r ) {
13 t hi s . f rom = f rom ;
14 thi s . to = t o ;
15 thi s . me s s ag e = me s s ag e ;
16 thi s . numb e r = numbe r ;
17
18
Pregunta 13: Seg ú n el texto d e l a bibliografía básica d e la asignatura, ¿qué podemos afirmar sobre las pruebas
d e regresión?
a . L a modificación d e software aca rrea co n m ucha facil idad errores adicionales d e softwa re.
b. Las pruebas de regresión sobre un módulo determinado tras haberse hecho una modificación del cód igo
pueden o bvia rse si no se rea l izan ca m bios en ese módulo.
c. Los marcos d e regresión perm iten a utom atizar las pruebas d e regresión.
d . Si no se a utomatizan, es m á s probable q u e l a s pruebas d e regresión se l l even a cabo.
Pregunta 14: Según el texto de la bibl iografía básica de la asignatura, ¿ q u é podemos afirmar sobre el concepto
de s ustitución?
a. Pueden utilizarse o bj etos d e u n s u perti po en cualqui er l ugar en el q u e se espera objetos d e u n s u btipo.
b. Permite crear o bj etos de u n clase que es a bstracta.
c. Permite q u e una va riable a l m acena obj etos de d iferentes ti pos (en concreto, del tipo d eclarado o de
cualquier su perti po del tipo declarado).
d. N i nguna d e las a nteriores
RESERVA 1 : Si un a clase B extiende u na clase abstracta A que tiene u n método a bstracto me t, ¿qué podemos
afi rmar?
a. Que n ecesariamente B es a bstracta.
b. Que s i B i m plementa el método m et, ento nces seguro que B no es a bstracta.
c. Que no se pueden crear i nstancias de A.
d . Que puedo crear insta ncias d e A.
RESERVA 2: Seg ú n el texto de l a bibliografía básica de la asignatura, ¿qué puede usarse para genera r la
d escripción d e las interfaces d e las clases a partir del código fuente?
a. J D K
b . J U nit
c. Code Pad
d. N i nguna d e las a nteriores
Funcionalidades
Los SIGB permiten la implementación desde labores simples de gestión de una alta de usuario, hasta
operaciones más complejas como es la gestión de préstamos o inventario. En esta práctica, se
propondrán diferentes funcionalidades para el sistema de gestión bibliotecaria:
• Añadir nuevos materiales a la colección de la biblioteca (rellenando los datos de un formulario).
Cada tipo de material debería tener su propia colección (libros, revistas, periódicos, audio, video,
etc.).
• Borrar materiales de la colección.
• Realizar búsquedas sencillas sobre los materiales.
• Gestionar suscripciones a revistas y periódicos.
• Gestión de usuarios: altas, bajas, generación de tmjetas, historiales de préstamo, control de acceso
(diferenciar entre dos perfiles: usuarios y bibliotecarios).
• Realización básica de Préstamos : prestar un material si está disponible en la biblioteca, asignar
fechas de devolución.
• Producir listados de préstamos según el tipo de material.
• Realizar búsquedas flexibles sobre los materiales en la biblioteca combinando varios campos de
búsqueda.
• Control de préstamos : número máximo de ítems de préstamo (6 por usuario, independiente de
tipo de material), emisión de avisos de materiales fuera de plazo, gestión de multas, etc.
• Producir listados de los materiales prestados.
• Realizar búsquedas flexibles sobre los materiales en varias bibliotecas a la vez combinando varios
campos de búsqueda.
• Préstamos entre bibliotecas: poder solicitar materiales a otras bibliotecas y procesar las solicitudes
de otras bibliotecas. El procesamiento de dichas solicitudes se lleva a cabo usando archivos de
solicitud de la siguiente manera:
o Preparar y exportar una lista de solicitudes de materiales que se quiere hacer a una
biblioteca. Se prepara la lista usando un formulario para identificar el nombre de la
biblioteca, el nombre del libro, el autor y el nombre de esta biblioteca. Una vez terminado,
se guardar la lista en un archivo de texto. No es necesario en esta práctica preocuparse de
cómo se enviaría el archivo a otras bibliotecas.
o Importar y procesar un archivo de solicitudes para materiales proveniente de otra
biblioteca. Se debe actualizar el estatus de cada material para marcarse como prestado,
pero en vez del identificador del usuario debería aparecer el identificador de la biblioteca.
• Control de reservas: poder reservar un material si está ya prestado, gestión de avisos (al usuario
con el material que convendría devolverlo porque hay alguien esperando y al usuario con la
reserva cuando el material ya está devuelto).
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) [1,5 puntos] Implementa un método (o métodos) que permitan la importación (cargar al
programa) de los diferentes usuarios que hay en el sistema de gestión de biblioteca. Justifíquese
las opciones y decisiones que se tomen.
e) [3,0 puntos] Implementa un método (o métodos) que implementen el proceso devolución de un
préstamo. Deberá tenerse en cuenta las implicaciones que un préstamo puede acarrear: sanciones
(si se entrega fuera de plazo), actualización de ficheros que contienen los préstamos (indicar la
solución que se plantea en este caso), actualización de las reservas que haya sobre ese libro, etc.
Justifíquese las opciones y decisiones que se tomen.
d) [1,0 puntos] Proporcione un método (o métodos) que permita mostrar por pantalla un formulario
básico en modo gráfico que permita generar las estadísticas de los préstamos que se encuentran
almacenados en un fichero. La pantalla permitirá elegir entre dos listados: libros más prestados,
usuarios más activos (con mayor número de préstamos). Pedirá un rango de fechas y aplicará ese
criterio a la hora de buscar los contenidos en los ficheros. Los mostrará por pantalla de mayor a
menor. Se pide expresamente la parte gráfica. El objetivo es ver el conocimiento y destreza en el
uso de las librerías Swing y/o AWT. No desarrolle código asociado a la funcionalidad del
préstamo. Justifíquese las opciones y decisiones que se tomen.
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA - ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA
71 901 072 - PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA 1 TECNOLOGÍAS DE LA
INFORMACIÓN �
Las preguntas de reserva sólo tendrán utilidad en el caso de que alguna de las 1 4 preguntas iniciales del test
sea anulada por cualquier circunstancia. Caso de ocurrir este hecho, si se produjera la anulación de alguna de
las 1 4 preguntas iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso de que una
segunda pregunta de las 1 4 iniciales fuese anulada, entonces la segunda pregunta de reserva sustituiría a esta
segunda pregunta anulada. En aquellos hipotéticos casos en los que se produjese la anulación de una tercera
o sucesivas preguntas de las 1 4 iniciales, entonces sólo en ese caso, las preguntas tercera y sucesivas
anuladas se considerarían como correctas (al no existir más preguntas de reserva que las sustituyan).
Pregunta 2: I n d i q u e el o rden seguido en los ejemplos del texto d e la bibliografía básica d e la asignatu ra e n
cuanto a l a parte interna d e u na clase:
publ i c c l a s s NornbreClase
{
PARTE INTERNA DE UNA CLASE
int A = 9 ;
float B = 3 . 3 F ;
char e = � vJ i ;
S y s t em . out . p r i n t 1 n ( A + B > 1 2 ) ;
S y s t em . out . p r i n t 1 n ( A >= 8 && � != 'w' ) ;
S y s t em . out . p r i n t 1 n ( ( C == 'e' ) 1 1 ( ( h + l". ) == 1 2 ) ) ;
I nd ica cual será l a salida por panta l l a (cada va lor en una línea d iferente):
a. Tru e true fa lse
b. Tru e fa lse fa lse
c. Tru e fa lse true
d. False fa lse false
Pregunta 4: Indica cual de las siguientes afirmaciones es correcta en relación a q u e tipo de bucle se d e be
utilizar:
a. Si tenemos u n b u c l e q u e no está relacionado con colecciones ha brá q u e elegir el bucle fo r-each
b. El bucle fo r es preferible si, a l principio del bucle, no sabemos cuantas veces tenemos q u e
ejecutarlo.
c. Si n ecesitamos iterar a través de todos los elementos de una colección, el bucle for-each es casi
siempre la opción más elegante.
d . E l bucle for-each es adecuado cuando nos hace falta util izar d e manera explícita el contador d e l
bucle.
Pregunta 10: I n d i q u e cual de las siguientes opciones declarará un método en una clase que fuerza a un a
su bclase a implementarlo:
a. static void methoda (double d 1 ) {}
b. p u blic native d o u b l e methoda();
c. a bstract p u blic voi d m ethoda();
d. protected vo id methoda (double d 1){}
Pregunta 11: Indica cual d e las siguientes afirmaciones es correcta en relación a un marco d e Swi ng
(J Fra m e ) :
a. Está com p uesto d e tres partes: la ba rra d e título, una barra d e m e n ú opcional y lo s cuadros d e
d i á l ogo.
b. Está com p uesto de tres partes: la ba rra de título, el panel de contenido y el gestor de los bordes.
c. Está com p uesto d e tres partes: la ba rra d e título, una barra d e menú opcional y el panel de
contenido.
d. Está com p uesto d e cuatro partes: l a ba rra d e título, una barra d e m e n ú opcional, el panel de
contenido y el gestor de l o s bordes.
Pregunta 13: Teniendo en cuenta el modelo en cascada presente en la construcción del software, indica
cual de las siguie ntes fases NO pertenece al d esarrollo de softwa re:
a. Aná l isis del pro blema.
b. Prueba U n itaria.
c. Prueba Secuencial.
d. E ntrega del sistema a l cliente.
Pregunta 14: La siguiente i magen corresponde a un pa ntall azo de la aplicación Bl ueJ. En la parte inferior
d erecha hay un componente recta ngular de BlueJ que en s u interior co ntiene la expresión 1313 % 4� q u e a
su vez está rodeada por u n rectá ngulo interm itente. ¿Qué componente o herramienta es esta ?:
:�)%�)):}3: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}�:�?�";.�:::.::�'»::t�:��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .
•�t...#
�
... ;$:�¡
. � �
� � ::;: ::;: � �
� � � � ::;: ::;: � �
� ..-s
. '
�
... ,... ��"l¡
�
·
. : .: .: .: .: . : .: : :.: .: .:�,:>·/�': .:. :1 .•. �.�
:....
"� ·[ •
\:-:..�' · ¡'''����'�'�'��'� �;
a. Cod e Add
b. Code Exp
c. Code Pad
d. Code Area
Pregunta R2: I n d i q u e el resu ltado de ejecutar el siguiente código que se m uestra a contin uació n :
• Préstamos: presta r los materiales a los usuarios (tanto en papel como en otros formatos), reservas d e
materiales y a e n préstamos, contro l d e présta mos ( emisión d e avisos d e materia l es fuera d e pl azo), gestión
de m ultas.
• Suscripciones: gestión de las s uscri pciones a revistas y periódicos.
• Catá logo e n l ínea u O PAC (del inglés Online P u blic Access Cata log) : interfaz pú bl ica a los servicios de la
Funcionalidades
Los 5 1 G B perm iten la implementación desde l a bo res simples de gestión de una alta de usuario, hasta
operaciones más com p l ejas como es la gestión de préstamos o inventa rio. En esta práctica, se propondrán
d iferentes funcionalidades para el sistema d e gestión bibl iotecaria:
• Añadir n u evos materiales a la colección d e la biblioteca ( rel lenando los datos d e u n fo rmulario). Cada
tipo d e material debería tener s u propia col ección ( l i bros, revistas, periódicos, a ud io, video, etc.).
• Borrar materiales de la colección.
• Rea lizar búsquedas senci l l as sobre los materiales.
• G estionar suscripciones a revistas y periód icos.
• G estión d e usuarios: altas, bajas, generación d e tarj etas, h istoriales d e préstamo, control d e acceso
(d iferenciar entre dos perfiles: usuarios y biblioteca rios).
• Real ización básica d e Préstamos: presta r u n material si está d ispon i ble en la biblioteca, asignar fechas
de d evol ución.
• Pro d ucir l istados d e préstamos según el tipo d e material.
• Rea l izar búsquedas fl exi bles so bre los materiales en la bibl ioteca com binando varios cam pos d e
búsqueda.
• Control d e préstamos: n ú m ero m áximo d e ítems d e préstamo (6 por usuario, independiente d e tipo d e
material), e m isión d e avisos d e materiales fuera d e plazo, gestión d e m u ltas, etc.
• Pro d ucir l istados d e los materia l es prestados.
• Rea l izar búsquedas fl exi bles sobre los materiales en varias bibl iotecas a la vez co m binando va rios
campos de búsqueda.
• Préstamos e ntre bibliotecas: poder so licitar materiales a otras bibliotecas y procesar las solicitud es d e
otras bibl iotecas. El procesa m i ento d e d ichas solicitudes se lleva a ca bo us ando archivos d e solicitud d e
l a siguie nte manera :
o Prepara r y exportar u na l ista d e solicitudes d e materia l es q u e se q u i e re hacer a una biblioteca.
Se prepara l a lista usando un form u l ario para identificar el nom bre de la biblioteca, el nom bre
d e l l i b ro, el a uto r y el nombre de esta bibl ioteca. U na vez term inado, se guardar la lista en u n
archivo d e texto. No es necesario en esta práctica preocuparse d e cómo se enviaría el archivo a
otras bibl iotecas.
o I m porta r y procesar u n a rchivo d e so licitudes para materia l es proveniente d e otra bibl ioteca. Se
debe actual izar el estatu s d e cada material para marcarse como prestado, pero en vez del
i de ntificador del usuario debería aparecer el i dentificado r d e la biblioteca.
• Control d e reservas: poder reservar u n material si está ya prestado, gestión de avisos (al usuario co n e l
material q u e co nvendría d evolverlo porq u e hay algui en esperando y al usuario co n la reserva cuando e l
material ya está devuelto).
a) [1,0 puntos] Diseñar utilizando u n paradigma o rientado a obj etos, los elementos necesarios para la
apl icación explicada d e la práctica d u rante el curso. Es necesario identificar la estructu ra y las
relaciones d e herencia (mediante el uso d e u n d iagrama d e clases) y d e uso de las clases necesarias
para al macenar y gestionar esta información. Debe hacerse uso de los m ecanismos de herencia
siempre que sea posible. Se va lorará un buen d iseño que favorezca la reutil ización de código y facilite
su mante n i miento.
b) [2,0 puntos] I m plementa un m étodo (o métodos) que permitan añadir n u evos materiales a la colección
de la biblioteca (rellenando los datos de un form u l ario). Cada tipo de material d e bería tener s u propia
colección ( l i bros, revistas, periódicos, a u d io, video, etc. ) .
e) [2,0 pu ntos] I m p l em enta u n m étodo (o métodos) q u e permitan la i m po rtación y procesamiento d e u n
archivo d e so licitudes para materiales proveniente d e otra biblioteca (préstamos entre bibliotecas). S e
d e b e actual izar el estatu s d e cada material para marcarse como prestado, pero en vez del identificador
d e l usuario debería aparecer el identificador d e la biblioteca.
d ) [1,5 puntos] Para la sigui ente versión del softwa re s e desea añadir la figura d e la Ed itorial . De cada
e d itorial se debe tener u n l istado d e los l ibros y audiol i bros que proporciona, así como s u precio, q u e
pod ría actual izarse manual m ente después d e la ú ltima venta. El sistema debería consultar el inventa rio
a final de año, y de los l i bros más prestados (top 10%), rea lizar un pedido a la Ed itorial correspond i e nte
de un 20% más de l ibros. El porcentaje de l ibros más prestados y el porcentaje de l ibros pedidos a las
Ed itoria l es, podrán ser configu ra bles dependiendo del presu p uesto de la bibl ioteca. ¿Qué cambios
serían n ecesarios en el d iseño para adaptar esta nueva funciona lidad? I m plemente el método (o
m étodos) q u e perm ita esta n u eva funcionalidad.
UNIVERSIDAD NACJONAL DE EDUCACIÓN A DISTANCIA - ESCUELA TÉCNICA SUPE.RI OR DE
INGENIElÜA INFO.RMÁTlCA
71 901072 � PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA 1
TECNOLOGÍAS DE. LA INFORMACIÓN)
SEPTIEMBRE. 2016 - MODELO D - No ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONAL
Las preguntas de reserva sólo tendrán utilidad en el caso de que alguna de las 1 4 preguntas iniciales del test
sea anulada por cualquier circunstancia. Caso de ocurrir este hecho, si se produjera la anulación de alguna de
las 1 4 preguntas iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso de que una
segunda pregunta de las 1 4 iniciales fuese anulada, entonces la segunda pregunta de reserva sustituiría a esta
segunda pregunta anulada. En aquellos hipotéticos casos en los que se produjese la anulación de una tercera
o sucesivas preguntas de las 1 4 iniciales, entonces sólo en ese caso, las preguntas tercera y sucesivas
anuladas se considerarían como correctas (al no existir más preguntas de reserva que las sustituyan).
l . pub l i c a b s t r a c t c l a s s C l a s eA {
2 . pub l i c f i n a l v o i d me t o do l ( )
3 . S y s t em . ou t . p r i n t l n ( " C l a s eA " ) ;
4.
5.
6. pub l i c s t a t i c v o i d ma i n ( S t r i ng [ ] args )
7. C l a s e A ob j = n e w C l a s eB ( ) ;
8. o b j . me t o d o l ( ) ;
9.
10 .
11 .
12 . c l a s s C l a s eB e x t e n ds C l a s e A {
13 . pub l i c vo i d me t o do l ( ) {
14 . S y s t em . ou t . p r i n t l n ( " C l a s e B " ) ;
15 .
16.
a. ClaseA
b. ClaseB
c. E rror d e com pilación en l a línea 7
d. E rror d e com pilación en l a línea 1 3
Pregunta 2 : De acuerdo a la bibliografía básica, el que u n ca m po o m iem bro públ ico d e una clase sea
estático impl ica q u e :
l. pub l i c c l a s s C l a s e A {
2. p r o t e c t e d vo i d me t o do l ( )
3. S y s t em . ou t . p r i nt ( " E n t r o e n e l mé t o do de s de C l a s e A" ) ;
4.
5.
6.
7. c l a s s C l a s eB e x t e n ds C l a s e A {
8. pub l i c vo i d me t o do l ( ) {
9. S y s t em . ou t . p r i n t ( " E n t ro e n e l mé t o do de s de C l a s e B " ) ;
10 .
11 .
¿Qué salida obtendremos al ejecutar el siguiente cód igo d entro d e u n método main i mplem entad o en
cualquiera d e las clases?
15 . C l a s eA p = n ew C l a s eB ( ) ;
16. p . me t o do l ( ) ;
Pregunta 5: Da do el siguiente cód igo ind icar cuál d e las afirmaciones es correcta. Supo nga q u e la s
importaciones d e l i brerías correspond i e ntes se han realizado.
6. L i s t l i s t a = n ew A r r a y L i s t ( ) ;
7. l i s t a . a dd ( "AA" ) ;
8. l i s t a . a dd ( " BB " ) ;
9. l i s t a . a dd ( 8 ) ;
10 . f o r ( i nt n=O ; n< l i s ta . s i z e ( ) ; n++ )
11 . S y s t e m . ou t . p r i n t ( l i s t a . g e t ( n ) ) ;
12 .
a. AABB
b. AABB8
c. Error de com pilación en l a línea 6
d. Error d e com pilación en l a línea 9
Pregunta 7 : Seg ú n el texto d e la bibliografía básica d e la asignatu ra, i ndi que c u á l d e l a s sigu ientes
afirmaciones es correcta :
a. U n a cl as e a bstracta no puede implementar ni nguna i nterface.
b. Si un a clase tiene sólo alguno d e sus métodos a bstractos, no es necesario d eclararla como
a bstracta.
c. U na clase a bstracta no puede extender otra clase q u e no sea a bstracta.
d . U na clase q u e hereda d e u na clase a bstracta tiene que implementar todos l o s métodos a bstractos
para no ser a bstracta.
Pregunta 8 : Según el texto d e la bibl iografía básica d e la asignatura, el alcance d e una va riable:
a. Defin e e l va lor m áximo q u e puede almacenar d icha variable.
b. Defin e qué métodos de otras clases pueden acceder a la va riable.
c. Defin e q u é clases externas pueden utilizar d icha variable.
d. N i nguna d e las a nteriores.
a. AABBCC
b. AAB
c. AABB
d. E l cód igo no compila
l . pub l i c c l a s s C l a s e A {
2 . p r i v a t e S t r i ng m i e mb ro l ;
3. p r i v a t e b o o l e a n m i e mb r o 2 ;
4.
5. pub l i c s t a t i c v o i d ma i n ( S t r i ng [ ] a r g s )
6. C l a s e A ob j = n e w C l a s eA ( ) ;
7. i f ( ! ob j . mi e mb ro 2 ) {
8. S y s t em . o ut . p r i n t l n ( " M i e mb r o l " + ob j . m i e mb r o l ) ;
9.
10 .
11 . }
a. Error d e com pilación en l a línea 6
b. Error de com pilación en l a línea 7
c. Error d e com pilación en la línea 8
d. M i em bro l = n u l l
a. No se m uestra na da
b. cad e n a l == cadena2
c. cadena l.equals(ca dena2)
d. B y C son ciertas
Pregunta 12: Seg ú n el texto d e la bibl iografía básica d e la asignatura, i n d i q u e cuál d e las siguie ntes
afirmaciones es correcta :
a. El acoplamiento d escri be el encapsu lam iento d e las clases.
b. E l e ncapsulamiento a propiado en las clases red uce s u cohesión.
c. E l e ncapsulamiento a pro piado en las clases red uce s u acoplamiento.
d . L a cohesión d e u na u n i d a d d e cód igo refleja s u acoplamiento.
l . c l a s s C l a s eA {
2 . pub l i c f l o a t me t o do l ( doub l e d )
3 . S y s t em . ou t . p r i n t l n ( " C l a s eA " ) ;
4 . return l . O F ;
5.
6.
7.
8. pub l i c c l a s s C l a s e B e x t e n d s C l a s eA {
9. pub l i c doub l e me t o d o l ( do ub l e d )
10 . S y s t em . ou t . p r i n t l n ( " C l a s e B " ) ;
11 . return 1 . 0 ;
12 .
13 .
14 . pub l i c s t a t i c v o i d ma i n ( S t r i n g [ ] a rg s )
15 . n ew C l a s e B ( ) . me t o do l ( O . O ) ;
16 .
17 .
a. ClaseA
b. ClaseB
c. 1.0
d. E l código n o compila
Pregunta 14: De acuerdo a l a bibliografía básica, ¿qué significa insta nciar una clase?
a. Dupl icar u na clase.
b. H eredar de una clase.
c. Crear u n o bjeto a partir d e u na clase.
d. Conecta r dos clases entre sí.
RESERVA 1: Respecto a las excepciones en J ava, ¿Cuál de las siguientes afirmaciones es correcta?
a. Todas las s u bclases d e la clase está ndar d e Java RunTim e Exception s o n excepciones comprobadas.
b. Todas las s u bclases de la clase está ndar de Java Exception son excepciones compro badas.
c. E rror es u na s u bclase d i recta d e Throwa ble, m ie ntras que Exceptio n es una s u bclase d irecta de
Error.
d . Tanto E rror como Exception s o n s u bclases d i rectas d e Throwa ble.
Funcionalidades
Los SIGB permiten la implementación desde labores simples de gestión de una alta de usuario,
hasta operaciones más complejas como es la gestión de préstamos o inventario. En esta práctica, se
propondrán diferentes funcionalidades para el sistema de gestión bibliotecaria:
• Añadir nuevos materiales a la colección de la biblioteca (rellenando los datos de un formulario).
Cada tipo de material debería tener su propia colección (libros, revistas, periódicos, audio,
video, etc.).
• Borrar materiales de la colección.
• Realizar búsquedas sencillas sobre los materiales.
• Gestionar suscripciones a revistas y periódicos.
• Gestión de usuarios : altas, bajas, generación de tarjetas, historiales de préstamo, control de
acceso (diferenciar entre dos perfiles: usuarios y bibliotecarios).
• Realización básica de Préstamos: prestar un material si está disponible en la biblioteca, asignar
fechas de devolución.
• Producir listados de préstamos según el tipo de material.
• Realizar búsquedas flexibles sobre los materiales en la biblioteca combinando varios campos de
búsqueda.
• Control de préstamos: número máximo de ítems de préstamo (6 por usuario, independiente de
tipo de material), emisión de avisos de materiales fuera de plazo, gestión de multas, etc.
• Producir listados de los materiales prestados.
• Realizar búsquedas flexibles sobre los materiales en varias bibliotecas a la vez combinando
varios campos de búsqueda.
• Préstamos entre bibliotecas: poder solicitar materiales a otras bibliotecas y procesar las
solicitudes de otras bibliotecas. El procesamiento de dichas solicitudes se lleva a cabo usando
archivos de solicitud de la siguiente manera:
o Preparar y exportar una lista de solicitudes de materiales que se quiere hacer a una
biblioteca. Se prepara la lista usando un formulario para identificar el nombre de la
biblioteca, el nombre del libro, el autor y el nombre de esta biblioteca. Una vez
terminado, se guardar la lista en un archivo de texto. No es necesario en esta práctica
preocuparse de cómo se enviaría el archivo a otras bibliotecas.
o Importar y procesar un archivo de solicitudes para materiales proveniente de otra
biblioteca. Se debe actualizar el estatus de cada material para marcarse como prestado,
pero en vez del identificador del usuario debería aparecer el identificador de la
biblioteca.
• Control de reservas: poder reservar un material si está ya prestado, gestión de avisos (al usuario
con el material que convendría devolverlo porque hay alguien esperando y al usuario con la
reserva cuando el material ya está devuelto).
a) [1 punto] 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) [1,5 puntos] Se desea incluir en la biblioteca un nuevo tipo de recurso, los videojuegos para
diferentes consolas (PS3, PS4, Xbox 360, Xbox o Nintendo). Indica los cambios que habría que
realizar en el sistema de gestión de préstamos, así como la estructura de clases resultante.
e) [2 puntos] Implementar los métodos de préstamo y devolución de videojuegos teniendo en
cuenta, en el caso de las devoluciones, las implicaciones que dichos préstamos pueden acarrear:
sanciones (si se entrega fuera de plazo), actualización de ficheros que contienen los préstamos
(indicar la solución que se plantea en este caso), actualización de las reservas que haya sobre ese
videojuego, etc. Justifíquese las opciones y decisiones que se tomen.
d) [2 puntos] Proporcione un método (o métodos) que permita mostrar por pantalla un formulario
básico en modo gráfico que permita generar las estadísticas de los préstamos de videojuegos
que se encuentran almacenados en un fichero. La pantalla permitirá elegir entre dos listados:
videojuegos más prestados, usuarios más ')ugones" (con mayor número de préstamos). Pedirá
un rango de fechas y aplicará ese criterio a la hora de buscar los contenidos en los ficheros. Los
mostrará por pantalla de mayor a menor. Justifíquese las opciones y decisiones que se tomen.