Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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".
¿Qué pasará si se compila 1 ejecuta este código?
8:
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.
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"); } }
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
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
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> new Vector<Integer>(99); v.add(99);
v
c.Vector<Integer> v = new Vector<Integer>(99, 99); v.add(99);
d.Vector<Integer> v = new Vector<Integer>(99); v.add(99, 99);
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 "finally".
PARTE PRÁCTICA
Una empresa de alquiler de automóviles tiene a su disposición un conjunto de vehículos indicados
en la siguiente tabla. Se quiere diseñar e implementar un programa que almacene y gestione la
información relacionada con estos vehículos.
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?
Vehiculo vehiculos[] = new Vehiculo[5];
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. 4y 6
d. 3 y4
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; =
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.
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.
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.
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.
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) {}
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;
//Insertar código aquí
10
11
{ return x; }
a.float getVar
getVar ( ) { return X; }
b.public f
getVar ( ) { return x; }
loat
c. float double getVar (float f ) return f; }
d.public float
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
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
}finally{
9
11 Bloque4
10
}
11 11 BloqueS
12
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
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/ lECNOLOGIAS DE LA INFORMACIÓN)
SEPTIEMBRE 2011- MODELO A -No ESTÁ PERMITIDO EL USO DE MATERIAL
ADICIONA
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;}
¿Qué es necesario si queremos utilizar el método de una clase predefinida como por ejemplo
3
lnteger.parselnt("String");?
Solamente se crea una instancia de la clase predefinida.
En este caso: lnteger integ new lnteger(); integ.parselnW'String");
=
Un método de clase static, ¿se pod ría llamar sin instanciarse un objeto de la clase?
4
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
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
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 lacorrecta 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 "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
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);
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
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
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
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
Permiten definir una clase y crear una instancia de ella, todo en un solo paso Todas las
anteriores son correctas
PARTE PRÁCTICA
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 ORIENTADAA OBJETOS (GRADO EN INGENIERIA INFORMÁTICA/ lECNOLOGIAS 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.
a) iguales
b) no son iguales
e) Error de compilación en la línea 11
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
3: Dado el siguiente código:
30. Set < Object >objetos = new HashSet< Object > ();
31. String 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 in t Ml.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 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.
18.
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.
};
14. 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
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
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;
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"?
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA - ESCUELA TÉCNICA SUPERIOR DE INGENIERIA
INFORMÁTICA
71 901 072 - PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERIA INFORMÁTICA / TECNOLOGIAS DE
LA INFORMACIÓN)
JUNIO 2012 - MODELO A -
1: Según el texto de la bibliografía básica de la asignatura, indique cuál de 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.
2: Dado el siguiente fragmento de código, indique cuál de las siguientes afirmaciones es el resultado de su
ejecución:
if{" S tr i ng " . t rim ( ) == "St ring")
S y s t e m . o u t . p r i n t l n ( '' Igual ' ' ) ;
el se
S y s t e m . out . print l n ( ''No Igual'') ;
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 de vida de una variable describe el número de veces que es utilizada en un método.
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 11 ( ( 4 --
4 1 && ( 1 < o 1 1
3 . 2 > 2 1 11 ( 4 --
4 1 && ( 1 < o 1
4. 2 > 2 1 11 4 - -
4 && ( 1 < o 1 1
1
(
5 . 34 ! = 1
false
(
1 && !
a. Las expresiones 3 y 4.
b. Las expresiones 2 y 4.
c. Las expresiones 3 y 5.
d. Las expresiones 4 y 5 .
5: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
correcta:
a. El lenguaje Java tiene tres variantes del ciclo for : for-each, for y far-do.
b. Un ciclo while es similar en s u estructura y propósito qu 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 un ciclo.
d. Un índice es un objeto que proporciona funcionalidad para recorrer todos los elementos de una colección.
6: la siguiente figura muestra una 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 la terminal de texto.
'!
pt1bli c void imprim.irMensaJeS iguiente ( )
else {
un.Hensaje. imprimir: ( ) :!
7: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
correcta:
ejecución:
cla ss T e st
9: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
correcta:
Las colecciones de objetos son objetos que pueden almacenar un número predeterminado e invariable de otros
objetos.
Un iteradar es u n objeto qu e proporciona funcionalidad para recorrer todos los elementos de un a colección .
Un ciclo consiste en la escritura repetida de un bloque de sentencias.
d. Un arreglo (array) es un tipo especial de colección que puede almacenar un número variable de elementos.
10: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
11: Dado el siguiente fragmento de código, indique cuál de las siguientes afirmaciones es el resultado de su
ejecución:
pu bl ic cl a s s T e st
1
príva te int i =
priva te in t j
priva te i nt getJ ( )
1
r et ur n j ;
13: Dado el siguiente fragmento de código, indique cuál de las siguientes afirmaciones es el resultado de su
ejecución:
public class T es t
{
pub l ic st at ic vo id main (S t r i n g a rgs [ ] )
{
char e ""' - 1 ;
S y s t e m . out . pr i n t l n ( c ) ;
a. L a expresió n '\ c h a r e = - 1 ; " provocar á u n erro r d e compilació n debid o a qu e e l rang o d e l a clas e " c h a r "
n6-1 ¡ .
es 0 - 2
b. No 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.
No habrá error de compilación, la salida será un carácter Unicode.
14: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
correcta :
a. Una superclase es una clase que es im 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.
15: Dado el siguiente fragmento de código, indique cuál de las siguientes afirmaciones es el resultado de su
ejecución:
import j ava . awt . * ;
{
s e tLay o u t ( new G rid Layo ut ( ) ) ;
for ( i nt i = 1 ; i <= 4 ; ++i)
{
add ( new Butt on ( I nt eger . t o S t r i n g ( i ) ) ) ;
pa c k ( ) ;
{
Tes tFrame tf = new TestFrame ( ) ;
a. El código compila, su ejecución provoca que todos los botones aparezcan en una sola columna.
b. El código compila, s u ejecución provoca que todos los botones aparezcan en un a 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. El código compila, pero se produce un error en tiempo de ejecución cuando se añaden los componentes.
PARTE PRÁCTICA
La práctica del presente curso ha sido una versión del legendario arcade "Space lnvaders". A continuación se muestra la
propuesta del juego tal y como se solicitaba para la práctica del curso.
..
.. 14•
..
..
H4v�
�:uardt.Ul
.......J
l. Naves alienígenas o UFOs, que se mueven 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 de la nave alcanza una nave
enemiga, ésta desaparece del juego.
4. Los misiles disparados por los UFOs (trayectoria descendente). Cuando un 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á un 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 que creas importantes.
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 NIVERSIDAD N ACIONAL DE E DUCACIÓN
D ISTANCIA – E SCUELA T ÉCNICA S UPERIOR DE I NGENIERÍA
A
I NFORMÁTICA
71901072 – P ROGRAMACIÓN O RIENTADA A O BJETOS (G RADO EN I NGENIERÍA I NFORMÁTICA / T ECNOLOGÍAS DE
LA I NFORMACIÓN )
J UNIO 2012 – M ODELO B – N O ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONAL
Pregunta 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.
Pregunta 2: Respecto a los bucles, indique cual de las siguientes afirmaciones es falsa:
a. El cuerpo de un bucle for-‐each puede repetirse 0 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).
public class TV {
private String marca;
private String modelo;
public TV(String marca, String modelo) {
this.marca = marca;
this.modelo = modelo;
}
public boolean equals(Object t) {
TV television=(TV)t;
return marca.equals(television.marca)&&
modelo.equals(television.modelo);
}
public int hashCode() {
return marca.length() * 10 + modelo.length();
}
}
if(tv1.equals(tv2)) {
System.out.println("los televisores son iguales");
} else {
System.out.println("los televisores no son iguales");
}
Pregunta 7: Dado el siguiente código, indique cual de las siguientes afirmaciones es cierta:
Pregunta 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. El objeto está muy acoplado.
c. El objeto está poco encapsulado.
d. El objeto presenta una baja cohesió n.
Pregunta 15: Si quisiera organizar los componentes de una interfaz gráfica de acuerdo a una tabla utilizaría como gestor
de contenido:
a. GridLayout
b. BoxLayout
c. FlowLayout
d. BorderLayout
1) Naves alienígenas o UFOs, que se mueven 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 de la nave alcanza una nave
enemiga, ésta desaparece del juego.
4) Los misiles disparados por los UFOs (trayectoria descendente). Cuando un misil alcanza a la nave, finaliza 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) [X 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 hacerse 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) [X puntos] Implemente la nueva clase NaveDeReconocimiento especificando sus atributos y métodos,
justificando las decisiones de implementació n que considere relevantes.
c) [X 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) [X 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
71901 072 - PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERiA INFORMÁTICA / TECNOLOGÍAS DE LA INFORMACIÓN)
p u b l i c cl a s s Ej emplo {
pr ivate int i=j ;
pr ivate int j = l O ;
publ ic static vo id m ain (S tring [ ] ar gs )
Sy s te m . out . p r i n t l n ( ( new Ej emplo ( ) ) . 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.
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é?
Animal a; /* Linea 1 */
Gato b; /* L i n ea 2 */
a = new Animal () ; /* L i n ea 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 = ( Gato ) 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 = new ( Gato ) a ; .
X = y -- ;
12: 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.
13: ¿De qué clase deriva la clase ArrayList?
a. AbstractList.
b. AbstractCollection.
c. ArrayCollection.
d. ListCollection.
14: Cuando queremos que un objeto oiga eventos de acció n disparados por el usuario, el objeto tiene
que implementar la interfaz ...
a. Acti onEvent.
b. Act i o nL i s t e ne r.
c. L i s t e ne r A c t i o n .
d. L i s t ene rEvent.
PARTE PRÁCTICA
Considere pa ra su estudio una ve rsión del conocido juego Space l nvaders. Este juego consiste en que
va rias fi las de naves al ien íge nas o UFOs avanzan hacia la base defensora, con movi mientos osci latorios de
izq uierda a derecha, bajando poco a poco . Así, una nave gua rdián defiende la base y trata de evita r los misi les
la nzados esporádica me nte por las naves invasoras. La nave gua rdián la nza dispa ros de uno en uno . El juego
fi naliza cu ando todos los invasores han sido alca nzados o cu ando los invasores llega n a la base.
a) [2,5 puntos] Suponga que la im ple mentación del juego se hace en base a la existe ncia de una clase Nave,
de tipo abstracto, que si rve de clase de referencia pa ra otras posibles su bclases (ta nto las naves
a l i e n íge nas co mo la nave gua rdiana). A pa rtir de ésta, se ge ne ra una nueva clase de nom i nada NaveUFO
que si rve pa ra model ar UNA nave UFO . El juego dispondrá de un tota l cuatro fi las de siete naves UFO cada
una de el las, que se encu entran en la pa rte s up e ri o r de la pa nta lla del juego . Proporcione la estructura de
am ba s clases (y del bloque completo de naves UFO), así como los dife re ntes atrib utos que co nsidere
i mp resci ndi bles pa ra cada una de e ll as y los princ ip ales métodos accesores y mod ificadores. Si se necesita
del uso de al guna otra clase auxi lia r, debe defini rse ta m bié n en este apa rtado.
b) [2,5 puntos] P roporcione el método de sp l a z arNave sUFO que si m ul a el movi miento de las naves
UFO a derecha e izquie rda. El movi miento se realiza rá cu ando el sa lta un determi nad o t i me r (que no hay
que im p lement a r, sólo el método que se l l a m a c u an d o este t i me r sa lta ). Las naves pa rten de la zo na su
perior
izq uierda y se desplazan hasta la pa rte derecha de la p an t al l a . Cuando llega n al fi nal, bajan todas las naves
una posición y co mie nza n a desplaza rse ahora hacia la izquie rda. Se deja a su elección el prototi po que
tie nen que tener estos métodos, pero han de se r co herentes con lo expuesto en el apa rtado anterior. Si se
necesita del uso de algun a otra clase auxi lia r, debe definirse ta m b i én en este apa rtado.
e) [1,5 puntos] P roporcione el método dispa raM isil, que si m u l a el dispa ro de un proyectil asce ndente por
pa rte de una nave U F O . Se recuerda la restricción de que en un momento dete rmin ado só lo puede h ab e r
activo un ún ico m i s i l . Se deja a su elección el p rototipo que tie nen que tener estos métodos, pero han de
se r co herentes con lo exp uesto en el prime r apa rtado. Si se necesita del uso de al guna otra clase auxi lia r,
debe definirse ta m b i é n en este apa rtado.
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA - ESCUELA TÉCNICA SUPERIOR DE INGENIERiA INFORMÁTICA
71901 072 - PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERiA INFORMÁTICA / TECNOLOGÍAS DE LA INFORMACIÓN)
SEPTIEMBRE 2012- MODELO
p u bl i c cl a s s Ej emplo
{
pr i vate i nt i= dame J ( ) ;
pr i vate int j= l O ;
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.
p u bl i c cl a s s Q {
publ ic s t a t i c vo id ma in ( S t r i n g argv [ ] ) {
int an ar [ ] =new i n t [ 5 ] ;
Sy s tem . out . p r in t ln ( anar [ O ] ) ;
a. Error: anar is referenced befare it is initialized
b. nu ll
c. o
d. S
7: ¿ Qué se mostrará por pantalla cuando se intenta compilar y ejecutar el siguiente código?
Butt ( ) {
Button He l l oBut=new B utton ( " H o l a " ) ;
Button ByeBut=new B utto n ( " Adi os " ) ;
add ( H e l l o B u t ) ;
add ( ByeBut ) ;
s et S i z e ( 3 0 0 , 3 0 0 )
; se tVi s i b l e (t
ru e) ;
a. Dos botones juntos ocupando todo el frame. Hola en la izquierda y Adios en la derecha.
b. Un botón ocupando todo el frame diciendo Hola.
c. Un botón ocupando todo el frame diciendo Adios.
d. Dos botones en la parte superior del frame diciendo uno Hola y el otro Adios.
9: 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 imposi bil idad de modificar una de sus clases sin tener que
realizar cambios en ninguna otra .
10: Si se ejecuta el siguiente código, ¿qué se imprime por pantalla?
a. Bic.
b. ic.
c. icy.
d. error: no method matching su bstring( int, char).
12: Necesita crear una clase que almacene como elemento base de la misma objetos únicos. No se necesita
que guarden orden alguno, pero sí que no se repitan. ¿Qué interfaz sería la más apropiada para este fin?
a. S et .
b. L i s t .
c. Map.
d. Ve ct or .
13: Dado el siguiente código, indique qué ocurriría al llamar al método ej emplo ( ) ;
15: En lo que se refiere a las clases internas anónimas, se puede afirmar que:
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.
c. Permiten definir una clase y crear una instancia de el la, todo en un solo paso.
d. Todas las anteriores son correctas.
PARTE PRÁCTICA
Considere pa ra su estudio una ve rsión del conocido juego Space l nvaders. Este juego consiste en que
va rias fi las de naves al ien íge nas o UFOs avanzan hacia la base defensora, con movi mientos osci latorios de
izq uierda a derecha, bajando poco a poco . Así, una nave gua rdián defiende la base y trata de evita r los misi les
la nzados esporádica me nte por las naves invasoras. La nave gua rdián la nza dispa ros de uno en uno . El juego
fi naliza cu ando todos los invasores han sido alca nzados o cu ando los invasores llega n a la base.
a) [2,5 puntos] Suponga que la im plementación del juego se hace en base a la existe ncia de una clase Nave,
de tipo abstracto, que si rve de clase de referencia pa ra otras posibles su bclases (ta nto las naves
a l ie n íge nas co mo la nave g u a rd i a n a ). A pa rti r de ésta, se genera una nueva clase d en o m i nada
NaveGuardian que si rve pa ra mo d e l ar la nave gu ardi án que se encue ntra en la pa rte in fe rior de la
pa nta lla del juego . Proporcione la estructu ra de am b as clases, así como los dife re ntes atributos que
considere im presci n d i bl e s pa ra cada una de e l l a s y los principa les métodos accesores y modificadores. Si
se necesita del uso de al gu n a otra clase auxi lia r, debe defini rse ta mb i é n en este apa rtado.
e) [1,5 puntos] P roporcione el método di sp a raMi s i l , que si mu l a el dispa ro de un p royectil asce ndente
por pa rte de la nave gua rdiana al pulsa r la tecla Ba rra Espaciadora. Se recue rda la restricción de que en un
momento dete rm in ad o sólo puede h ab e r activo un ún ico m i s i l . Se deja a su elección el p rototipo q ue
ti enen que tener estos métodos, pero han de se r co herentes con lo expuesto en el primer apa rtado. Si se
necesita del uso de alg una otra clase auxi lia r, debe definirse ta m bié n en este apa rtado.
UNIVERSIDAD NAC IONAL DE EDUCACIÓN A DISTANC IA - ESCUELA TÉCN ICA SUPERIOR DE I N G E N IE RiA
INFORMÁTICA
71 901 072 - PROGRAMACIÓN ORIENTADA A OBJETOS (G RADO EN IN GE NIERiA INFORMÁTICA f TECNOLOGiAS
DE LA INFORMAC IÓN)
JUNIO 201 3 MODELO 8 - No ESTÁ PERM ITIDO EL USO DE MATERIAL ADICIONAL
-
1: Dado el siguiente fragmento de cód igo, cuál es el resultado del comando java test 2:
a. test
b. test- 1
c. 1
d. 2
2: Dado el siguiente fragmento de cód igo, indique cuál de los siguientes resultados es el resu ltado de su
ejecu ción:
pub lic c l a s s t e s t {
publ ic s ta ti c void main ( S tr ing args [ ] ) {
int i , j = 1 ;
i = ( j > 1 ) ?2 : 1 ;
swi tc h ( i ) {
c ase 0 : Syst em . out . prin t ( O ) ; b r e a k ;
c ase 1 : Syste m . out . prin t ( 1 ) ;
c ase 2 : System . out . prin t ( 2 ) ; br e a k ;
c ase 3 : Syst em . out . p rint ( 3 ) ; b r e a k ;
a. 01
b. 12
c. 13
d. 23
3: Segú n el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
sobre las bibliotecas para la construcción de interfaces gráficas de usuario en Java:
a. AWT utiliza clases de Swi ng.
b. Swing util iza clases de AWT.
c. Hay clases equ ivalentes en AWT y Swi ng.
d. Se identifica n las clases de Swing con la letra J como prefijo.
4: Segú n el texto de la bibliografía básica de la asignatu ra, indique cua les de las siguientes expresiones
resu lta n verdaderas:
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 ) )
-
a. Las expresiones 3 y 4.
b. Las expresiones 2 y 4.
c. Las expresiones 3 y S.
d. Las expresiones 1 y 3.
5: Segú n el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes afirmaciones es
6: Dado el siguiente fragmento de cód igo, indique cuál de las siguientes afirmaciones es el resu ltado de su
ejecu ción:
1. class Uno{
2. protected Uno yo Mismo(){ retu rn this;}
3.
4. class Dos extends Uno{
S. public Dos yo Mismo(){
6. return su per.yoM ismo();
7.
8.
a. No hay errores en el código. El resu ltado sería una referencia a un objeto del tipo Uno
b. No hay errores en el código. El resu ltado sería una referencia a un objeto del tipo Dos
c. Incompatibilidad de ti pos línea 6.
d. El método yo Mismo de la clase Uno no es visi ble en línea 6.
7: Segú n el texto de la bibliografía básica de la asignatura, indique cuá l de las siguientes afirmaciones es
correcta :
a. El encapsu lamiento apropiado en las clases reduce su acoplamiento.
b. El acopla miento describe el encapsu lamiento de las clases.
c. El encapsu lamiento apropiado en las clases reduce su cohesión.
d. La cohesión de una unidad de cód igo refleja su acopla miento.
8: Dado el siguiente fragmento de cód igo, indique cuál de las siguientes afirmaciones es el resu ltado de su
ejecu ción:
add (set);
a. O
b. 1
c. 2
d. Nuii PointerException
10: ¿Cuál de las siguientes afi rmaciones es correcta sobre la clase Math en Java ?:
a. public class MyCalc extends Math
b. Math.max( 10);
c. Math.round (9. 99, 1);
d. Ninguna de las anteriores.
11: Dado el siguiente fragmento de cód igo, indique cuál de las siguientes afirmaciones es el resultado de su
ejecu ción:
pu b li c c l a s s t e st {
pu bl i c st a t i c void main ( S tr ing args [ ] ) {
int i=l , j = l ;
try
i + +;
j --;
i f ( i == j )
i + +;
catch ( Ex ce pti o n e ) {
Sys tem . out . p ri nt ( 2 ) ;
finally {
Sys tem . out . p ri nt ( 3 )
a. 0,4
b. 1,4
c. 2,4
d. 3,4
12: Segú n el texto de la bibl iografía básica de la asignatura, indique cuál de las siguientes definiciones de un
método m, que la nza IO Exception, y que devuelve void, es correcta :
l . c l a s s Pa re nt {
2. .Doub le get ( )
3. . return 1 . 0 ;
4o
5o
6. . c l a s s C hild extends Pa rent {
7. .Inte ger get ( )
8. . return
2;9o
10 .
a. Éxito.
b. get() en Child no puede extender get() en Pa rent, ti pos del retorno son incom pati bles.
c. get() en Child no puede extender get() en Pa rent, no son clases públ icas.
d. get() en Child ya defi nido en Parent.
14: Según el texto de la bibliografía básica de la asignatu ra, indique cuál de las siguientes afirmaciones es
correcta
:
a. Si una clase tiene algún método abstracto hay que declararla como abstracta .
b.Todos los métodos en una clase abstracta tienen que ser declarados como abstractos.
c. Una clase que hereda de una clase abstracta no tiene que implementa r todos los métodos abstractos para no
ser abstracta.
d. Una clase abstracta no puede implementa r ninguna interface.
15: Dado el siguiente fragmento de cód igo, indique cuál es la sa lida de su compilación/ejecución :
l . St ring nomb re = nul l ;
2. . F il e fi l e = new F i l e ( " / f o l d e r " , nomb re ) ;
3. . S y s te m . out . p rint ( f i le . e x i s t s ( ) ) ;
a. true
b. fa lse
c. Nuii PointerException en línea 2.
d. Nuii PointerException en línea 3.
PARTE PRÁCTICA
La práctica del presente cu rso ha sido aun versi ón del ju ego " R-Type" . A contin uación se presenta n las reglas del ju ego
ta l y como se solicitaba para la práctica del curso:
1. El juego comenzará con una pantalla de bienvenida a partir de la cual se pod rá seleccionar el modo de juego
(FACI L, NORMAL, COMPLICADO, IM POSI BLE) y comenzar a jugar.
2. El juego consta rá de un único nivel donde el jugador deberá acabar con una horda de naves alienígenas. El
nú mero de alienígenas con los que acabar dependerá del modo de juego seleccionado. Fácil= 10, Norma l= 15,
Complicado=20, lm posible=30.
3. El jugador controlará la nave aliada y dispondrá de 1 sola vida.
4. Las naves alienígenas será n controladas por el ordenador.
5. Las naves alienígenas no disparan.
6. No hay que implementa r relieve. Es decir, no hay que mostra r ningún tipo de suelo o techo como en el juego
original.
7. La nave aliada podrá moverse arriba (Tecla Q), abajo (Tecla A), izqu ierda (Tecla O) y derecha (Tecla P). Así
mismo pod rá disparar su laser utilizando la tecla ESPACIO.
8. El área de movimiento perm itido para la nave será toda la pa nta lla, aunq ue habrá que com proba r que la nave
no sa lga de estos límites.
9. El disparo que realiza la nave aliada es conti nuo, es decir, no es necesa rio espera r a que el misil disparado
abandone la pantalla para que la nave aliada pueda volver a disparar.
10. La nave aliada sólo puede realizar un tipo de disparo que se desplazará horizonta lmente hacia la derecha de la
pantalla, sin va riar su trayectoria y a velocidad consta nte.
11. Las naves alienígenas se mueven a velocidad consta nte y podrán ser de dos tipos:
a. Nave Alienígena Tipo A. Apa recen por la pa rte derecha de la pantalla y se mueven horizonta lmente hacia
la izqu ierda a velocidad consta nte sin variar su trayectoria, es decir, su coordenada "y" no varia en todo el
desplazamiento.
b. Nave alienígena Tipo B. Apa recen por la pa rte derecha de la pantalla y se mueven horizonta lmente hacia
la izqu ierda a velocidad consta nte. La principal diferencia con las Naves de Tipo A es que éstas pueden va
riar su trayectoria, es decir, en su desplaza miento horizonta l pueden va riar su coordenada "y" de manera
aleatoria.
12. La velocidad a la que se mueven las naves alien ígenas dependerá del modo de juego seleccionado. Todas las
naves se mueven a la misma velocidad.
13. Cuando las naves alien ígenas alcancen la pa rte izqu ierda de la pa nta lla volverá n a aparecer por la pa rte derecha
de ésta.
14. Se deberán de detecta r dos ti pos de colisiones.
a. Las colisiones entre la nave aliada y las naves alienígenas, lo que supondrá el final del juego.
b. Las colisiones entre los misiles disparados por la nave aliada y las naves alien ígenas, lo que supondrá la
destrucción de la nave alien ígena contra la que ha chocado el misil.
15. Si el jugador fi naliza el nivel del juego deberá aparecer un mensaje de felicitación y se volvería a mostra r el
menú inicia l.
a) [1,5 puntos] Diseñar utilizando un parad igma orientado a objetos, los elementos necesarios para la apl icación
explicada de la práctica durante el cu rso. Es necesario identificar la estructura y las relaciones de herencia y de
uso de las clases necesa rias para almacenar y gestionar esta información. Debe hacerse uso de los meca nismos
de herencia siem pre que sea posible. Se va lora rá un buen diseño que favorezca la reutilización de cód igo y
fa cilite su ma ntenimiento.
b) [1,5 pu ntos] Implementa la clase NaveAl iada. Especifica sus atri butos y métodos y justifica las decisiones de
implementación que creas im porta ntes.
e) [1,5 pu ntos] Implementa la siguiente regla del juego: "Las naves alienígenas Tipo A aparecen por la pa rte
derecha de la pantalla y se mueven horizonta lmente hacia la izqu ierda a velocidad 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 justifica las decisiones de implementación que creas im porta ntes.
a) [2 puntos] Indique los ca mbios que sería n necesarios en el diseño y progra ma para permiti r que cada nave
alienígena se moviera según una trayectoria independ iente del resto de naves alienígenas pudiendo moverse
li bremente en las cuatro coordenadas (a rriba, abajo, izqu ierda y derecha ). Las naves alienígenas no pod ría n
ocu par el mismo espacio de coordenadas, por tanto debería n choca r y cambiar su dirección.
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA - ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA
71901 072 - PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA / TECNOLOGÍAS DE LA INFORMACIÓN)
JUNIO 2013- MODELO A- No ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONA
a. Una versión de la apl icación en la que se simula una parte de el la, en vías a experimentar con las restantes
partes.
b. Una versión de la apl icación en la que se simulan varias partes, en vías a experimentar con una de sus partes.
c. Una versión de la apl icación en la que se simulan varias partes, en vías a experimentar con las restantes partes.
d. Ninguna de las anteriores
a. Todas las su bclases de la clase estándar de Java RunT imeExcept i o n son excepciones comprobadas.
b. Todas las su bclases de la clase estándar de Java Except i o n son excepciones comprobadas.
c. E r r o r es una su bclase directa de Throwabl e, mientras que Except ion es una su bclase directa de E rr o r.
d. Tanto E r r o r como E xc e p t i o n son su bclases directas de Th rowa ble.
a. 2
b. 3
c. 4
d. 2.5
6 : Se a e l siguiente código :
swi t ch (x) {
de f a u lt :
Sy s tem . out . p r i n t l n (" H ol a " ) ;
a. 1 y 3.
b. 2 y 4.
c. 3 y 5.
d. 4 y 6.
7: ¿Qué interfaz proporciona la capacidad de al macenar objetos usando un valor llave?
a. Java.utii. Map.
b. Java.utii .Set.
c. Java.utii. List.
d. Java.utii .Col lection.
a. 1 y 2.
b. 2 y 3.
c. 3 y 4.
d. Todas son correctas.
9: ¿Cuál de las siguientes sentencias declara legalmente, construye e in icial iza un array?
c. int mi L i s t a [ J [ J = { 4 , 9 , 7 , 0 } ;
d. int mi L i s t a [ J = { 4 , 3 , 7 } ;
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. goto, in s t a n c e o f , nat ive, fi n al ly, de fault, th rows .
c. t r y, v i r t ua 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. byte, br e a k, a s s ert, s wit ch, in cl ude.
public c l a s s T e s t
{
p ublic st a t ic void l e f t s h i f t ( i n t i , int j )
{
i <<= j ;
a. 2
b. 4
c. 8
d. 16
class Test {
p u bl i c static v o i d ma in ( S t r i n g [ ] a r g s )
Test p = new Te s t ( ) ;
p . st ar t ( ) ;
void s t ar t ( )
b o o l e a n bl = fa l s e ;
b oo le an b2 = fix (b l ) ;
Sys tem . out . pr i n t ln (b l + " " + b2 ) ;
boolean fix ( b o o l e a n bl )
bl = true ;
r e tur n bl ;
a. true true
b. false true
c. true false
d. false false
l . pu bl ic class T es t {
2. . p ubl ic int aMethod ( )
3. . s t a t i c int i = O ;
4 o i ++;
5. return i ;
6 o
a. O
b. 1
c. 2
d. La compilación falla.
for ( i nt i = O ; i <= 4 ; i += 2 )
S y s t e m . out . p ri n t ( i +" ") ;
S ys t em . out . p r i n t l n ( i ) ;
a. O24
b. o245
c. o1234
d. La compilación falla.
15: ¿Qué cód igo hay que añadir en la posición indicada en el código para que compile?
p ubli c c l a s s Except i o n Te st {
c l a s s Te stExcept ion extends Except ion { }
public void r unT est ( ) throws T estE xc ept ion { }
public void te s t ( ) /* Codigo a añadir */ {
ru nTe st ( ) ;
l. El juego comenzará con una pantalla de bienvenida a partir de la cual se podrá seleccionar el modo de juego
(FACI L, NORMAL, COMPLICADO, IM POSIBLE) y comenzar a jugar.
2. El juego constará de un único nivel don de el jugador deberá acabar con una horda de naves alien ígenas. El
número de alien ígenas con los que aca bar dependerá del modo de juego seleccionado. Fácil= 10, Normal=15,
Complicado=20, lmposi ble=30.
3. El jugador controlará la nave aliada y dispondrá de 1 sola vida.
4. Las naves alien ígenas serán controladas por el ordenador.
5. Las naves alien ígenas no disparan.
6. No hay que implementar relieve. Es decir, no hay que mostrar ningún tipo de suelo o techo como en el juego
original.
7. La nave aliada podrá moverse arriba (Tecla Q), abajo (Tecla A), izquierda (Tecla O) y derecha (Tecla P). Así mismo
podrá disparar su laser utilizando la tecla ESPACIO.
8. El área de movimiento permitido para la nave será toda la pantal la, aunque habrá que comprobar que la nave
no salga de estos límites.
9. El disparo que realiza la nave aliada es continuo, es decir, no es necesario esperar a que el misil disparado
abandone la pantalla para que la nave aliada pueda volver a disparar.
10. La nave aliada sólo puede realizar un tipo de disparo que se desplazará horizontalmente hacia la derecha de la
pantal la, sin variar su trayectoria y a velocidad constante.
11. Las naves alien ígenas se mueven a velocidad constante y podrán ser de dos tipos:
a. Nave Alienígena Tipo A. Aparecen por la parte derecha de la pantalla y se mueven horizontalmente
hacia la izquierda a velocidad constante sin variar su trayectoria, es decir, su coordenada f1o varia en
todo el desplazamiento.
b. Nave Alienígena Tipo B. Aparecen por la parte derecha de la pantalla y se mueven horizontalmente
hacia la izquierda a velocidad constante. La principal diferencia con las Naves de Tipo A es que éstas
pueden variar su trayectoria, es decir, en su desplazamiento horizontal pueden variar su coordenada �
de manera aleatoria.
12. La velocidad a la que se mueven las naves alien ígenas dependerá del modo de juego seleccionado. Todas las
naves se mueven a la misma velocidad.
13. Cuando las naves alien ígenas alcancen la parte izquierda de la pantalla volverán a aparecer por la parte derecha
de ésta.
14. Se deberán de detectar dos tipos de colisiones.
a. Las colisiones entre la nave aliada y las naves alien ígenas, lo que supondrá el final del juego.
b. Las colisiones entre los misiles disparados por la nave aliada y las naves alien ígenas, lo que supondrá la
destrucción de la nave alien ígena contra la que ha chocado el misil.
15. Si el jugador finaliza el nivel del juego deberá aparecer un mensaje de felicitación y se volvería a mostrar el
menú inicial.
Se pide diseña r util izando una aproxi mación orie ntada a objetos una am pliació n a la p ráctica realizada a lo
la rgo del curso que permite la existencia de un nuevo tipo de nave a l i e n íge na (Ti po C).
Este nuevo ti po de nave es una modificación de la nave Tipo A, con la pa rticula ridad de que, cua ndo
alca nza la pa rte izquierda, en luga r de apa rece r por la pa rte derecha, lo que hace es desplaza rse de i zqui e rda a
derecha, hasta que alca nza nueva me nte el lím ite de recho, vo lviendo entonces a desplazarse hacia la izquie rda
(y así sucesiva me nte hasta se r destru ida).
En un momento dete rm inado, s ólo puede h ab er un a nave de Ti po C en el juego, y no se puede crear otra
mie ntras la anterior de ese tipo no haya sido destruida . Además, como máxi mo, se podrá n ge nerar 2 naves de
Ti po C en el modo Fáci l; 3 en el modo N o rma l ; 4 en el modo Co mplicado y 5 en el modo Imposi ble
a) [1,5 puntos] Proponga y explique, utilizando diagramas de clase, cómo modelaría este nuevo tipo de nave alien
ígena aprovechando el diseño que ha realizado en la práctica. Debe hacerse uso de herencia siempre que sea
posible. Se valorará un buen diseño que favorezca la reutil ización de código y facilite su mantenimiento.
b) [1,5 puntos] Implemente la nueva clase especificando sus atri butos y métodos, justificando las decisiones de
implementación que considere relevantes.
e) [2,0 puntos] Im plemente 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 alcanza 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í sucesiva mente hasta ser destruida)IZI.
a) [1,5 puntos] Explique razonadamente qué cambios serían necesarios en el diseño que ha realizado en los
apartados anteriores para que la nave alien ígena Tipo C pudiera realizar un número N de idas y venidas (de
derecha a izq uierda y viceversa) y que cuando pasaran ese número de veces sin ser destruida, entonces se
autodestruyera.
UN IVERSIDAD NAC IONAL DE EDUCAC IÓN A DISTANCIA - ESCUELA TÉCNICA SUPERIOR DE IN GE N IER iA
IN FORMÁTICA
71901 072 - PROGRAMACIÓN ORIENTADA A OBJETOS (G RADO EN INGEN IERÍA IN FORMÁTICA f TECNOLOGÍAS
DE LA INFORMACIÓN)
SEPTIEMBRE 201 3 - MODELO C - No ESTÁ PERM ITIDO EL USO DE MATERIAL ADICIONAL
class Padre { }
class ClaseHij a ex te nd s Padre { }
class C l a s e H i j a2 ext en ds Padre {}
p ub li c c l a s s T e st {
pu blic s t a t i c vo id ma in ( S t ri n g a rg v [ ] )
{ Padre b=new Padre ( ) ;
C l a s e H ij a s= ( C l a s e H i j a ) b;
S yst em . out . pr in t ( " Ej e cutand o Ap l i c a c i ó n " ) ;
}
2: Segú n la bibliografía básica, ¿Qué elementos cree que defi nen a un objeto?
3: Dada la siguiente definición de clase, ¿Cuál sería el contenido más coherente a implementa r en el
constructor?
c lass Test {
int var ;
T e s t ( i nt va r ) { CONTE NI DO CONST RUCTOR }
a. va r=va r;
b. int var=va r;
c. this.va r=var;
d. No se puede llamar igual el parámetro del constructor que el atri buto de la clase
int co nt ;
for ( c ont =S ; co n t > O ; con t- - )
Sy s t em . out . p r in t ( c on t ) ;
S ys te m . out . p r i nt ( c on t ) ;
6: Dados los siguientes fragmentos de cód igo ¿Cuál de ellos asocia ría a una Interfaz en Java ?
7: De acu erdo a la bibliografía básica ¿Qué significa insta nciar una clase?
c lass Test {
p u b l i c s t a t i c vo id ma in ( S t r i n g [ ] arg s ) {
MiClase al new Mi C l a s e ();
MiC lase a2 = new Mi C l a s e ( ) ;
MiClase a3 = new Mi C l a s e ( ) ;
al . v a l o r =l S O ;
a2 . v a l or =l 5 0 ;
a 3 = a2 ;
if ( al a2 ) S yst em . out . p r i n t l n ( " UNO " ) ; }
if (al a3) S yst em . out . p r i n t l n ( " DOS " ) ; }
if (a2 a3) S yst em . out . p r i n t l n ( " TRES " ) ; }
a. UNO
b. UNO TRES
c. UNO DOS TRES
d. TRES
class C l a s e Padre { }
class C l a s e H i j al ext en ds C l as e P a d r e { }
class C l a s e H i j a2 exte n ds ClasePadre { }
y las siguientes insta nciaciones:
C l a s e Padre var O
new C l a s e Padre ( ) ;
C l a s e H ij a1 var 1
new C l a s e H i j a1 ( ) ;
C l a s e H ij a2 v ar2
new C l a s e H ij a2 ( ) ;
C l a s e Padre var3
new C l a s e H i j a1 ( ) ;
C l a s e Padre var 4
new C l a s e H ij a2 ( ) ;
a. va rO = va r1;
b. va r2 = (CiaseH ija2)va r1;
c. va r2 = va r4;
d. va r1 = var2;
10: ¿Qué ocu rrirá al com pilar y ejecutar el sigu iente cód igo?
p ub li c class M i C l a se {
static int va r i a b l e E s t a t i c a ;
pub li c s t a t i c vo id ma in ( S t r i n g argv [ ] ) {
S y s t e m . out . p r i n t l n ( var i a b l e E s t a t i c a ) ;
}
}
import j ava . aw t . * ;
import j avax . sw i ng . JFrame ;
pu blic s t a t i c vo id ma in ( S t ri n g a r g v [ ] ) {
AppBoton MiAppB oto n=new AppBoton ( ) ;
pu b lic AppBot on ( ) {
B utton bo t o n 1 = n e w Button ( " BOTON 1 " ) ;
B utton b o ton 2=n ew B utton ( " BOTON 2 " ) ;
add ( b o t o n 1 ) ;
add ( b o t o n 2 ) ;
se t S i z e ( 1 0 0 , 1 0 0 ) ;
se tVi s i b l e ( t r u e ) ;
}
}
a. Dos botones, uno ju nto a otro ocupando todo el fra me. En el botón de la izqu ierda aparecerá BOTON 1 y en el
de la derecha aparecerá BOTON 2.
b. Un botón ocu pando todo el fra me con la etiqueta BOTON 1.
c. Un botón ocu pando todo el fra me con la etiq ueta BOTON 2.
d. Dos botones en la pa rte superior del fra me, uno de ellos con la etiqueta BOTON 1 y otro de ellos con la etiq
ueta BOTON 2.
13: De acuerdo a la bibliografía básica, ¿Cuál es la descripción que crees que define mejor el concepto 'clase'
en la progra mación orientada a objetos?
14: De acuerdo a la bibliografía básica, el que una va riable en una clase sea estática implica
class Cl aseA {
pu b li c Cl aseA ( int x ) {
S ys te m . out . p ri n t ( " C la seA- " + x ) ; }
c l a s s C l a s e B ex t e nds C l a s e A {
pub l ic C l a s eB ( ){
supe r ( 6 ) ;
S ys t e m . out . p r i nt ( " C l a s eB- " ) ; }
PARTE PRÁCTICA
La práctica del presente cu rso ha sido una versión del juego "R-Type". A conti nuación se presentan las reglas del
juego ta l y como se sol icita ba para la práctica del curso:
1. El juego comenzará con una pa nta lla de bienvenida a partir de la cual se pod rá seleccionar el modo de juego
(FACI L, NORMA L, CO MPLICADO, IM POSI BLE) y comenzar a jugar.
2. El juego consta rá de un único nivel donde el jugador deberá acabar con una horda de naves alienígenas. El
número de alien ígenas con los que acabar depend erá del modo de juego seleccionado. Fácil= 10, Normal=15,
Compl icado=20, lmposible=30.
3. El jugador controlará la nave aliada y dispondrá de 1 sola vida.
4. Las naves alien ígenas será n controladas por el ordenador.
S. Las naves alien ígenas no dispara n.
6. No hay que implementa r relieve. Es decir, no hay que mostra r ningún tipo de suelo o techo como en el juego
original.
7. La nave aliada pod rá moverse arriba (Tecla Q), abajo (Tecla A), izqu ierda (Tecla O) y derecha (Tecla P). Así mismo
pod rá disparar su laser util iza ndo la tecla ESPACIO.
8. El área de movimiento permitido para la nave será toda la pa nta lla, aunque habrá que com proba r que la nave
no salga de estos límites.
9. El disparo que realiza la nave aliada es conti nuo, es decir, no es necesario espera r a que el misil disparado
abandone la pa nta lla para que la nave aliada pueda volver a disparar.
10. La nave aliada sólo puede realizar un tipo de disparo que se desplazará horizonta lmente hacia la derecha de la
pantalla, sin va riar su trayectoria y a velocidad consta nte.
11. Las naves alien ígenas se mueven a velocidad constante y pod rá n ser de dos tipos:
a. Nave Alienígena Tipo A. Apa recen por la pa rte derecha de la pa nta lla y se mueven horizonta 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 miento.
b. Nave Alienígena Tipo B. Apa recen por la pa rte derecha de la pantalla y se mueven horizonta lmente hacia
la izqu ierda a velocidad consta nte. La pri nci pal diferencia con las Naves de Tipo A es que éstas pueden va
riar su trayectoria, es decir, en su desplazamiento horizonta l pueden va riar su coordenada "y" de ma nera
aleatoria.
12. La velocidad a la que se mueven las naves alienígenas dependerá del modo de juego seleccionado. Todas las
naves se mueven a la misma velocidad.
13. Cuando las naves alienígenas alcancen la pa rte izqu ierda de la pantalla volverá n a aparecer por la pa rte derecha
de ésta .
14. Se deberá n de detecta r dos ti pos de colisiones.
a. Las colisiones entre la nave aliada y las naves alienígenas, lo que supondrá el fi nal del juego.
b. Las colisiones entre los misiles disparados por la nave aliada y las naves alienígenas, lo que supondrá la
destrucción de la nave alienígena contra la que ha chocado el misil.
1S. Si el jugador fi naliza el nivel del juego deberá aparecer un mensaje de felicitación y se volvería a mostra r el
menú inicial.
Tomando como pu nto de partida la práctica realizada, se pide implementa r algunas mejoras para que la nave aliada
disponga de un escudo protector. Este escudo protector pod rá activa rse pulsando la tecla "E" y, en ese momento, hará
que la nave sea inmorta l durante S segu ndos. El jugador dispondrá inicialmente de 3 escudos protectores que irán
dismi nuyendo conforme éste los vaya activando.
a) [1,5 pu ntos] Muestre el diagra ma de clases genera l que ha diseñado en la práctica, explicando claramente la
fu nciona lidad de cada una de las clases y sus métodos asociados.
b) [1,5 puntos] Explicar qué clases de la práctica habría que mod ifica r para materia lizar los ca mbios sol icitados. Muestre
claramente las va riables de insta ncia nuevas que habría que definir y los métodos que habría que implementa r,
indicando en cada caso a qué clases afecta rían.
e) [2 puntos] Implemente las mod ificaciones propuestas.
d) [1,5 pu ntos] Explique razonadamente qué cambios sería n necesarios en el diseño que ha realizado en los apartados
anteriores para que aparezca n aleatoriamente Bonus de Escudos Protectores que la nave aliada pueda recoger al
pasar por encima de ellos. El efecto de recoger un bonus de escudos protectores será el aumento del
número de escu dos disponibles para su uso.
UN IVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA - ESCUELA TÉC NICA SUPERIOR DE INGENIER fA
IN FORMÁTICA
71 901 072 - P ROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN IN GEN IERfA INFORMÁTICA /
TECNOLOGÍAS DE LA IN FORMACIÓN}
SEPTIEMBRE 201 3 MODELO 0 - No ESTÁ PERM ITIDO EL USO DE MATERIAL ADICIONAL
-
i:at. in dice = 1 ;
boolean [ ] examen = new boolean[ 8 ] ;
boolean poo = examen [ indice ] ;
Ind ica cual de las siguientes afirmaciones es correcta en relación al va lor de la va riable poo.
4: Dado el sigu iente fragmento de cód igo, indique cuál de las siguientes afirmaciones es el
resultado de su ejecución:
6: Segú n el texto de la bibliografía básica de la asignatu ra, indique cuales de las siguientes
expresiones resu lta n verdaderas:
l. 4 < 5 )
2. 2 > 2 ) 1 1
( ( 4
--
4 ) && ( 1 < o )
3. 2 > 2 ) 1 1
4
--
( 4 4 ) && ( 1 < o )
4. 2 > 2 ) 1 1 --
! ( 4 ) && ( 1 < o )
(
'
= 33 ) && ! fa 1 s e
a. Las expresiones 4 y S.
b. Las expresiones 3 y 4.
c. Las expresiones 2 y 4.
d. Las expresiones 3 y S.
a. Un objeto de tipo String puede ser modificado una vez que está creado, por ta nto no es un ejemplo
de objeto inmutable
b. La clase String tiene un método de nombre trim que permite mod ifica r caracteres en cualquier
posición de una cadena
c. Como regla genera l, las cadenas de texto de tipo Stri ng se suelen comparar media nte el operador
d. Un objeto es inmutable si su contenido o su estado no puede ser ca mbiado una vez que se ha
creado
a. El térm ino acopla miento describe cuá nto se ajusta una unidad de cód igo a una tarea lógica o a
una entidad
b. El acopla miento describe la conectividad de los propios objetos de una clase
c. Un encapsula miento apropiado en las clases red uce el acoplamiento
d. Un sistema debilmente acoplado se ca racteriza por la imposibilidad de modifica r una de sus clases
sin tener que rea lizar ca mbios en ninguna otra
9: Dado el siguiente fragmento de cód igo que pretende mostra r un ejemplo de sobrescritura:
class Examen {
private float pregunta = l. O f ;
protected float getNota ( ) { return pregunta; }
}
Indique cual de las siguientes opciones completa ría el cód igo anterior para dar lugar a un ejemplo correcto
de sobrescritura :
10: Según el texto de la bibliografía básica de la asignatu ra, indique cual de las siguientes
afirmaciones es correcta :
a. Un mapa es una colección que almacena pares llave/va lor como entradas.
b. Un mapa es una colección que almacena tríos llave/índice/va lor como entradas.
c. Un mapa es una colección que almacena pares índ ice/va lor como entradas.
d. Un mapa es una colección que almacena tríos índice/posición/va lor como entradas.
11: Dado el siguiente fragmento de cód igo, indique cuál de las siguientes afi rmaciones es el
resultado de su ejecución:
12: Segú n el texto de la bibl iografía básica de la asignatu ra, indique cual de las siguientes
opciones declarará un método en una clase que fuerza a una su bclase a implementa rlo:
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 las excepciones que se prod uzca n en cada caso.
try {
} finally {
a. El Bloque4 no se ejecuta rá si se prod uce una excepción de tipo aritmético en el Bloq ue2
b. El Bloque4 se ejecuta rá antes de que la excepción prod ucida por un acceso a un objeto nu/1 en el
Bloq ue2 se propague hacia arriba
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 se ejecuta rá antes que el Bloque3 si se produce una excepción de tipo aritmético en el
Bloq ue2
15: Segú n el texto de la bibl iografía básica de la asignatura, indique cuál de las siguientes
afirmaciones es correcta :
a. En Javadoc la etiqueta @param indica el nú mero de pará metros del método
b. En Javadoc la etiqueta @deprecated ind ica que el va lor devuelto por el método puede contener
errores
c. En Javadoc la etiqueta @see ind ica una referencia cruzada
d. En Javadoc la etiqueta @throws ind ica el modo en que debe ser lanzado un método
PARTE PRÁCTICA
La práctica del presente curso ha sido una versión del juego "R-Type". A conti nuación se presenta n las
reglas del juego ta l y como se sol icita ba para la práctica del curso:
1. El juego comenzará con una pantalla de bienvenida a partir de la cual se pod rá seleccionar el modo
de juego (FACI L, NORMAL, COMPLICADO, IM POSIBLE) y comenzar a jugar.
2. El juego consta rá de un único nivel donde el jugador deberá acabar con una horda de naves
alieníge nas. El nú mero de alienígenas con los que aca bar dependerá del modo de juego
seleccionado. Fácil= 10, Norma l= 15, Compl icado=20, lmposible=30.
3. El jugador controlará la nave aliada y dispondrá de 1 sola vida.
4. Las naves alienígenas será n controladas por el ordenador.
5. Las naves alienígenas no disparan.
6. N o h a y q u e im plementar relieve. E s d ecir, no h a y q u e mostra r n i ngún tipo de suel o o techo como
en el juego origi nal.
7. La nave aliada pod rá moverse arriba (Tecla Q), abajo (Tecla A), izqu ierda (Tecla O) y derecha (Tecla
P). Así mismo pod rá disparar su laser utilizando la tecla ESPACIO.
8. El área de movimiento permitido para la nave será toda la pantalla, aunq ue habrá que comproba r
que la nave no sa lga de estos límites.
9. El disparo que realiza la nave aliada es conti nuo, es decir, no es necesa rio espera r a que el misil
disparado abandone la panta lla para que la nave aliada pueda volver a disparar.
10. La nave aliada sólo puede realizar un tipo de disparo que se desplazará horizonta lmente hacia la
derecha de la pantalla, sin va riar su trayectoria y a velocidad consta nte.
11. Las naves alienígenas se mueven a velocidad consta nte y podrán ser de dos tipos:
a. Nave Alienígena Tipo A. Apa recen por la pa rte derecha de la pantalla y se mueven
horizonta 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 desplazam iento.
b. Nave Alienígena Tipo B. Apa recen por la pa rte derecha de la pa nta lla y se mueven
horizonta lmente hacia la izqu ierda a velocidad consta nte. La pri nci pal diferencia con las
Naves de Tipo A es que éstas pueden va riar su trayectoria, es decir, en su desplaza miento
horizonta l pueden va riar su coordenada "y" de ma nera aleatoria.
12. La velocidad a la que se mueven las naves alienígenas dependerá del modo de juego seleccionado.
Todas las naves se mueven a la misma velocidad.
13. Cuando las naves alien ígenas alcancen la pa rte izqu ierda de la pantalla volverá n a aparecer por la
pa rte derecha de ésta .
14. Se deberán de detecta r dos tipos de colisiones.
a. Las colisiones entre la nave aliada y las naves alienígenas, lo que supondrá el final del
juego.
b. Las colisiones entre los misiles disparados por la nave aliada y las naves alienígenas, lo que
supondrá la destrucción de la nave alien ígena contra la que ha chocado el misil.
15. Si el jugador fi naliza el nivel del juego deberá aparecer un mensaje de felicitación y se volvería a
mostra r el menú inicial.
Se pide diseñar utilizando una aproxi mación orientada a objetos una ampl iación a la práctica realizada
a lo largo del cu rso que permite la existencia de un nuevo tipo de nave alienígena (Ti po C).
Este nuevo tipo de nave es una mod ificación de la nave Tipo A, con la pa rticu laridad de que, cuando
alcanza la pa rte izq u ierda, en lugar de aparecer por la pa rte derecha, lo que hace es desplazarse de
izqu ierda a derecha, hasta que alcanza nueva mente el límite derecho, volviendo entonces a desplazarse
hacia la izqu ierda (y así sucesivamente hasta ser destru ida).
En un momento determ inado, sólo puede haber una nave de Tipo C en el juego, y no se puede crear
otra mientras la anterior de ese tipo no haya sido 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 Complicado y 5 en el modo Imposible.
Se pide:
a) [1,5 puntos] Di señar uti li zan do un pa radigma orie ntado a o bjetos, los elem entos
necesa rios pa ra la ap l icación expl icada de la práctica durante el curso . Es necesa rio
ide ntificar la estructu ra y las re laciones de herencia y de uso de las clases necesa rias pa ra
a l m a c e n a r y gestionar esta in formació n. Debe hacerse uso de los meca nismos de herencia
siem pre que sea posible. Se va lora rá un buen diseño que favorezca la re uti lización de
código y facil ite su m anten im ie nto.
a) [1,5 puntos] Im plementa la clase NaveAl i e n i g e n a T ip o B. Especifica sus atributos y
métodos y ju stifica las decisiones de i mp l e m e nt ac ió n que creas im po rta ntes.
b) [1,5 puntos] I m p l e m e nt a un método que gestione las colisiones entre los m isi les
dispa rados por la nave a l i ad a y las naves a l i e n ígenas.
e) [2 puntos] I n d i q u e los cam bios que se ría n necesa rios en el diseño y p rogra ma pa ra
permitir que las naves a l i e n ígenas de Ti po B pu die ran va riar su ve locidad de
desplaza mie nto a medida que se incrementa el núme ro de naves a l i e n ígenas destruidas. La
velocidad se dete rm ina en el momento de apa rición de la nave en la pa nta lla y por ta nto
pod ría da rse el caso de que en la pa nta lla co-existiesen naves a l i e n ígenas con velocidades
di fe re ntes.
UNIVe.RSIOAO NAC IONAl PIS EDUCACIÓ N A DISTANCIA - ESCUElA ltCNICA SUPeRIOR PE INGENie.RfA
INFORMÁ TICA 71901 072 - A 0aJETOS (GAAOQ EN I NGENI ERiA INFORMÁTICA f
PROGRAMACIÓ N ORIENTADA
OE lA INFORMACIÓN)
TECNOlQGiA$
JUNIO 2014- MODELO A- No ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONAL
Pregunta 4: Su ponga mos que reescribi mos el ejemplo Bo unci ngBa ll del li bro de la forma en que se muestra
a conti nuación:
1 public c l a s s Bounc ingBall {
2 int n ;
3 public static void main ( String args [ ] )
4 {
5 if ( n ! =O )
6 {
7 n = n + 1;
8 System. out . print ln ( " El nfimero es " + n)
;
9 }
10 }
11 }
¿Cuál es la línea que provoca que el cód igo prod uzca un error de compilación?
a. Línea 5.
b. Línea 3.
c. Línea 2.
d. Línea 1.
Pregunta 6: Sea el siguiente fragmento de cód igo modificado de la clase Ma i l i t em mostrada en el li bro
de texto:
1 public c l a s s Ma i l i t e m {
2 static int num1 10 ;
=
9 if ( aux > 1 ) {
10 System. out . print ln ( au x) ; 1 1
}
12 }
13 }
Pregunta 8: Dado que un elemento But ton puede propiciar el lanzam iento de un Acti onEven t, ¿qué
tipo de listener habría que implementar en la clase que qu iera gestionar este evento?
a. W i n d o w L i s t e n e r
b. A c ti o n L i s t e n e r
c. Comp one nt Li s t e n e r
d. PushL i s t e n e r
Pregunta 9: ¿En qué condiciones puede volverse a invocar un constru ctor de una clase para un objeto
después de que ese o bjeto haya sido creado?
a. Cuando queremos resetear tod os los ca mpos del objeto a sus va lores iniciales.
b. Cuando se ha creado un objeto abstracto y se le qu iere dar va lores iniciales a sus atributos.
c. Cuando se implementa una interfaz para el objeto en cuestión.
d. Nunca .
Pregunta 10: Sea el siguiente cód igo modificado de la clase Mu s i c Organ i z e r mostrada en el li bro base:
1 i mport j ava . u ti l . * ;
2 p u b li c c l a s s Mu si cOrgan i z e r
3 p u b lic static void ma in ( S tring a rg s [] )
{
4 A r r ay L i s t < S t r in g> a = new Ar
( 5) ;
rayList
5 for ( i nt i= O ; i <= 5 ; i ++
)6
7 a . add ( " Ho l a " ) ;
8
9 S y s t e m . out . p r i n t l n ( " F u n c i o n a " )
; 10
11
¿Cuál es el resu ltado de compilar y ejecuta r este código?
Pregunta 11: ¿Cómo se llama el entorno de pruebas que soporta la prueba estructurada de unidades y las
pruebas de regresión en Java ?
a. JDK
b. JBoss
c. Javadoc
d. JU nit
Pregunta 14: Si una clase B extiende una clase abstracta A que tiene un método abstracto me t, ¿qué
podemos afirmar?
PARTE PRÁCTICA
La práctica del prese nte cu rso ha sido una ve rsión del lege nda rio a rcade "Pac-M a n". A
co nti nuació n se muestra la propuesta del juego tal y co mo se solicita ba pa ra la p ráctica del curso.
1. El juego consta rá de un solo nive l donde el jugador deberá co mer todos los pu ntos de la
pa nta l l a .
2. El jugado r co ntrola rá a Pac-Man y dispo ndrá de 1 vida.
3. Los fa ntasmas se rá n controlados p or el ordenador te nien do en cue nta el compo rta mie
nto di fe re nte de cada un o.
4. Pac-Man pod rá moverse ( Util iz ando las flechas del teclado) arri ba (Tecla Up), abajo (Tecla
Down), izquierda (Tecla Left) y derecha (Tecla Right). Así mismo pod rá pa usa r el juego
pu lsando la tecla "P" .
5. El á rea de movi mie nto permitido pa ra Pac-Man y los fa ntasmas será el mapa del úni co
nivel dis pon ible .
6. Será necesa rio comproba r que ta nto Pac-Man como los fa ntasmas no su peren los l
ímites del m a pa.
7. Los ca mi nos del mapa so lo permiten el paso de un individ uo al mismo tiem po, por ta nto
habrá que tener en cue nta las colisiones.
8. Los fa ntasmas deben im ple mentar co mporta mie ntos di fe re ntes:
a. B li n ky, el fa ntasma rojo, busca rá co lisiona r con Pac-M an . Para acerca rse a Pac- Man
ca lculará la dista ncia (po r eje mpl o medido en fi las y co l umnas ) e inte nta rá prime ro
acerca rse ve rtica lmente y luego horizonta lm en te .
b. P in ky. Busca rá co lisiona r con Pac-M a n. Pa ra acerca rse a Pac-Man ca lcu la rá la
dista ncia (po r eje mp lo medido en fi las y co l umnas ) e inte nta rá prime ro ace rca rse
horizonta lmente y luego ve rtica lmente .
c. Clyde. Él no persigue a Pac-Man, si no que dea m bu l a sin una ruta especifica .
9. Se deberán de detecta r dos ti pos de colision es.
a. Las colisio nes entre Pac- Man y los fa ntasmas, lo que supondrá la pérdida de una
vida o el fi nal del juego en caso de no dispon er de más vidas.
b. Las co lisiones entre los fa ntasmas, que su pond rá un ca mbio de di rección en los
fa ntasmas involucrados.
10. Ha brá cuatro pu ntos más gra ndes de lo no rmal situados ce rca de las esqu inas del la beri nto
y proporcio narán a Pac-Man la h ab i l i d ad te mporal (5 segundos) de come rse a los
fa ntasmas (todos el los se vuelven azu les mientras Pac-Man tiene esa habi l ida d). Después
de ha be r sido tragados, los fa ntasmas se rege neran en "casa de fa ntasmas" .
11. Será necesa rio im plementa r un contador con los pu ntos obte nidos en cada mo me nto,
teniendo en cuenta los o bjetos co midos. Un pu nto pequeño supone 10 pu ntos. Co mer un
fa ntasma 100 pu ntos.
12. Si el jugador fi na liza el nive l del juego deberá apa rece r un me nsaje de fe licitación y se
volve ría a mostra r la pági na inicia l.
a) [2 puntos] Diseña r uti liza ndo un pa radigma orie ntado a o bjetos, los elementos necesa rios pa ra
la a pl icación explicada de la p ráctica du rante el curso. Es necesa rio ide ntifica r la estructura y
las re laciones de he rencia y de uso de las clases necesa rias pa ra al macena r y gestiona r esta
in formació n. Debe hace rse uso de los meca nismos de herencia siem p re que sea posi ble . Se
va lora rá un buen diseño que favorezca la re util ización de código y facilite su ma nteni mi ento.
b) [1,5 puntos] Im plementa la clase F a n t a s m a S u s t o . Este fa ntasma lo que hace es h u i r del
Pac-Man, de ta l mane ra que mide la dista ncia que hay entre P ac-Man y él, y se mueve arriba,
izquierda, derecha o abajo en fu nción de si la dista ncia que consigue con ese desplaza miento
es el mayor al eja miento posible. Especifica sus atrib utos y métodos y justifica las decisiones de
im ple mentación que creas i mpo rta ntes. Como se ha dicho, pa ra aleja rse de Pac-Man ca l c ula rá
la dista ncia según el criterio que se co nsidere opo rtuno (por ejemplo, medido en fi las y
co l u m n a s ).
e) [1,5 puntos] I m p l e me nt a un método que gestione el efecto "te rremoto" . El te rremoto consiste
en que el sistema coloca automática me nte todos los fa ntasmas en posiciones aleatorias del
ta blero, y a P ac-Man lo co loca en el ce ntro del todos los fa ntasmas. Se debe especifica r cómo
se ca lcula la posición donde se coloca Pac-Man (a def inir por el a l u m n o ) .
d) [1,5 puntos] I n d i q u e los ca mbios que se ría n necesa rios en el diseño y progra ma pa ra permitir
que conforme pasa el tiem po, los fa ntasmas vaya n aum entand o su ve locidad de movi mie nto
hasta que P ac-Man se come un pu nto gra nde, momento en el que todos los fa ntasmas vue lven
a resta ura rse a la ve locidad de movi miento i n i c i a l.
UNIVe.RSIOAO NAC IONAl PIS EDUCACIÓ N A DISTANCIA - ESCUElA ltCNICA SUPeRIOR PE INGENie.RfA
INFORMÁ TICA 71901 072 - PROGRAMACIÓ N ORIENTADA A 0aJETOS (GAAOQ EN I NGENI ERiA INFORMÁTICA f
TECNOlQGiA$ OE lA INFORMACIÓN)
JUNIO 2014 - MODELO B - No ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONAL
public c l a s s TicketMachine {
private String nombre = " ACME" ;
private String registro = " 0 0 0 0 " ;
3: Hay una clase Message Post que hereda de otra Post. Si ambas clases tuviera n la siguiente
estructura:
class Post {
public String m en saj e = "En P o s t" ;
p . enviarMensaj e ( ) ;
}
}
¿Cual sería el resultado de ejecuta r el método main?:
a. En Post En Post
b. En Message Post En Post
c. En Post En MessagePost
d. En Message Post En MessagePost
4: ¿En BlueJ, cómo se pueden ver los métodos que tiene una li brería del sistema como
java . l a ng. Stri ng? :
a. En el menú 'Ed it(Ed itar)' hay una entrada para ma nejar las clases en la li brería .
b. En el menú 'View(Vista)' hay una entrada para ma nejar las clases en la librería .
c. En el menú 'Tools(Herramientas)' hay una entrada para ma nejar las clases en la librería .
d. No se puede hacer en Bl ueJ.
5: En una simu lación de los zorros y los conejos se puede definir una clase abstracta Anima l. En
una versión de la simulación, el cód igo pod ría ser:
6: ¿Cuál sería la signatu ra de un método público suma que tenga un parámetro que es un array
de int y que devuelva un int?:
public c l a s s Archivo {
public void tipoExtens ion ( String nombre ) {
try {
String ext = nombre . substring ( nombre . indexOf ( ' . ' ) ,
nombre . length ( ) ) ;
System. out . print ln ( e xt ) ;
} catch ( StringindexOutOfBoundsException ex ) {
System. out . print ( " Archivo no tiene exte nsi ón" ) ;
} catch ( ArithmeticException ex ) {
Syst em. out . print ( " Error aritmético " ) ;
} catch ( Nul lPointerException ex ) {
System. out . print ( " Error de l puntero" ) ;
} finally {
System. out . print ( " . En cl aus ula fin al ly" ) ;
}
System. out . print ( " . Despué s de l try " ) ;
}
8: En un reloj digita l la clase ClockDisplay gestiona las horas y los minutos. Se pod ría añadir un
método alarma para comprobar para activa r un despertador:
9: En la práctica de este año hay que crear un ta blero para el juego Pacman. Para ello se puede
dibujar una matriz de cuadros negros, dejando otros en bla nco. ¿Cuál de los siguientes métodos nos
permite dibujar un cu adrado negro entero en la pantalla?:
EstudianteDeDoctorado
a. 1, 2,3,4
b. 1,2,3
c. 2,3,4
d. 1, 2,4
12: ¿Existen varios modelos para la construcción de software. ¿Cuáles son dos de los más
conocidos?:
13: En el orga nizador de música podemos usar un Arraylist para guardar los nombres de las
ca nciones:
¿Qué habrá que poner en vez de los XXX para que al ejecutar main el progra ma produzca el resultado
"Existe la ca nción?: true"?
14: En las diferentes versiones de un proyecto del juego zuul se pueden plantear diferentes
versiones del método getExitString; por ejemplo:
return returnString ;
}
Versión A Versión B
15: En un visor de imágenes se usa botones para que el usuario pueda cambiar el tamaño de la
imagen; por ejemplo:
¿Qué tipo de Listener habrá que usar (donde está n los XXX en el cód igo anterior) para detecta r que el
usuario ha hecho clic en el botón?
a. new Eventlistener()
b. new Button listener()
c. new Actionlistener()
d. new ActionPe rformed listener()
PARTE PRÁCTICA
La p ráctica del prese nte cu rso ha sido una versión del lege nda rio a rca de "Pac-M an" .
A co nti nuación se muestra la propuesta del juego ta l y co mo se sol icita ba pa ra la p ráctica del
curso .
1- El juego consta rá de un solo nive l donde el jugador deberá co mer todos los pu ntos de la
pa nta l l a .
3- Los fa ntasmas se rá n controlados por el ordenador te nien do en cue nta el compo rta mie nto
di fe re nte de cada u n o.
4- Pac-Man pod rá moverse ( Util iz ando las flechas del teclado) arri ba (Tecla Up), abajo (Tecla
Down), izquie rda (Tecla Left) y derecha (Tecla Right). Así mismo podrá pa usa r el juego
5- El á rea de movi mie nto permitido pa ra Pac- Man y los fa ntasmas será el mapa del único
nivel dis pon ible .
6- Será necesa rio comproba r que ta nto Pac-Man como los fa ntasmas no su peren los l
7- Los ca mi nos del mapa so lo permiten el paso de un individ uo al mis mo tiem po, po r ta nto
ca lculará la dista ncia (po r eje mpl o medido en fi las y co l umnas ) e inte nta rá prime ro
dista ncia (po r eje mp lo medido en fi las y co l umnas ) e inte nta rá prime ro ace rca rse
a. Las colisio nes entre Pac- Man y los fa ntasmas, lo que supondrá la pérdida de una
b. Las co lisiones entre los fa ntasmas, que supond rá un ca mbio de di rección en los
fa ntasmas involucrados.
10- Ha brá cuatro pu ntos más gra ndes de lo no rmal situados ce rca de las esqu inas del la beri nto
y proporcionarán a Pac-Man la h ab il i d ad te mporal (5 segundos) de co me rse a los
fa ntasmas (todos el los se vuelven azu les mientras Pac-Man tiene esa habi l ida d). Después
de ha ber sido tragados, los fa ntasmas se rege neran cada una en una esqui na del la beri nto.
11- Será necesa rio im plementa r un contador con los pu ntos obte nidos en cada mome nto,
teniendo en cuenta los o bjetos co midos. Un pu nto peq ueño supone 10 pu ntos. Comer un
12- Si el jugador fi na liza el nive l del juego deberá apa rece r un me nsaje de fe licitación y se
a) [2 puntos] Dis eñar uti liza ndo un pa radigma orie ntado a o bjetos, los e le mento s necesa rios
pa ra la apl ic ac ió n explicada de la p ráctica du rante el curso. Es necesa rio ide ntifica r la
estructura y las re laciones de herencia (media nte el uso de un diagra ma de clases) y de uso
de las clases necesa rias pa ra al macena r y gestionar esta info rmació n. Debe hacerse uso de
los meca nismos de herencia siem pre que sea posi ble. Se va lora rá un buen diseño que
favorezca la re util ización de código y fa ci lite su man te n im ie n t o.
b) [1,5 puntos] Im pleme nta la clase F a n t a s m a P i n k y . Especifica sus atri butos y métodos y
justifica las decisiones de i mp l e me nt a ci ó n que creas im porta ntes. Recuerda que este
fa ntasma busca rá colisio nar co n Pac-M an . Para ace rca rse a Pac-Man ca l c ul a rá la dista ncia
(por ejem plo, medido en fi las y c ol umn as) e inte nta rá prime ro acerca rse horizonta lm ente
y luego ve rtica lmente .
e) [1,5 puntos] Im plementa un método que gestione las dos ti pos de co lisiones que puede
h aber entre Pac-Man y los fa ntasmas, lo que supondrá la pérdida de una vida o el fi nal del
juego en caso de no disponer de más vidas, y las colisiones entre los fa ntasmas, que
supondrán un ca mbio de dirección en los fa ntasmas invo l ucrados.
d) [1,5 puntos] I n d i q u e los ca m bios que se rían necesa rios en el diseño y la im ple mentación
pa ra permitir que haya di fe re ntes niveles y que en cada uno de éstos se añada un nuevo
tipo de fa ntasma (adem ás de los que ya existen).
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
1: Ind ica cual de las siguientes declaraciones es vá lida para el método main:
a. Un depurador es una herramienta de software que ayuda a examinar cómo compila una aplicación.
b. Una llamada a método interno consiste en que los métodos pueden llamar a otros métodos de la
misma clase como pa rte de su implementación.
c. Una llamada a método externo consiste en que los métodos pueden llamar a métodos de otras
clases abstractas usando la notación de pu nto.
d. Los objetos pueden crear otros objetos usando el operado r "i nsta nceof" .
4: Su pongamos que queremos implementa r una Agenda, ¿cuál sería la salida del siguiente
código?
public c l a s s Agenda {
protected Agenda( ) {
for ( int i=O ; i< l O ; i + + ) {
System. out . print ln ( i )
;
}
}
}
a. Error de Compilación ya que los constructores no pueden ser declarados como "protected".
b. Error en tiempo de ejecución ya que los constructores no pueden ser declarados como "protected".
c. Compilación correcta y salida de los d ígitos de O a 10.
d. Compilación correcta y salida de los d ígitos de O a 9.
5: Ind ica cual de las siguientes afirmaciones es correcta :
a. El lenguaje Java tiene tres tipos de ciclo: whi le, while-do y for.
b. Un ciclo while es similar en su estructu ra y propósito que el ciclo for-each.
c. El tipo de la va riable de ciclo no tiene porq ué ser el mismo que el tipo del elemento declarado para
la colección que esta mos recorriendo con un ciclo.
d. Un índ ice es un objeto que proporciona fu nciona lidad para recorrer todos los elementos de una
colección.
6: Dado el siguiente fragmento de cód igo, indique cuál de las siguientes afirmaciones es el
resultado de su ejecución:
a. La prueba es la actividad de descu brir si una pieza de cód igo prod uce el comporta miento
pretendido.
b. Una aserción es una expresión que establece una cond ición que esperamos que resu lte verdadera.
c. Un segu imiento es la actividad de tra bajar a través de un segmento de cód igo línea por línea,
mientras se observa n ca mbios de estado y otros comportamientos de la aplicación.
d. Todas las respuestas anteriores son correctas.
public c l a ss BaseDeDatos {
public c l a s s BaseDeDatosDeMusi ca {
a. Error en tiempo de compilación indicando que una clase con métodos fi nales deben ser declarada
ta mbién como fi nal.
b. Error en tiempo de compilación ind icando que no se puede heredar de una clase con métodos
fina les.
c. Error en tiempo de ejecución ind icando que Base De Datos no ha sido definida como final.
d. Éxito en la compilación y salida " Agrega r Elemento".
12: Dado un visor de imágenes, ¿Cuál sería la salida del siguiente código?
import j ava. a w t . * ;
public c l a s s Puls ador extends Frame {
public static void main ( String argv [ ] ) {
Puls ador MiPuls ador=new Puls ador( ) ;
}
Puls ador( ) {
Button BotonHola=new Button( " Hola " ) ;
Button BotosAdios=new Button ( " Adios " ) ;
add ( BotonHola ) ;
add ( BotosAdios ) ;
s e t S i z e ( 3 00 , 3 0 0 )
; setVi sible ( true)
;
}
}
a. Dos botones uno al lad o del otro ocu pando todo el ma rco, "Hola" en la izqu ierda y "Adios" en la
derecha.
b. Dos botones uno encima del otro diciendo, "Hola" arriba y "Adios" abajo.
c. Un solo botón ocupando el marco entero diciendo "Hola".
d. Un solo botón ocupando el marco entero diciendo "Adios" .
13: Teniendo en cuenta el modelo en cascada presente en la construcción del softwa re, ind ica
cual de las siguientes fases NO pertenece al desa rrollo de software:
a. Análisis del problema.
b. Prueba Unita ria.
c. Prueba Secuencia l.
d. Entrega del sistema al cliente.
int i=l ;
switch ( i ) {
ca se 0 :
System. out . print( "cero " ) ;
break ;
cas e 1 :
System. out . print ( " uno " ) ;
ca se 2 :
System. out . print ( " dos " ) ;
break ;
de fault :
System. out . print( " otro " ) ;
}
a. uno
b. uno otro
c. uno dos
d. uno dos otro
PARTE PRÁCTICA
La p ráctica del prese nte cu rso ha sido una versión del lege nda rio a rca de "Pac-M an" .
A co nti nuación se muestra la propuesta del juego ta l y co mo se sol icita ba pa ra la p ráctica del
curso .
1- El juego consta rá de un solo nive l donde el jugador deberá co mer todos los pu ntos de la
pa nta l l a .
3- Los fa ntasmas se rá n controlados por el ordenador te ni endo en cue nta el compo rta miento
di fe re nte de cada un o.
4- Pac-Man pod rá moverse (Ut i l i zan do las flechas del teclado) arri ba (Tecla Up), abajo (Tecla
Down), izquie rda (Tecla Left) y derecha (Tecla Right). Así mismo podrá pa usar el juego
5- El á rea de movi mie nto permitido pa ra P ac-Man y los fa ntasmas será el mapa del único
nivel d is p on i b l e .
6- Será necesa rio comproba r que ta nto Pac-Man como los fa ntasmas no su peren los l
7- Los ca mi nos del mapa so lo permiten el paso de un individuo al mismo tiem po, por ta nto
ca lculará la dista ncia (po r eje mpl o medido en fi las y co l umnas ) e inte nta rá prime ro
dista ncia (po r eje mp lo medido en fi las y co l umnas ) e inte nta rá prime ro ace rca rse
a. Las colisio nes entre Pac- Man y los fa ntasmas, lo que supondrá la pérdida de una
b. Las co lisiones entre los fa ntasmas, que supond rá un ca mbio de di rección en los
fa ntasmas involucrados.
10- Ha brá cuatro pu ntos más gra ndes de lo no rmal situados ce rca de las esqu inas del la beri nto
y proporcio narán a Pac-Man la h ab i l i d ad te mporal (5 segundos) de come rse a los
fa ntasmas (todos el los se vuelven azu les mientras Pac-Man tiene esa habi l ida d). Después
de ha ber sido tragados, los fa ntasmas se rege neran cada una en una es quina del la beri nto.
11- Será necesa rio im plementa r un contador con los pu ntos obte nidos en cada mome nto,
teniendo en cuenta los o bjetos co midos. Un pu nto peq ueño supone 10 pu ntos. Comer un
12- Si el jugador fi na liza el nive l del juego deberá apa rece r un me nsaje de fe licitación y se
a) [2 puntos] Dis eñar uti liza ndo un pa radigma orie ntado a o bjetos, los e le mento s necesa rios
pa ra la apl ic ac ió n explicada de la p ráctica du rante el curso. Es necesa rio ide ntifica r la
estructura y las re laciones de herencia (media nte el uso de un diagra ma de clases) y de uso
de las clases necesa rias pa ra al macena r y gestionar esta info rmació n. Debe hacerse uso de
los meca nismos de herencia siem pre que sea posi ble. Se va lora rá un buen diseño que
favorezca la re util ización de código y fa ci lite su man te n im ie n t o.
b) [1,5 puntos] Im ple me nta la clase F a n t a smaMi nk y. Este fa ntasma busca rá colisio nar co n
Pac-M a n. Para ace rca rse a Pac-Man rodea rá los obstácu los al contra rio de las ma neci llas
del rel oj y au me nt a rá su ve locidad de spués de que un cie rto núme ro de pu ntos sea n
co midos (por eje mplo cada 25 pu ntos a ument a rá su ve locidad). Especifica sus atri butos y
métodos y justifica las decisiones de im plementa ci ón que creas im porta ntes así como los
ca mbios en las clases que creas necesa rio.
e) [1,5 puntos] I m plementa un método que perm ita la existencia de cuatros pu ntos más
gra ndes de lo norma l p resentes en las esqui nas del la beri nto y que proporciona ría n a
PacM an la h ab i l i d ad tem poral (10 segundos) de comerse a los fa ntasmas. Los fa ntasmas se
volve ría n a zules du rante este periodo de t ie mpo y después, en caso de haber sido comidos
apa recería n de nuevo cada uno por una esqu ina di fe re nte .
d) [1,5 puntos] I nd i q ue los ca mbios que se rían necesa rios en el diseño y p rogra ma pa ra
permitir que hubie ra un nuevo tipo de Fa ntasma deno mi nado "l nvl n ky" que tuviera
velocidad consta nte, tuviera un movi miento errático sin la inte nción de co lisiona r con
PacM an y que ad emás tuvie ra dos ti pos de colisiones:
a. En caso de co lisiona r co n los otros Fantasmas, ta nto "l nvl n ky" como el otro
fa ntasma invo l ucrado, ca mbiaría n de se ntido alejándose uno del otro .
b. En el caso de PacM an, no habría co lisión sino que pa ra PacM an se ría co mo un
objeto invisi ble que no le ca usa ni ngún tipo de daño ni ca mbio en su
co mporta miento.
UNIVe.RSIOAO NAC IONAl PIS EDUCACIÓN A DISTANCIA - ESCUElA ltCNICA SUPeRIOR PE INGENie.RfA
INFORMÁTICA 71901 072 - PROGRAMACIÓN ORIENTADA A 0aJETOS (GAAOQ EN I NGENI ERiA INFORMÁTICA f
OE lA INFORMACIÓN)
TECNOlQGiA$
SEPTIEMBRE 2014 - MODELO 0- No ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONAL
public c l a s s MusicOrganizer
{
private int valor ;
if ( valor>= ! )
{
whi le ( numero>= l ) {
resultado* =numero ;
numero-- ;
}
return resultado ;
}
el s e{
return 1 ;
}
}
}
a. 24
b. 6
c. 120
d. o
Pregunta 5: Indique cual de las siguientes afirmaciones no es correcta respecto al uso de la herencia en
JAVA:
a. Evita el tener que declarar constru ctores
b. Evita la dupl icación de cód igo
c. Faci lita la reutilización del cód igo
d. Faci lita la ampliabilidad y mantenimiento del cód igo
Pregunta 6: Se ha visto en la asignatura una clase Message Post que hereda de otra Post. Si ambas clases
tuviera n la siguiente estructura:
class Post {
public String m e n sa je = "E n P o st " ;
a. La ejecución de las pruebas pasadas previamente para asegu rarse de que la nueva versión aún las
pasa.
b. La ejecución de pruebas automatizadas aleatorias sobre los distintos va lores que puede reci bir la
clase evaluada.
c. La aplicación sistemática del conju nto de casos de prueba base que se defi nieron justo al comenzar
con el desarrollo de la apl icación y que no varían nu nca a lo largo de éste.
d. El conju nto de pruebas negativas necesarias para demostrar que la clase evaluada fa lla.
Pregunta 8: En una simu lación de los zorros y los conejos se puede definir una clase abstracta Anima l. En
una versión modificada de la simu lación el cód igo pod ría ser:
public c l a s s ZorrosCone jo s {
public static void main ( String [ ] args ) {
Animal z = new Zo rro( ) ;
S yste m. out . print ln ( z . nombreAnimal ( ) ) ;
}
}
Pregunta 9: Dado el cód igo de la clase MusicOrga nizer. ¿Cuál sería el resultado de la ejecución del método
main?
mo . lis tF ile ( l ) ;
mo . removeFile ( l )
; mo . l ist File ( l ) ;
}
}
a. Disco 2 null
b. Error en tiempo de ejecución
c. Disco 1 Disco 2
d. Disco 2 Disco 3
Pregunta 10: Dado el siguiente fragmento de cód igo, podemos afirmar que la salida del progra ma:
public c l a s s Test
{
public static void main ( String [ ] args ) {
Random generadorAleatorios ;
generadorAleatorios=new Random( ) ;
a. 1
b. 1 y4
c. 1,2 y 4
d. 4
Pregunta 13: Sea una nueva definición de las clases Post y MessagePost:
public c l a s s Post
{
public String toString ( ) {
public c l a s s Test
{
public static void main ( String a r g s [ ] ) {
Post p new Me ssagePo st ( ) ;
=
¿Qué se mostra rá por pa nta lla al ejecuta r el método main de la clase Test?
a. Error de Compilación
b. Mensaje 2 Mensaje 1
c. Mensaje 1 Mensaje2
d. Mensaje 2
Pregunta 14: En el cód igo li breta de direcciones (address book) explicado en el li bro de texto se hace uso de
las aserciones.
Pregunta 15: Indique cual de las siguientes afirmaciones relativas al uso de excepciones en Java es fa lsa :
a. Las excepciones com probadas están pensadas para aq uellos casos en los que el cliente debería
espera r que una operación pueda fa llar.
b. Las excepciones no comprobadas están pensadas para aq uel los casos que nu nca debería n fa llar
durante la operación normal.
c. Las excepciones no comprobadas heredan de la clase Error.
d. Las excepciones com probadas heredan de la clase Exception.
PARTE PRÁCTICA
La p ráctica del prese nte cu rso ha sido una versión del lege nda rio a rca de "Pac-M a n". A
co nti nuació n se muestra la propuesta del juego ta l y co mo se sol icita ba pa ra la p ráctica del curso :
1. El juego consta rá de un solo nive l donde el jugador deberá co mer todos los pu ntos de la
pa nta l l a .
2. El jugado r co ntrola rá a Pac-Man y dispo ndrá de 1 vida.
3. Los fa ntasmas se rá n controlados p or el ordenador te nien do en cue nta el compo rta mie
nto di fe re nte de cada un o.
4. Pac-Man pod rá moverse (Uti li za ndo las flechas del teclado ) arriba (Tecla Up), abajo (Tecla
Down), izquierda (Tecla Left) y derecha (Tecla Right). Así mismo pod rá pa usa r el juego
pu lsando la tecla "P" .
5. El á rea de movi mie nto permitido pa ra Pac- Man y los fa ntasmas será el mapa del único
nivel dis pon ible .
6. Será necesa rio comproba r que ta nto Pac-Man como los fa ntasmas no su peren los l
ímites del m a pa.
7. Los ca mi nos del mapa so lo permiten el paso de un individ uo al mismo tiem po, por ta nto
habrá que tener en cue nta las colisiones.
8. Los fa ntasmas deben im ple mentar co mporta mie ntos di fe re ntes:
a. B li n ky, el fa ntasma rojo, busca rá co lisiona r con Pac-M an . Para acerca rse a Pac- Man
ca lculará la dista ncia (po r eje mpl o medido en fi las y co l umnas ) e inte nta rá prime ro
acerca rse ve rtica lmente y luego horizonta lm en te .
b. P in ky. Busca rá co lisiona r con Pac-M a n. Pa ra acerca rse a Pac-Man ca lcu la rá la
dista ncia (po r eje mp lo medido en fi las y co l umnas ) e inte nta rá prime ro ace rca rse
horizonta lmente y luego ve rtica lmente .
c. Clyde. Él no persigue a Pac-Man, si no que dea m bu l a sin una ruta especifica .
9. Se deberán de detecta r dos ti pos de colision es.
a. Las colisio nes entre Pac- Man y los fa ntasmas, lo que supondrá la pérdida de una
vida o el fi nal del juego en caso de no dispon er de más vidas.
b. Las co lisiones entre los fa ntasmas, que supond rá un ca mbio de di rección en los
fa ntasmas involucrados.
10. Ha brá cuatro pu ntos más gra ndes de lo no rmal situados ce rca de las esqu inas del la beri nto
y proporcio narán a Pac-Man la h ab i l i d ad te mporal (5 segundos) de come rse a los
fa ntasmas (todos el los se vuelven azu les mientras Pac-Man tiene esa habi l ida d). Después
de ha be r sido tragados, los fa ntasmas se rege neran en "casa de fa ntasmas" .
11. Será necesa rio im plementa r un contador con los pu ntos obte nidos en cada mo me nto,
teniendo en cuenta los o bjetos co midos. Un pu nto peq ueño supone 10 pu ntos. Co mer un
fa ntasma 100 pu ntos.
12. Si el jugador fi na liza el nive l del juego deberá apa rece r un me nsaje de fe licitación y se
volve ría a mostra r la pági na inicia l.
a) [2 puntos] Dis eñar uti liza ndo un pa radigma orie ntado a o bjetos, los elemento s necesa rios
pa ra la aplicació n explicada de la p ráctica du rante el curso. Es necesa rio ide ntifica r la
estructura y las re laciones de herencia y de uso de las clases necesa rias pa ra al macena r y
gestio nar esta info rmación. Debe hacerse uso de los meca nismos de herencia siem pre que
sea posi ble. Se va lora rá un buen diseño que favorezca la re uti lización de código y fa ci lite su
mante n imie n to.
b) [1,5 puntos] Im plementa la clase F a n t a smaC l yde . Especifica sus atri butos y métodos y
justifica las decisiones de i mp l e me n t a c i ó n que creas im porta ntes. Recuerda que este
fa ntasma dea mb ul a sin una ruta específica por el la beri nto.
e) [1,5 puntos] Im pl em en t a los métodos necesa rios pa ra gestio nar el ca mbi o de estado ta nto
en Pac-Man co mo en los fa ntasmas cua ndo éste pasa por enci ma de un pu nto gra nde. Es
necesa rio i ndi ca r a qué clases pe rte nece cada uno de los métodos i mple ment a do s.
d) [1,5 puntos] I n d iq u e los ca mbios que se rían necesa rios en el diseño y p rogra ma pa ra
permitir la existencia de "prem ios" (e.g. cerezas, fresas, na ra njas, manza nas , etc) en cada
nivel del juego que perm ita n a Pac- Man au menta r su puntuación al pasa r por enci ma de
el los.
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
a. Los métodos pueden devolver información de algún objeto media nte un va lor de retorno.
b. Los métodos siem pre tienen parámetros con los que obtener la información necesa ria.
c. A partir de una clase ta n solo se puede crear un solo objeto.
d. El estado de los objetos se representa media nte los métodos implementados.
i n t estudiante = 1;
bool ean [] mat ri culas = new bool ean [3] ;
bool ean ap robado = mat ri culas [estudi ante]
;
Ind ica cual de las siguientes afirmaciones es correcta en relación al va lor de la va riable ap robado.
4: Su pongamos que queremos implementa r una Agenda, ¿cuál sería la salida del siguiente
código?
protected Agenda ( ) {
for (int i=O ; i< l O ; i++ ) { S y s t e m .
o u t . p r in t l n ( i ) ;
a. Error de Compi lación ya que los constructores no pueden ser declarados como "protected".
b. Error en tiempo de ejecución ya que los constructores no pueden ser declarados como "protected".
c. Compilación correcta y salida de los d ígitos de O a 10.
d. Compilación correcta y salida de los d ígitos de O a 9.
a. El lenguaje Java tiene tres varia ntes del ciclo for : for-each, for y far-do.
b. Un ciclo while es similar en su estructu ra y propósito que el ciclo for-each.
c. El tipo de la va riable de ciclo no tiene porq ué ser el mismo que el tipo del elemento declarado para
la colección que esta mos recorriendo con un ciclo.
d. Un índ ice es un objeto que proporciona fu nciona lidad para recorrer todos los elementos de una
colección.
a. La prueba es la actividad de descu brir si una pieza de cód igo prod uce el comporta miento
pretendido.
b. Una aserción es una expresión que establece una cond ición que esperamos que resu lte verdadera.
c. Un segu imiento es la actividad de tra bajar a través de un segmento de cód igo línea por línea,
mientras se observa n ca mbios de estado y otros comportamientos de la aplicación.
d. Todas las respuestas anteriores son correctas.
a. Un objeto de tipo String puede ser modificado una vez que está creado, por ta nto no es un ejemplo
de objeto inmutable
b. La clase String tiene un método de nombre trim que permite mod ifica r caracteres en cualquier
posición de una cadena
c. Las cadenas de texto de tipo Stri ng solamente se pueden comparar media nte el operador "=="
d. Un objeto es inmutable si su contenido o su estado no puede ser ca mbiado una vez que se ha
creado
9 : Basado e n e l ejempl o de la Base d e Datos d e CDs y DVDs vi sto en l a a signatu ra e n e l ca pítulo 8,
¿cuál sería la salida del siguiente cód igo?
db . me todoAgr egarElemento ( ) ;
a. Error en tiempo de compilación indicando que una clase con métodos fi nales deben ser declarada
ta mbién como fi nal.
b. Error en tiempo de compilación ind icando que no se puede heredar de una clase con métodos
fina les.
c. Error en tiempo de ejecución ind icando que Base De Datos no ha sido definida como fi nal.
d. Éxito en la compilación y salida " Agrega r Elemento".
a. El térm ino acopla miento describe cuá nto se ajusta una unidad de cód igo a una tarea lógica o a
una entidad
b. El acopla miento describe la conectividad de los propios objetos de una clase
c. Un encapsula miento apropiado en las clases red uce el acoplamiento
d. Un sistema debilmente acoplado se ca racteriza por la imposi bilidad de mod ificar una de sus clases
sin tener que rea lizar ca mbios en ninguna otra
11: Dado el siguiente fragmento de cód igo que pretende mostra r un ejemplo de sobrescritura :
class Examen {
private float pregunta = l . O f ;
protected float getNota ( ) {return pregunta; }
}
Indique cual de las siguientes opciones completa ría el cód igo anterior para dar lugar a un ejemplo correcto
de sobrescritura :
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 las excepciones que se prod uzca n en cada caso.
try {
} finally {
a. La interfaz de una clase describe lo que hace la clase y cómo puede usarse pudiendo mostra r parte
de su implementación.
b. Un mapa es una colección que almacena entradas de ternas de va lores llave/va lor/posición.
c. La documentación de una clase debe ser suficientemente detallada como para que otros
progra madores puedan usar la clase sin necesidad de leer su implementación.
d. Los modificadores de acceso defi nen las restricciones de uso de un objeto para determi nados
métodos, constructores o cam pos.
PARTE PRÁCTICA
La práctica del presente curso ha sido una terminal pu nto de venta (por sus siglas, TPV) que ha servido para
estudiar y practicar los meca nismos de la Programación Orientada a Objetos.
Segú n la Wikipedia (www.wikipedia. org), un termi nal pu nto de venta (cuyo acrónimo es TPV hace referencia
al dispositivo y tecnologías que ayudan en la ta rea de gestión de un establecimiento comercial de venta al
públ ico que puede conta r con sistemas info rmáticos especializados media nte una interfaz accesible para los
vended ores.
Los TPV permiten la creación e impresión del tiq ue de venta mediante las referencias de prod uctos, realizan
diversas operaciones du rante todo el proceso de venta, así como ca mbios en el inventa rio. Ta mbién
generan diversos reportes que ayudan en la gestión del negocio. Los TPV se componen de una pa rte
hardware (dispositivos físicos) y otra software (sistema operativo y progra ma de gestión).
En nuestro caso concreto, el hadwa re será un ordenador tipo PC o similar y nu estro softwa re será una
apl icación desarrollada en Java que se ejecuta rá sobre dicho equ ipo.
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 inventa rio, gestión de facturación o gestión de clientes. En esta
práctica, se propondrá di ferentes fu ncionalidades para el sistema de gestión del TPV:
•
Lleva r un control de diferentes elementos que existen en nuestro esta bleci miento. Así, los
prod uctos habrán de estar identificados en el sistema por, al menos, los siguientes datos: cód igo
descri ptivo (por ejem plo, el cód igo de ba rras), descripción, precio unitario sin IVA, IVA apl ica ble,
precio unitario con I VA, cantidad disponible en stock.
•
El sistema debe permiti r dar de alta nu evos prod uctos, dar de baja prod uctos existentes así como
modifica r los datos del mismo.
•
Rea lizar la importación y/o exportación de los prod uctos a/d esde ficheros (u otro método sim ilar
que el al umno considere en su lugar).
•
Lleva r un control de las diferentes ventas que se prod ucen. Así, el sistema deberá lleva r un control
de tickets generados, de modo que cada ticket se considerará una venta . Cada ticket tiene que
tener un cód igo de identificador ún ico. Una forma de genera r un cód igo único pod ría ser de la
forma AAAAMMDDH HMM , donde AAAA es el año en cu rso, MM el mes en que se genera la venta,
DD el día de la venta, H H M M las horas y minutos en las que se inicia la ve nta . Asu miremos que sólo
hay un TPV, por lo que no procede que haya dos ventas simu ltá neas.
•
La venta consistirá en la inclusión de va rios productos en una lista, generá nd ose una línea por cada
prod ucto vendido. Cada línea mostra rá, al menos, el cód igo del prod ucto, la descripción del
prod ucto, la cantidad de unidades vendidas, el precio unitario con IVA, el IVA que se le apl ica y el
importe total de la venta de ese prod ucto según el número de unidades vendidas.
•
El proceso de venta impl icará automática mente un proceso de actualización del inventa rio. De este
modo, si se introd uce un cód igo que no pertenece a ningún producto, o si se introd uce un prod ucto
que no existe en stock (o más unidades de las existentes), el progra ma deberá mostra r los errores
correspondientes.
•
El sistema deberá permitir ta mbién introd ucir un prod ucto a vender en el ticket haciendo una
búsqueda por la descripción, además de con el cód igo que lo identifica.
•
Rea lizar la importación y/o exportación de los diferentes tickets de ventas a/desde ficheros (u otro
método similar que el alumno consid ere en su luga r).
•
Lleva r un control de los diferentes clientes que tra bajan con el esta blecimiento comercial. Así, los
clientes habrán de estar identificados en el sistema por, al menos, los sigu ientes datos: cód igo
identificativo del cliente, NIF o CIF, nom bre y apel lidos 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
modifica r los datos de los mismos.
•
Rea lizar la importación y/o exportación de los clientes a/desde ficheros (u otro método sim ilar que
el alumno considere en su lugar).
•
Permitir generar factu ras a partir de un conju nto de tickets. Puede generar factu ras agru pando
diferentes tickets siem pre y cuando pertenezca n al mismo cliente y se han realizado dentro del
mismo periodo fisca l (es decir, dentro del mismo año). La información que irá en cada factura
deberá ser, al menos, la sigu iente : nú mero de la factu ra (identificador único), CIF del vendedor,
razón social del vendedor, fecha de emisión de la factura, datos del cliente (los ind icados con
anterioridad, excepto la fecha de alta en el sistema), listado de los diferentes prod uctos vendidos
(especificando para cada producto, el ticket en el que se encuentra, su cantidad vendida e im porte
tota l) así como suma del total de la venta (valor tota l de la factura).
•
Rea lizar la importación y/o exportación de las factu ras a/desde ficheros (u otro método similar que
el alumno considere en su luga r).
•
Generación de listados: se deberá implementa r, al menos, la emisión de tres listados, a saber:
ventas realizadas en un interva lo de tiempo determinado agru padas estas ventas por clientes,
ventas realizadas en un interva lo de tiempo determ inado a un cliente y ra nking de prod uctos más
vend idos en un interva lo de tiempo determinado.
a) [1,0 puntos] Diseñar utilizando un parad igma orientado a objetos, los elementos necesarios para la
apl icación explicada de la práctica durante el cu rso. Es necesario identificar la estructu ra y las
relaciones de herencia (mediante el uso de un diagra ma de clases) y de uso de las clases necesa rias
para almacenar y gestionar esta información. Debe hacerse uso de los meca nismos de herencia
siem pre que sea posible. Se va lorará un buen diseño que favorezca la reutilización de cód igo y
faci lite su ma ntenim iento.
b) [1,5 puntos] Implementa la fu nciona lidad que permita dar de alta nuevos clientes, dar de baja
clientes existentes así como mod ifica r los datos de los mismos. Justifí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, al menos, la emisión de tres listados, a saber: ventas realizadas en un interva lo de
tiempo determinado agru padas estas ventas por clientes, ventas realizadas en un interva lo de
tiempo determinado a un cliente y ra nking de prod uctos más vendidos en un interva lo de tiempo
determinado. Justifíq ue las opciones y decisiones que se tomen.
d) [2,5 puntos] Para la siguiente versión del softwa re se desea añadir la figu ra del proveedor. De cada
proveedor se debe tener un listado de los prod uctos que sirve, así como su precio, que pod ría
actualizarse manualmente después de la última venta . El sistema debería consultar el inventa rio
después de cada venta y por debajo de un mínimo de prod uctos realizar un ped ido al proveedor
más ba rato, de ma nera automática . El nú mero de prod uctos ped ido, pod rá ser configurable para
que el vendedor esta blezca un va lor por cada prod ucto. ¿Qué ca mbios serían necesarios en el
diseño para adaptar esta nueva fu ncionalidad? Implemente el método (o métodos) que permita
esta nueva 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
a. Hay un método "int uno" que no recibe ningún pará metro de entrada y devu elve el va lor 1.
b. Hay una va riable "i nt" cuyo va lor es "uno() { return 1; }"
c. Hay un método "uno" que no recibe ningún parámetro de entrada y devuelve un entero cuyo va lor es
1.
d. El fragmento no representa un fragmento de cód igo lega l en Java.
2: Para logra r que una clase entre en el depurador en BlueJ a hacer una insta ncia en BlueJ, ¿qué
hay que hacer con el cód igo fuente?:
a. Compilarlo de nuevo con la opción Debug activado.
b. Meter un pu nto de ruptura.
c. La nzar directamente el depurad or.
d. Se hace automática mente al encontra r un error en el cód igo.
int m, n;
public void f() {
m = (m + 2) % n;
System.out. print(m + " ");
a. O246O246
b. 24624624
c. 2460246024
d. 246o246o
4: Segú n el libro de la asignatu ra, ¿cómo se llama el cód igo fuente de una clase?:
a. La implementación de la clase.
b. La interfaz de la clase.
c. Los métodos de la clase.
d. La visibilidad de la clase.
5: Para ca pta r el evento de dar en un botón en Java, ¿que interfaz hay que implementa r?:
a. public class Demo Boton extends JPanel implements Windowlistener
b. public class DemoBoton extends JPanel implements Eventlistener
c. public class Demo Boton extends JPanel implements Button listener
d. public class Demo Boton extends JPanel implements Actionlistener
6: Segú n el libro de la asignatu ra, la dupl icación de cód igo es un síntoma de:
a. Buena cohesión.
b. Mala cohesión.
c. La solución inevita ble de un problema com plejo.
d. Mal encapsu lamiento.
class 1 {}
class J extends 1 {}
class K extends J {}
public void hh () {
J j new J();
=
d. lterator it as.nextlterator();
=
11: Si las clases J y K hered an de la clase 1 y la clase L hereda de la clase J, entonces (i nd ica la
respuesta que da ría un error de com pilación):
a. 1 i = new K();
b. J j = new K();
c. J j = new L();
d. K k = new 1();
12: En la práctica hay que leer información desde un archivo. ¿Cómo se puede genera r una
excepción si no se encuentra el archivo?:
a. throw new FileNotFound Exception("Archivo no encontrado");
b. throw new NoFileException("Archivo no encontrado");
c. throw new File Exception("Archivo no encontrado");
d. throw new NuiiPoi nterException ("Archivo no encontrado");
14: Según el libro de la asignatu ra, las instrucciones cond iciona les lleva n a cabo (con la excepción
del switch):
a. una de dos acciones posibles.
b. una de va rias acciones posibles.
c. las dos acciones posi bles.
d. dos o más de las acciones posibles.
15: ¿Cuál es la diferencia entre declarar una va riable de clase private y protected?:
a. private: Acceso solo dentro de la clase, protected: Acceso desde la clase y sus hijos.
b. private: Acceso desde la clase y sus hijos, protected: Acceso solo dentro de la clase.
c. private: Acceso solo dentro del paquete, protected: Acceso desde la clase y sus hijos.
d. Se pueden aplicar private y protected solamente a la declaración de clases y no a va riables.
PARTE PRÁ CTICA
La práctica del presente cu rso ha sido una termi nal pu nto de venta (por sus siglas, TPV) que ha servido para
estudiar y practica r los meca nismos de la Programación Orientada a O bjetos.
Segú n la Wikipedia (www.wikipedia. org), un terminal pu nto de venta (cuyo acrónimo es TPV hace referencia
al dispositivo y tecnologías que ayudan en la ta rea de gestión de un establecimiento comercial de venta al
públ ico que puede conta r con sistemas inform áticos especial izados mediante una interfaz accesi ble para los
vended ores.
Los TPV permiten la creación e impresión del tiq ue de venta mediante las referencias de prod uctos, realizan
diversas operaciones du rante todo el proceso de venta, así como ca mbios en el inventa rio. Ta mbién
genera n diversos reportes que ayudan en la gestión del negocio. Los TPV se componen de una pa rte
hardware (dispositivos físicos) y otra software (sistema operativo y progra ma de gestión).
En nuestro caso concreto, el hadwa re será un ordenador tipo PC o similar y nuestro software será una
apl icación desarrollada en Java que se ejecuta rá sobre dicho equ ipo.
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 inventa rio, gestión de factu ración o gestión de clientes. En esta
práctica, se propondrá di ferentes fu ncionalidades para el sistema de gestión del TPV:
•
Lleva r un control de diferentes elementos que existen en nuestro esta bleci miento. Así, los
prod uctos habrán de esta r identificados en el sistema por, al menos, los siguientes datos: cód igo
descri ptivo (por ejem plo, el cód igo de ba rras), descripción, precio unitario sin IVA, IVA apl ica ble,
precio unitario con I VA, cantidad disponible en stock.
•
El sistema debe perm iti r dar de alta nuevos prod uctos, dar de baja prod uctos existentes así como
modifica r los datos del mismo.
•
Rea lizar la importación y/o exportación de los prod uctos a/d esde ficheros (u otro método similar
que el al umno considere en su lugar).
•
Lleva r un control de las diferentes ventas que se prod ucen. Así, el sistema deberá lleva r un control
de tickets generados, de modo que cada ticket se considerará una venta . Cada ticket tiene que
tener un cód igo de identificador ún ico. Una forma de genera r un cód igo único pod ría ser de la
forma AAAAMMDDH HMM , donde AAAA es el año en cu rso, MM el mes en que se genera la venta,
DD el día de la venta, H H M M las horas y minutos en las que se inicia la venta . Asu miremos que sólo
hay un TPV, por lo que no procede que haya dos ventas sim ultáneas.
•
La venta consistirá en la inclusión de va rios productos en una lista, generá nd ose una línea por cada
prod ucto vendido. Cada línea mostra rá, al menos, el cód igo del producto, la descripción del
prod ucto, la cantidad de unidades vendidas, el precio unitario con IVA, el IVA que se le apl ica y el
importe total de la venta de ese prod ucto según el número de unidades vendidas.
•
El proceso de venta impl icará automática mente un proceso de actualización del inventario ta l y
como se ha defi nido en el Nivel 2. De este modo, si se introd uce un cód igo que no pertenece a
ningún prod ucto, o si se introduce un prod u cto que no existe en stock (o más unidades de las
existentes), el progra ma deberá mostra r los errores correspondientes.
•
El sistema deberá permitir ta mbién introd ucir un prod ucto a vender en el ticket haciendo una
búsqueda por la descripción, además de con el cód igo que lo identifica.
•
Rea lizar la importación y/o exportación de los diferentes tickets de ventas a/desde ficheros (u otro
método similar que el alumno consid ere en su luga r).
•
Lleva r un control de los diferentes clientes que tra bajan con el esta blecimiento comercial. Así, los
clientes habrán de estar identificados en el sistema por, al menos, los siguientes datos: cód igo
identificativo del cliente, NIF o CIF, nom bre y apel lidos 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
modifica r los datos de los mismos.
•
Rea lizar la importación y/o exportación de los clientes a/desde ficheros (u otro método sim ilar que
el alumno considere en su lugar).
•
Permitir generar factu ras a partir de un conju nto de tickets. Puede generar factu ras agru pando
diferentes tickets siem pre y cuando pertenezca n al mismo cliente y se han realizado dentro del
mismo periodo fisca l (es decir, dentro del mismo año). La información que irá en cada factura
deberá ser, al menos, la sigu iente : nú mero de la factu ra (identificador único), CIF del vendedor,
razón social del vendedor, fecha de emisión de la factura, datos del cliente (los ind icados con
anterioridad, excepto la fecha de alta en el sistema), listado de los diferentes prod uctos vendidos
(especificando para cada producto, el ticket en el que se encuentra, su ca ntidad vendida e importe
tota l) así como suma del total de la venta (valor tota l de la factura).
•
Rea lizar la importación y/o exportación de las factu ras a/desde ficheros (u otro método similar que
el alumno considere en su lugar).
•
Generación de listados: se deberá implementa r, al menos, la emisión de tres listados, a saber:
ventas realizadas en un interva lo de tiempo determinado agru padas estas ventas por clientes,
ventas realizadas en un interva lo de tiempo determinado a un cliente y ra nking de prod uctos más
vend idos en un interva lo de tiempo determinado.
a) [1,0 puntos] Diseñar utilizando un parad igma orientado a objetos, los elementos necesarios para la
apl icación explicada de la práctica durante el cu rso. Es necesario identificar la estructu ra y las
relaciones de herencia (mediante el uso de un diagra ma de clases) y de uso de las clases necesa rias
para almacenar y gestionar esta información. Debe hacerse uso de los meca nismos de herencia
siem pre que sea posible. Se va lorará un buen diseño que favorezca la reutilización de cód igo y
faci lite su ma ntenim iento.
b) [2,0 puntos] Implementa la fu ncionalidad de generar factu ras agru pando diferentes tickets siem pre
y cuando pertenezcan al mismo cliente y se han realizado dentro del mismo periodo fisca l (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 prod uctos vend idos (especificando para cada prod ucto, el
ticket en el que se encuentra, su cantidad vendida e im porte tota l) así como suma del total de la
venta (va lor total de la factu ra ).
e) [1,0 punto] Implementa un método que dé una notificación cuando se venda el último ejemplar de
un prod ucto en el al macén para que se pueda ped ir más.
d) [2,5 puntos] Para la siguiente versión del software se quiere incluir un catá logo de los productos
para que un cliente pueda mirarlo en pa nta llas dentro de la tienda y compra r los prod uctos
directa mente desde el catá logo. Se trata ría de una nueva interfaz sobre el TPV que proporciona ría
algunas de las fu nciones (aquellas releva ntes para el cliente) directa mente al cliente. ¿Qué cambios
serían necesarios en el diseño para incluir esta nueva fu ncionalidad? Implementa los cambios
necesarios que perm ita n esta nueva fu nciona lidad.
UNIVERSIDAD NACIONAL DE EDUCACIÓ N A DISTANCIA - ESCUELA TÉ CNICA SUPERIOR DE
a. El Pad Code
b. El Patch Code
c. El Pa n Code
d. Ninguna de las anteriores.
a. El proceso de d ividir un todo en pa rtes laxa mente d efinidas que puedan construi rse y examinarse en
conju nto y que interactúen de formas bien d efi nidas.
b. El proceso de d ivid ir un todo en pa rtes bien definidas que puedan constru irse y examinarse en
conju nto y que interactúen de formas bien d efi nidas.
c. El proceso de dividir un todo en pa rtes bien d efinidas que puedan constru irse y examinarse por
separado y que intera ctúen de formas bien d efi nid as.
d. Ninguna de las anteriores.
4: Queremos compilar el siguiente cód igo que se puede encontra r en el texto base de la asignatu
ra y que ha sido modificado convenientemente. ¿Cuál es el resultado que obtenemos al compilar?
1 pu b1 ic c1ass Mai1Item
2 {
3 pr ivate static S t r ing from ;
4 pr ivate String to;
5 pr ivate S t r i n g me ss age
;6
7 pub1 ic static Ma i 1 I t em ( S tring fro m, String to , String
m) 8 {
9 th i s . from = f rom;
10 th i s . t o = to ;
11 th is . mes sage = m ;
12
13
a. El cód igo compila sin errores
b. Prod uce un error de compilación en la l ínea 3.
c. Prod uce un error de compilación en la l ínea 11.
d. Ninguna de las anteriores.
5: Queremos compilar el siguiente cód igo que se puede encontra r en el texto base de la asignatu ra
y que ha sido mod ificado convenientemente. Al compila r, Bl u eJ nos da error de compilación. ¿Qué deberemos
ca mbiar para que el progra ma compile?
6: Qu eremos compilar el sigu iente cód igo que se puede encontra r en el texto base de la asignatura.
Al compila r, BlueJ pod ría da rnos un error en tiempo de compila ción y/o un error en tiempo de
ejecución.
¿Cómo deberemos proceder para que el cód igo compile y se ejecute correcta mente?
1 pu bl i e e l a s s Ej emplo
2 {
3 pub li e statie Vehi el e v;
4 pu b l i e statie Ca r e;
5 pu b l i e statie Bieye le b;
6
7 pub li e statie vo id main ()
8 {
9 e = new Car ( ) ;
10 0 V e;
11 b = (Bic ycle ) e;
12 b = (Bicycle ) v;
13 S y s t e m . out . p r i n t l n ( " F u n c i o n a " ) ;
14
15
a. Con independencia de cómo defina mos las clases V e h i c l e , C ar y Bi cycl e, siem pre nos dará
un error en tiempo de ejecución en la l ínea 12.
b. Con independencia de cómo d efinamos las clases V e h i c l e , C ar y Bi cycl e, siem pre nos dará un
error en tiempo de compilación en la l ínea 11.
c. Si d efinimos que Ca r e x te nd s Veh i c l e y que B i c y c l e ex te n d s Car, consegu imos
eliminar todos los errores del cód igo y muestra el mensaje por pa nta lla "Fu nciona".
d. Si d efinimos que V e h i c l e ex te n ds Bi cycl e y que C a r ex te n ds Vehic le, consegu
imos eliminar todos los errores del cód igo y muestra el mensaje por pa nta lla "Fu nciona".
7: Queremos compilar el sigu iente cód igo que se puede encontra r en el texto base de la asignatura.
¿Qué ocu rre al compilarlo con BlueJ?
1 import j a va . u t i l . L i s t ;
2 interface Ac to r
3
4 vo id act ( Lis t <Act or > newAc to rs ) ;
5 bo o l e a n is Act ive ( )
;6
a. El tipo estático de una va ria ble v y el tipo dinámico de una va riable v coinciden siempre.
b. El tipo estático de una va ria ble v se mod ifica automática mente al mod ifica r el tipo dinámico de la
va riable.
c. El tipo estático siempre coincide con el tipo declarado en la instru cción de declaración de la va ria ble.
d. Ninguna de las anteriores.
1 import j ava . u t il . L i s t ;
2
3 pu bli c a b st r a c t c l a s s An imal
4 {
5 pu bl ic void act ( L i s t<An im al > newAnimal s , char ani mal s ) {}
6 pu bl ic stati c vo id act ( L i s t <Anim al> newAn imal s , int ani mal s ) ;
7 a bst ra c t pu bli c st at ic vo id a ct (L i s t<An imal> newAnima l s , Str i n g anima ls ) ;
11: Queremos compilar el siguiente cód igo que se puede encontra r en el texto base de la asignatura
y que hemos mod ificado. ¿Qué ocu rre al compilarlo con BlueJ?
1 pu bli c c l a s s Ej emplo
2 {
3 pu bl ic static vo id m ain ( S tring [ ] args )
4 {
5 int [ ] nume ra s = new in t [ ] { 1 , 2, 3 } ;
6
7 S y s t e m . out . p r i n t ( nume r os ) ;
8 S y s t e m . out . pr i nt ( nume r os . l e n g t h ) ;
9 S y s t e m . out . p r i n t ( nume ro s . l a s t ) ;
10 0 S y s t e m . out . p r i nt ( nume ros . f i r s t
);11
12
12: ¿Cuál de las sigu ientes opciones permite mod ifica r una cadena declarada como S t r i n g
i nput ; ?
a. i nput . toUpperC a se ( ) ;
b. i nput . t rim ( ) ;
c. i nput . st a r t s W i th ( " ho l a" ) ;
d. Ninguna de las anteriores.
13: En relación a los conceptos de acoplam iento y cohesión, podemos afirmar ...
a. Un alto gra do de acoplamiento impl ica necesa riamente un alto grado de cohesión.
b. Un bajo grado de acoplamiento no impl ica necesa riamente un alto grado de cohesión.
c. En un diseño de clases persegu imos un bajo grado de cohesión y un bajo acoplam iento
d. Ninguna de las anteriores.
14: Qu eremos compilar el siguiente código que se puede encontra r en el texto base de la asignatura
y que hemos mod ificado. El cód igo compila sin ca usar ningún error de compilación, pero no muestra nada
por pa nta lla. ¿Qué falta por añadir para que el código muestre algo por pantalla al crear un objeto de la clase
ImageVi ewer dentro del entorno de BlueJ?
15: Queremos compilar el siguiente cód igo que se puede encontra r en el texto base de la asignatura
y que ha sido mod ificado convenientemente. Se prod uce un error de compilación. ¿Qué línea es la que
contiene un error, ta l que si la mod ifica mos convenientemente, el cód igo compila y no provoca ningún error
de compilación en BlueJ?
1 import j ava . io . * ;
2
3 pu bli c c l a s s Ej emplo
4 {
5 pu bl ic static vo id mai n () th rows IOEx cept ion
6 {
7 String f il ename = new String ( " E JEMPLO" ) ;
8 try {
9 throw IO Except i on () ;
10
11 1 c at ch ( E xc ep t ion e)
12 S ys t e m . out . p r i n t l n ( " Unabl e to save to " + f i le na me ) ;
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 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
71901 072 � PROGRAMACIÓ N ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA
1 TECNOLOGÍAS DE. LA INFORMACIÓN)
ruNIo/sEPTIEMBRE 201s MoD�
PARTE TEÓRICA -
TEST
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.
import j ava . u t i l . * ;
p ub li c c l a s s T e s t {
public st a t i c void main ( S tr ing [ ] Args ) {
ArrayLi s t < S t r ing> l i s ta=new Array Li s t < S t r ing> ( ) ;
li sta . add ( " uno " ) ;
li sta . add ( " do s " ) ;
li sta . add ( " t re s " ) ;
for ( St ring va lo r : l i s t a ) {
S ys te m . out . p ri n t ( " E l i m i n o " +va lo r +" - " ) ;
li st a . remove (va lo r) ;
import j ava . u t i l . * ;
p ub li c c l a s s T e s t {
public st a t i c void main ( S tr ing [ ] Args ) {
ArrayLi s t < S t r ing> l i s ta=new Array Li s t < S t r ing> ( ) ;
li sta . add ( " uno " ) ;
li sta . add ( " do s " ) ;
li sta . add ( " t re s " ) ;
I t e r a t o r < S t ring> it= l i sta . it era t o r ( ) ;
w hile ( i t . hasNext ( ) ) {
St ring v a lo r= it . next ( ) ;
S ys te m . out . p rint ( " E l i m i n o " +va lor +" - " ) ;
it . remove ( ) ;
a. El térm ino acoplamiento describe lo bien que una unidad de cód igo se corresponde con una tarea
lógica o con una entidad.
b. El término cohesión describe la interconexión de las clases.
c. Se debe tender a un acopla miento débil.
d. Se debe tender a un acopla miento fuerte.
p ub li c c l a s s Hi j o extends Padre
{
public Hi j o ( ) { }
p ub li c c l a s s T e s t {
public s t a t i c void main ( S tr ing [ ] Args )
{ Hi j o h=new Hi j o ( ) ;
Syste m . out . p rint ln ( " C la s e ins ta n ci ada " ) ;
p ub li c c l a s s Hi j o extends Padre
{
void metodoA ( ) {
S ys te m . out . p rint ln ( " Ej ecuto el método A de la c l a s e Hi j o " ) ;
p ub li c c l a s s T e s t {
publ ic st a ti c void main ( S tr ing [ ] Args )
{ Padre h=new Hi j o ( ) ;
h . metodoA ( ) ;
p ub li c c l a s s Hi j o extends Padre
{
void metodoA ( ) {
S ys te m . out . p rint ln ( " Ej ecuto el método A de la c l a s e Hi j o " ) ;
p ub li c c l a s s T es t {
pu bl ic s t at i c void main ( S tr ing [ ] args )
Hi j o h=new Padre ( ) ;
if ( h i n s t a n c e o f H i j o)
Sys tem . out . p r in tl n ( " I n s t a n c i a de la c l as e Hi j o " ) ;
el se
Sys tem . out . p ri nt l n ( " I n s t a n c i a de la c l a s e p a d r e " ) ;
a. Declarar un ca mpo o un método protegido (protected) permite acceder directa mente a él desde las
su bclases directas o ind irectas.
b. Declarar un campo o un método protegido (protected) perm ite acceder directamente a él
únicamente desde las su bclases directas.
c. Los miembros defi nidos como private en una su bclase son accesi bles para los objetos de otras
clases.
d. Los miembros definidos como private en una su perclase son accesi bles para los objetos de sus
su bclases.
p ub li c c l a s s Hi j o extends Padre
{
void metodoA ( ) {
S ys te m . out . p rint ln ( " Ej ecuto el método A de la c l a s e Hi j o " ) ;
p ub li c c l a s s T es t {
pu bl ic s t at i c void main ( S tr ing [ ] args )
Hi j o h= ( H i j o) new Padre ( ) ;
if ( h i n s t a n c e o f H i j o)
Sys tem . out . p ri n t l n ( " I n s t a n c i a de la c l a s e Hi j o " ) ;
el se
Sys tem . out . p r i n tl n ( " I n s t a n c i a de la c l a s e p a d r e " ) ;
p ub li c c l a s s Hi j o extends Padre
{
void metodoA ( ) {
S ys t e m . out . p rint ( " Ej ecuto el método A de la c l a se H ij o . ") ;
s u p e r . metodoA ( ) ;
p ub li c c l a s s T es t {
publ ic s t at i c void main ( S tr ing [ ] args )
Padre p=new Hi j o ( ) ;
p . metodoA ( ) ;
p ub li c c l a s s Hi j o extends Padre
{
void metodoA ( ) {
S y st em . out . p rint ( "Método A de H ij o . ") ;
import j ava . ut i l . * ;
p ub li c c l a s s Te st
public st a ti c vo id main ( S tr ing [ ] args )
L i s t< P a dr e > l ista= ne w ArrayL is t< Padre> ( ) ;
li sta . add (new Hi j o ( ) ) ;
li sta . add (new Hi j o ( ) ) ;
li sta . add (new Hi j a ( ) ) ;
f o r ( I t e r a t o r< P a dre > i t= l i s t a . i t e r a t o r ( ) ; i t . ha sNext ( ) ; ) {
Padre p= it . next ( ) ;
p . metodoA ( ) ;
import j ava . u t i l . * ;
p ub li c c l a s s Te st {
publi c s ta ti c void main ( S tr ing [ ] args ) {
Hi j o h=new Hi j o ( ) ;
h . metodoA ( ) ;
a. Una interfaz en Java es una especificación de un tipo que no define implementación para alguno de
sus métodos.
b. Para que una su bclase de una clase abstracta se transforme en concreta, debe proporcionar
implementaciones para todos los métodos abstractos heredados.
c. El objetivo de una clase ab stracta es servi r como una su perclase de otras clases.
d. Las llamadas a métod os de insta ncia no privados desde dentro de una su perclase siem pre se
evalúan en el contexto más amplio del tipo dinámico del objeto.
a. Las clases internas anónimas son una estructu ra muy útil a la hora de implementar escuchas de
su cesos.
b. Una interfaz GUI se construye dispon iendo componentes en pantalla. Los componentes se
representa n media nte objetos.
c. Para defi nir la colocación de los componentes de una G U I se utilizan gestores de diseño gráfico.
d. Un objeto puede escu char los sucesos de los componentes extendiendo una clase abstracta de
escucha de sucesos.
a. La serialización perm ite leer y escri bir en una única operación o bjetos completos, pero no
jera rq uías de objetos.
b. Una excepción no com probada es un tipo de excepción cuyo uso no req uiere ninguna
comprobación por pa rte del compilador.
c. Una excepción com probada es un tipo de excepción cuyo uso req uiere com probaciones ad icionales
por pa rte del compilador.
d. Una aserción es un enunciado de un hecho que debe ser cierto du rante la ejecución del progra ma.
a. Las pruebas son la actividad consistente en averiguar si un fragmento de cód igo presenta el
comporta miento deseado.
b. Un recorrido manual es la actividad consistente en analizar un segmento de cód igo línea a línea
mientras que se observa n los cambios de estado y otros comportamientos de la aplicación.
c. Una prueba negativa es una prueba de un caso que se espera que fu ncione correcta mente y que
fi nal mente no fu nciona.
d. Si la condición definida en una aserció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 (ww.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 10% 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 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 14 preguntas iniciales del test
sea anulada por cualquier circunstancia. Caso de ocurrir este hecho, si se produj era la anulación de alguna de
las 14 preguntas iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso de que una
segunda pregunta de las 14 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 14 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 5: Según el texto de la bibliografia básica de la asignatura, el estado de un obj eto se denomina:
a. El conjunto de parámetros que recibe y devuelve un objeto.
b. El conjunto de valores de todos los atributos que definen al objeto.
c. El conjunto de campos y métodos que componen el obj eto.
d. Ninguna de las anteriores.
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 13, en vez de XX, para asignar el valor de autor a variable usuario en
la clase Post?:
a. . super ( ) ;
b. . usuario = autor;
c. . super ( au to r) ;
d. s u p e r . u s u a r i o = a u t o r;
Pregunta 9: Según el texto de la bibliografía básica de la 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 obj eto se configure apropiadamente a crearlo por primera vez.
Pregunta 10: Dado el siguiente fragmento de código del ejemplo del libro Image Viewer:
1 private vo id ma keMenuBar ( JFrame frame ) {
2 f inal int SHORTCUT MASK =
3 T o o l k i t . g e t D e f a u l t T o o l ki t ( ) . getMenuShor tcutKeyMas k ( ) ;
4
5 JMenuBar menubar = new JMenuBar ( ) ;
6 frame . set JMenuBar (me nu ba r) ;
7
8 JMenu menu ;
9 JMenu item it em ;
10
11 // g en er 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 XX?:
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
obj eto 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 (fij ando las horas y los minutos y fij ando los minutos y los segundos) :
Pregunta 13: Para definir una nueva clase de excepción, como se ha hecho en el ejemplo AddressBook del
libro, se hace de la siguiente forma:
1 p ub 1i c c 1 a s s N oMa tc hin gD et ai 1 sExcept ion extends XXX {
2 private St ring key;
3
4 p ub 1i c No Ma tc hi ngD et ai 1 sExcept ion ( S tri ng key) {
5 this . key = key;
6
¿Que habrá que añadir en la línea 13 en vez de XX 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 p ub 1i c void proba rD iner o ( i nt dinero
)2 {
3 if ( d in e r o = 5 0 ) {
4 S yst em . out . p ri nt ln ( " No se admiten b i l l e t e s de 50 € . " ) ;
5
6 el se
7 S yst em . out . p ri n tl n ( " I m pr esi ón de billet e en cur s o . " ) ;
8
9
Reserva 1: Supongamos que reescribimos una parte de la simulación de los zorros y los conejos del libro de
la forma que se muestra a continuación:
1 import j ava . ut i l . L i s t ;
2 pub li c a bs tr ac t c l a s s An imal
3
4 p ubl ic 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 ro te ct ed voi d isA li ve ( ) { }
8 pr otec ted void setD e ad ( ) { } 9
10
11 c l a s s Rabbit extends An imal {
12
13 XXX
14 p ri vat e void incrementAge ( ) { }
15 priv at e void g iv eBi rt h (Li s t < A n imal> newRabbits) { }
16
¿Qué tendremos que añadir a la línea 1 3 , en vez de XX para que el código no genere un error de
,
compilación?:
a. publ i c Rabb it ( ) ;
b. pub l i c v o i d a c t ( L i s t<An ima l > newRabb i t s ) { }
c. p ubl ic void act (L i s t <A n im al> newRabbit 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 obj eto (miobj) es de una cierta clase (MiClase)?
a. MiClase.instanceof(miobj)
b. java.lang.Obj ect.instanceof(miobj, MiClase)
c. miobj instanceof MiClase
d. Obj ect.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 14 preguntas iniciales del test
sea anulada por cualquier circunstancia. Caso de ocurrir este hecho, si se produj era la anulación de alguna de
las 14 preguntas iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso de que una
segunda pregunta de las 14 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 14 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).
3: Queremos compilar el siguiente código que se puede encontrar en el texto base de la asignatura
y que ha sido modificado convenientemente. ¿Cuál es el resultado que obtenemos al compilar?
1 p ub l ic clas s Prue ba
2 {
3 pu b lic static vo id ma in ( String a rgs [ ] )
4 {
5 S t r i n g ca de na l = " e j emPLO" ;
6 St r in g cadena2 = " E JEMPLO " ;
7 ca dena l . to Uppe rCa s e ( )
;8
9 if ( c a d e n a l . e qua ls ( c adena2 ) )
10
11 Sys tem . out . p r i n t l n ( " S on i gu a l e s " ) ;
12
13 el se
14
15 Sys tem . out . p r i n t l n ( " S on di f e r e n t e s " )
; 16
17
18
5: Supongamos que reescri bimos el ejemplo Boun c ingB a 11 del libro de la forma en que se
muestra a continuación:
1
pub1 ic c 1 a ss Boun c in gBa1 1 {
2
int n ;
3
pub1i c st a t i c vo id ma in ( S tr ing a rgs [] )
4 {
5
6 if (n ! = O )
7
8 n = n + 1;
9 S yste m . out . pr i n t 1 n ( " E 1 nóme ro es " + n ) ;
10
11
12
1 import j ava . ut i 1 . * ;
2 p ub 1 ic c 1 a s s Mu si c O r g a n i z er
3 pu b 1 ic static vo id ma in ( Str ing ar gs [] )
{
4 Ar r a y L i s t < S tr ing> a = new Ar rayL i
( 5) ;
st
5 for ( i nt i= O ; i< =5 ; i+ + )
6 {
7 a . add ( " Ho 1 a " ) ;
8
9 S y s t e m . out . p r i n t 1 n ( " F u n c i o n a " ) ;
10
11
7: Queremos compilar el siguiente código que se puede encontrar en el texto base de la asignatura,
convenientemente modificado. ¿Qué ocurre al compilarlo con Bl ueJ ?
1 import j ava . u t i l . L i s t ;
2 pu bl ic abst ract c l a s s
Animal 3 {
4 priv ate boo l ea n al ive ;
5 private String field;
6 priv ate String location
; 7
8 pu b l ic ab s t r a c t Animal ( S t r i n g field, Str ing location
) 9 {
10 al ive = true ;
11 t hi s . f i e l d = f i e l d ;
12 t hi s . l o c a t i o n = l o ca t ion
; 13
14
15 ab s t r a c t publ i c v o id act ( L i st<Ani mal> newAn imal
s) ; 16
9: Según el texto de la bibl iografía básica de la asignatura, ¿cuál es el método imprescindible y que
ha de implementarse siem pre de la interfaz Se ri a l i z able cuando queremos implementar la
serial ización?
a. El método IOWrite.
b. El método lnputOutputWrite.
c. El método WriteOutput.
d. Ninguno de los anteriores.
10: Queremos compilar el siguiente cód igo que se puede encontrar en el texto base de la asignatura
y que ha sido convenientemente modificado. El programa compila sin problemas pero no muestra por
pantalla el texto "Ejemplo de texto". ¿ Qué tendríamos que añadir / modificar para se mostrase?
a. Añadir entre las líneas 9 y 10 lo siguiente: frame . setVi s i b 1 e ( t rue ) ; y eliminar la l ínea 17.
b. Añadir entre las líneas 15 y 16 lo siguiente: frame . pa ck ( ) ;
c. Añadir entre las líneas 16 y 17 lo siguiente: frame . pa ck ( ) ;
d. Sustituir la línea 17 por lo siguiente: frame . pack ( ) ;
11: Según el texto de la bibl iografía básica de la asignatura, ¿qué define el término acoplamiento?
a. La bondad de la correspondencia entre una unidad de código y una tarea lógica o entidad.
b. La interconexión existente entre clases, buscando un acoplamiento lo menor posi ble.
c. La capacidad de un objeto de comportarse como otra clase de la cual proviene.
d. Ninguna de las anteriores.
12: Sea el siguiente fragmento de código modificado de la clase Ma i 1 I tem mostrada en el libro
de texto:
1
pub1 ic c 1 a ss Ma i l i tem {
2
s t a t i c S t r ing from ;
3
st at i c Str ing to;
4
s t a ti c S t r ing mess age ;
5
int numbe r ;
6
7 pub1 ic st a t i c void ma in ( S tring args [ ] )
8 Mai 1 I tem m = new Ma i 1 I tem ( " Ho 1 a " , "Adi o s " , " Lu e go " , 3) ;
9 S y st e m . out . p rint 1 n ( " F u n c i ona" )
; 10
11
12 p ub 1 i c Ma i l i tem ( S tring from, S tr in g to , St ring me s s ag e , int number) {
13 th is . from = from ;
14 thi s . to = t o;
15 this . me ssag e = me ssag e ;
16 this . number = numbe r;
17
18
13: Según el texto de la bibliografía básica de la asignatura, ¿qué podemos afirmar sobre las pruebas
de regresión?
a. La modificación de software acarrea con mucha facilidad errores adicionales de software.
b. Las pruebas de regresión sobre un módulo determinado tras haberse hecho una modificación del cód igo
pueden obviarse si no se real izan cambios en ese módulo.
c. Los marcos de regresión permiten automatizar las pruebas de regresión.
d. Si no se automatizan, es más probable que las pruebas de regresión se lleven a cabo.
14: Según el texto de la bibl iografía básica de la asignatura, ¿qué podemos afirmar sobre el concepto
de sustitución?
a. Pueden utilizarse o bjetos de un supertipo en cualquier lugar en el que se espera objetos de un subtipo.
b. Permite crear o bjetos de un clase que es abstracta.
c. Permite que una variable almacena objetos de diferentes tipos (en concreto, del tipo declarado o de
cualquier supertipo del tipo declarado).
d. Ninguna de las anteriores
RESERVA 1: Si una clase B extiende una clase abstracta A que tiene un método abstracto me t, ¿qué podemos
afirmar?
a. Que necesariamente B es abstracta.
b. Que si B implementa el método m et, entonces seguro que B no es abstracta.
c. Que no se pueden crear instancias de A.
d. Que puedo crear instancias de A.
RESERVA 2: Según el texto de la bibliografía básica de la asignatura, ¿qué puede usarse para generar la
descripción de las interfaces de las clases a partir del código fuente?
a. JDK
b. J Un it
c. Code Pad
d. Ninguna de las anteriores
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 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
Las preguntas de reserva sólo tendrán utilidad en el caso de que alguna de las 14 preguntas iniciales del test
sea anulada por cualquier circunstancia. Caso de ocurrir este hecho, si se produj era la anulación de alguna de
las 14 preguntas iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso de que una
segunda pregunta de las 14 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 14 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).
2: Indique el orden seguido en los ejemplos del texto de la bibliografía básica de la asignatura en
cuanto a la parte interna de una clase:
int A = 9 ;
float B = 3 . 3 F;
char e = � vJ i ;
Indica cual será la salida por pantalla (cada valor en una línea diferente):
a. True true fa lse
b. True fa lse fa lse
c. True fa lse true
d. False fa lse fa lse
4: Indica cual de las siguientes afirmaciones es correcta en relación a que tipo de bucle se debe
utilizar:
a. Si tenemos un bucle que no está relacionado con colecciones ha brá que elegir el bucle fo r-each
b. El bucle fo r es preferible si, al principio del bucle, no sabemos cuantas veces tenemos que
ejecutarlo.
c. Si necesitamos 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. El bucle for-each es adecuado cuando nos hace falta util izar de manera explícita el contador del
bucle.
Indique qué métodos permiten una sobrecarga del método setVar de manera correcta :
a. 3 y 5
b. 3 y4
c. 1 y 2
d. 1 y 3
10: Indique cual de las siguientes opciones declarará un método en una clase que fuerza a una
su bclase a implementarlo:
a. static void methoda (double d1) {}
b. public native double methoda();
c. abstract public void m ethoda();
d. protected void methoda (double d1){}
11: Indica cual de las siguientes afirmaciones es correcta en relación a un marco de Swing
(J Frame):
a. Está compuesto de tres partes: la barra de títu lo, una barra de menú opcional y los cuadros de
diálogo.
b. Está compuesto de tres partes: la barra de títu lo, el panel de contenido y el gestor de los bordes.
c. Está compuesto de tres partes: la barra de títu lo, una barra de menú opcional y el panel de
contenido.
d. Está compuesto de cuatro partes: la barra de título, una barra de menú opcional, el panel de
contenido y el gestor de los bordes.
13: Teniendo en cuenta el modelo en cascada presente en la construcción del software, indica
cual de las siguientes fases NO pertenece al desarrollo de software:
a. Análisis del problema.
b. Prueba Un itaria.
c. Prueba Secuencial.
d. Entrega del sistema al cliente.
14: La siguiente imagen corresponde a un pantallazo de la aplicación Bl ueJ. En la parte inferior
de recha hay un componente rectangula r de Blu eJ que e n s u interior co ntiene la expresión 1313 % 4� q u e a
su vez está rodeada por un rectángulo intermitente. ¿Qué componente o herramienta es esta?:
:�)%�)):}3: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}�:�?�";.�:::.::�'»::��� ..
•••
· � �::;:::;: � �::;: ::;:
�� ��
..::.::.::.::.::..
..:1 �.�
. :.... �� ��
: \
a. Code Add
b. Code Exp
c. Code Pad
d. Code Area
public class t es t {
public static void add3 ( I nt eger i )
int val = i . intValue ( ) ;
val += 3 ;
i = new I nt eg er (va l ) ;
• Préstamos: prestar los materiales a los usuarios (tanto en papel como en otros formatos), reservas de
materiales ya en préstamos, control de préstamos (emisión de avisos de materiales fuera de plazo), gestión
de multas.
• Suscripciones: gestión de las suscripciones a revistas y periódicos.
• Catálogo en línea u O PAC (del inglés Online Public Access Catalog) : interfaz pú blica a los servicios de la
bibl ioteca (búsquedas, gestión de prestamos, etc.).
• Gestión de usuarios: altas, bajas, generación de tarjetas, historiales.
Funcionalidades
Los 51GB permiten la implementación desde labores simples de gestión de una alta de usuario, hasta
operaciones más compl ejas como es la gestión de préstamos o inventario. En esta práctica, se propondrán
d iferentes funcionalidades para el sistema de gestión bibl iotecaria:
• Añadir nuevos materiales a la colección de la biblioteca (rel lenando los datos de un fo rmulario). Cada
tipo de material debería tener su propia colección (li bros, 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).
• Real ización básica de Préstamos: prestar un material si está disponible en la biblioteca, asignar fechas
de d evol ución.
• Producir listados de préstamos según el tipo de material.
• Realizar búsquedas flexi bles sobre los materiales en la bibl ioteca 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 flexi bles sobre los materiales en varias bibl iotecas 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 bibl iotecas. El procesamiento de dichas solicitudes se lleva a ca bo 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 nom bre de la biblioteca, el nom bre
del libro, el autor y el nombre de esta bibl ioteca. 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 bibl iotecas.
o Importar y procesar un archivo de solicitudes para materiales proveniente de otra bibl ioteca. 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
apl icació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 al macenar 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 reutil ización de código y facilite
su mantenimiento.
b) [2,0 puntos] Implementa un método (o métodos) que permitan 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 (li bros, revistas, periódicos, audio, video, etc. ).
e) [2,0 puntos] Implementa un método (o métodos) que permitan la importación y procesamiento de un
archivo de solicitudes para materiales proveniente de otra biblioteca (préstamos entre bibliotecas). Se
debe actual izar el estatus de cada material para marcarse como prestado, pero en vez del identificador
del usuario debería aparecer el identificador de la biblioteca.
d) [1,5 puntos] Para la siguiente versión del software se desea añadir la figura de la Editorial. De cada
editorial se debe tener un listado de los libros y audiol ibros que proporciona, así como su precio, que
podría actual izarse manualmente después de la última venta. El sistema debería consultar el inventario
a final de año, y de los li bros más prestados (top 10%), realizar un pedido a la Editorial correspondiente
de un 20% más de libros. El porcentaje de libros más prestados y el porcentaje de libros pedidos a las
Editoriales, podrán ser configura bles dependiendo del presupuesto de la bibl ioteca. ¿Qué cambios
serían necesarios en el diseño para adaptar esta nueva funcionalidad? Implemente el método (o
métodos) que permita esta nueva funcionalidad.
UNIVERSIDAD NACJONAL DE EDUCACIÓ N A DISTANCIA - ESCUELA TÉCNICA SUPE.RIOR DE
INGENIElÜA INFO.RMÁTlCA
71901072 � 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 14 preguntas iniciales del test
sea anulada por cualquier circunstancia. Caso de ocurrir este hecho, si se produj era la anulación de alguna de
las 14 preguntas iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso de que una
segunda pregunta de las 14 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 14 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).
a. ClaseA
b. ClaseB
c. Error de compilación en la línea 7
d. Error de compilación en la línea 13
2: De acuerdo a la bibliografía básica, el que un campo o miem bro públ ico de una clase sea
estático impl ica que:
¿Qué salida obtendremos al ejecutar el siguiente cód igo dentro de un método main implementado en
cualquiera de las clases?
15 . Clas eA p = new C l a s e B ( ) ;
16. p . m etodo l ( ) ;
5: Dado el siguiente cód igo indicar cuál de las afirmaciones es correcta. Suponga que las
importaciones de li brerías correspondientes se han realizado.
a. AABB
b. AABB8
c. Error de compilación en la línea 6
d. Error de compilación en la línea 9
a. AABBCC
b. AAB
c. AABB
d. El cód igo no compila
10 .
11 . }
a. Error de compilación en la línea 6
b. Error de compilación en la línea 7
c. Error de compilación en la línea 8
d. Miembro l = null
a. No se muestra nada
b. cadenal == cadena2
c. cadena l.equals(cadena2)
d. B y C son ciertas
12: Según el texto de la bibl iografía básica de la asignatura, indique cuál de las siguientes
afirmaciones es correcta :
a. El acoplamiento descri be el encapsulamiento de las clases.
b. El encapsulamiento apropiado en las clases reduce su cohesión.
c. El encapsulamiento apropiado en las clases reduce su acoplamiento.
d. L a cohesión d e un a u nid a d d e cód igo refleja s u acopla m iento.
l . cl a s s ClaseA {
2. . public fl o at m et odol ( double d)
3. . S y s t e m . out . p r i n t l n ( " C l a s e A " ) ;
4. . r et u r n l
. OF; 5 .
6.
7.
8.
. public cl a s s ClaseB e x te n ds ClaseA {
9.
public doub le me to do l ( double d )
10 . S y s t e m . o u t . p r i n t l n ( " C l a s eB " ) ;
11 . ret u rn 1 . 0;
12 .
13 .
14 . p u b l ic s t a t i c v oid ma in ( S t r in g [ ] a rg s )
15 . new C l a s e B ( ) . me todol ( O . O ) ;
16.
17 .
a. ClaseA
b. ClaseB
c. 1.0
d. El código no compila
14: De acuerdo a la bibliografía básica, ¿qué significa instanciar una clase?
a. Dupl icar una clase.
b. Heredar de una clase.
c. Crear un o bjeto a partir de una clase.
d. Conectar dos clases entre sí.
RESERVA 1: Respecto a las excepciones en Java, ¿Cuál de las siguientes afirmaciones es correcta?
a. Todas las su bclases de la clase estándar de Java RunTimeException son excepciones comprobadas.
b. Todas las su bclases de la clase estándar de Java Exception son excepciones comprobadas.
c. Error es una su bclase di recta de Throwa ble, mientras que Exception es una su bclase directa de
Error.
d. Ta nto Error como Exception son su bclases directas de 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 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.
UNIVE SIDAD NACIONAL DE A DISTANCIA� ESCUELA TÉCNICA DE
Las preguntas de reserva sólo tendrán utilidad en el caso de que alguna de las 14 preguntas iniciales del test
sea anulada por cualquier circunstancia. Caso de ocurrir este hecho, si se produjera la anulación de alguna de
las 14 preguntas iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso de que una
segunda pregunta de las 14 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 14 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).
1 import java.util.*;
2
3 public class MusicOrganizer
4
5 public static void main (String args [])
6
7 ArrayList <Double> a = new ArrayList <Double> (5);
8 Integer numero = new Integer(O);
9
10 for (int i=O; i<=5; i++)
11
12 numero = Integer(i);
a.add(numero);
System.out.println(a.toString());
16
17
1 import java.awt.*;
2 public class ImageViewer extends Frame{
3 public static void main(String argv []){
4 ImageViewer MiimageViewer=new ImageViewer(); 5
6
7 ImageViewer()
8 Button BotonHola=new Button("Hola");
9 Button BotonAdios=new Button("Adios");
10 add(BotonHola);
11 add(BotonAdios);
12 setSize(300, 300);
setVisible(true);
14
15
a. Compila, y muestra dos botones juntos ocupando todo el frame. "Hola" en la izquierda y "Adios" en la
derecha.
b. Compila, y muestra un botón ocupando todo el frame diciendo "Hola".
c. Compila, y muestra un botón ocupando todo el frame diciendo "Adios".
d. No compila.
12: Según el texto de la bibliografía básica de la asignatura, ¿qué permite el patrón Método
Factoría?
a. Garantiza que solo se cree una instancia de una clase y proporciona un acceso unificado a la misma.
b. Proporciona una interfaz para crear objetos, pero deja que las subclases decidan qué clase específica se
crea.
c. Trata con el problema de añadir funcionalidad a un objeto existente.
d. Define una relación uno-a-muchos, de modo que cuando un objeto cambie su estado, muchos otros
pueden ser notificados.
13: Se quiero compilar y ejecutar el siguiente código obtenido del manual de referencia y que ha
sido oportunamente modificado. ¿Cuál es el resultado que obtenemos?
1
public abstract class Simulator {
2
public static void main(String argv []){
3
System.out.println(mensajePantalla()); 4
5
6
public static String mensajePantalla(){
7
return ("Hola");
8
9
PARTE PRÁCTICA
La práctica del presente curso consiste en diseñar e implementar un sistema integrado de gestión de
un taller de vehículos. Todos los dueños de algún tipo de vehículo (moto, coche, furgoneta, etc.) tienen
experiencia en llevar su vehículo al taller para algún tipo de revisión y/o reparación. Puede que sea una puesta
a punto antes de las vacaciones o algún viaje largo, o debido a un problema concreto o ruido que hace, o
alguna fuga de líquido, etc. Hace años, el responsable de un taller no haría más que apuntar en un libro una
breve descripción del vehículo, el motivo por el cual ha acudido al taller su dueño y algún número de
contacto. Hoy en día, debido en parte a la competencia entre talleres y al deseo de aportar servicios de calidad
para poder fidelizar al cliente, los talleres usan sistemas de gestión para todo el proceso de recepción,
procesado y facturación de cada vehículo que pasa por el taller.
En general, las funciones que tienen un sistema de gestión de un taller de coches son
varias:
• Recepción del vehículo: al entrar un vehículo en el taller hay que generar una ficha con los datos (si
ya no forma parte del registro histórico del taller) más importantes (marca, modelo, matrícula, cliente,
etc.), dejar constancia del motivo de la visita (problema mecánico, revisión, etc.) e imprimir el
formulario de autorización que el dueño tiene que firmar para autorizar el trabajo.
• Asignación de los trabajos a los mecánicos: a medida que vayan terminando trabajos, el jefe del taller les
va asignando nuevos vehículos.
• Procesado de los vehículos: un mecánico, al terminar la reparación de un vehículo, acude al sistema
para ver los siguientes trabajos que le corresponden. Según la información del sistema, tiene que
averiguar el problema, llevar a cabo el trabajo correspondiente y dejar constancia del proceso realizado
en el sistema para que el comercial pueda informar al cliente de que su vehículo está listo para recoger.
Una vez que el mecánico termine con un coche, en el sistema le aparece reflejado el siguiente vehículo
asignado. Si por el motivo que sea (por ejemplo, falta de piezas o que un cliente no haya dado su
autorización a realizar una reparación debido al coste), un mecánico deja un trabajo en un estado sin
completar, anota en el sistema el motivo y pasa al siguiente trabajo.
• Gestión de usuarios: altas, bajas, modificaciones de las personas que figuran en el sistema (miembros del
taller [jefe, mecánico, comercial] y clientes). La primera vez que acude un cliente al taller hay que darle
de alta en el sistema.
• Gestión de clientes por parte del comercial: comunicar a los clientes el precio de una reparación,
informarles de que su vehículo está listo para recoger, presentar ofertas especiales (por ejemplo, revisión
antes de la inspección técnica del vehículo [ITV] o puesta a punto para las vacaciones, revisión de los
neumáticos, frenos).
Las preguntas de reserva sólo tendrán utilidad en el caso de que alguna de las 14 preguntas iniciales del test
sea anulada por cualquier circunstancia. Caso de ocurrir este hecho, si se produjera la anulación de alguna de
las 14 preguntas iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso de que una
segunda pregunta de las 14 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 14 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).
int. indice = 1;
boolean[] examen = new boolean[8];
boolean poo = examen [indice];
Indica cual de las siguientes afirmaciones es correcta en relación al valor de la variable poo.
a. poo tiene el valor false
b. poo tiene el valor O
c. poo tiene el valor null
d. Se produce una excepción y poo no posee ningún valor
elass Test
10: Dado el siguiente fragmento de código que pretende mostrar un ejemplo de sobrescritura:
class Examen {
private float pregunta = l.Of ;
protected float getNota ( ) {return pregunta;}
}
Indique cual de las siguientes opciones completaría el código anterior para dar lugar a un ejemplo correcto
de sobrescritura:
a. public float getNota (float valor ) { return valor;}
b. float getNota ( ) { return nota;}
c. float double getNota ( ) { return nota;}
d. public float getNota ( ) { return nota;}
í:mport. ja.va.x.swing."";
fra.me.set.Visible{true);
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 funciones
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 que clase hemos de definir en este caso y asociárselo al JFrame del ejemplo:
a. Actionlistener
b. Componentlistener
c. ltem Listener
d. Windowlistener
13: Indique cual de las siguientes afirmaciones es correcta en relación a la programación por
parejas:
a. Es uno de los elementos de una técnica que se conoce como programación extrema.
b. Consiste en programar una clase por duplicado con el objetivo de depurar los errores más fácilmente.
c. Es una manera de producir código, opuesta a la programación extrema en la que un solo programador
desarrolla las clases asignadas.
d. Era una técnica de programación tradicional que las empresas eliminaron para reducir costes.
14: 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.
try {
}catch (ArithmeticException e) {
}finally {
PARTE PRÁCTICA
La práctica del presente curso consiste en diseñar e implementar un sistema integrado de gestión de
un taller de vehículos. Todos los dueños de algún tipo de vehículo (moto, coche, furgoneta, etc.) tienen
experiencia en llevar su vehículo al taller para algún tipo de revisión y/o reparación. Puede que sea una puesta
a punto antes de las vacaciones o algún viaje largo, o debido a un problema concreto o ruido que hace, o
alguna fuga de líquido, etc. Hace años, el responsable de un taller no haría más que apuntar en un libro una
breve descripción del vehículo, el motivo por el cual ha acudido al taller su dueño y algún número de
contacto. Hoy en día, debido en parte a la competencia entre talleres y al deseo de aportar servicios de calidad
para poder fidelizar al cliente, los talleres usan sistemas de gestión para todo el proceso de recepción,
procesado y facturación de cada vehículo que pasa por el taller.
En general, las funciones que tienen un sistema de gestión de un taller de coches son
varias:
• Recepción del vehículo: al entrar un vehículo en el taller hay que generar una ficha con los datos (si ya no
forma parte del registro histórico del taller) más importantes (marca, modelo, matrícula, cliente, etc.),
dejar constancia del motivo de la visita (problema mecánico, revisión,
etc.) e imprimir el formulario de autorización que el dueño tiene que firmar para autorizar el trabajo.
• Asignación de los trabajos a los mecánicos: a medida que vayan terminando trabajos, el jefe del taller les
va asignando nuevos vehículos.
• Procesado de los vehículos: un mecánico, al terminar la reparación de un vehículo, acude al sistema
para ver los siguientes trabajos que le corresponden. Según la información del sistema, tiene que
averiguar el problema, llevar a cabo el trabajo correspondiente y dejar constancia del proceso realizado
en el sistema para que el comercial pueda informar al cliente de que su vehículo está listo para recoger.
Una vez que el mecánico termine con un coche, en el sistema le aparece reflejado el siguiente vehículo
asignado. Si por el motivo que sea (por ejemplo, falta de piezas o que un cliente no haya dado su
autorización a realizar una reparación debido al coste), un mecánico deja un trabajo en un estado sin
completar, anota en el sistema el motivo y pasa al siguiente trabajo.
• Gestión de usuarios: altas, bajas, modificaciones de las personas que figuran en el sistema (miembros del
taller [jefe, mecánico, comercial] y clientes). La primera vez que acude un cliente al taller hay que darle
de alta en el sistema.
• Gestión de clientes por parte del comercial: comunicar a los clientes el precio de una reparación,
informarles de que su vehículo está listo para recoger, presentar ofertas especiales (por ejemplo, revisión
antes de la inspección técnica del vehículo [ITV] o puesta a punto para las vacaciones, revisión de los
neumáticos, frenos).
719(U072 A INGENIERÍA l
TECNOLOGÍAS DE LA INFORMACIÓN)
Las preguntas de reserva sólo tendrán utilidad en el caso de que alguna de las 14 preguntas iniciales del test sea anulada
por cualquier circunstancia. Caso de ocurrir este hecho, si se produjera la anulación de alguna de las 14 preguntas
iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso de que una segunda pregunta de las 14
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 14 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).
2: Indique el orden seguido en los ejemplos del texto de la bibliografía básica de la asignatura en cuanto a
la parte interna de una clase:
{
PARTE INTERNA DE UNA ClASE
}
int />. = 9;
float g = 3.3F;
chmC = 'w';
System.out.println(i\ + B > 12 );
System.out.println(i\ >= 8 && C != 'w' );
System.out.println((C: == 'e') 11 ((;\ + B) == 12 ));
Indica cual será la salida por pantalla(cada valor en una línea diferente):
5: Supongamos que queremos implementar una Agenda, ¿cuál sería la salida del siguiente
código?
protected Agenda(){
i= O; i<10; i++){
for(int
System.out.println(i);
a. La interfaz de una clase describe lo que una clase hace y cómo se puede utilizar mostrando su
implementación.
b. El código fuente completo que define una clase es la interfaz de dicha clase.
c. Se dice que un objeto es inmutable si su contenido o estado no puede cambiarse después de crearlo excepto si la
interfaz es mutable.
d. La documentación de la librería de clasesJava muestra detalles acerca de todas las clases de la librería.
7: Indique cuales de las siguientes expresiones resultan verdaderas:
1. !( 4<5 )
2. ( 2 > 2 ) 11 ( ( 4 == 4 )&& ( 1<o ) )
3. ( 2 > 2 ) 11 ( 4 == 4 )&& ( 1<o )
4. ( 2 > 2 )11 !( ( 4 == 4 )&& ( 1<o ) )
5. ( 34 != 33 )&& ! false
a. Las expresiones 4 y 5.
b. Las expresiones 3 y 4.
c. Las expresiones 2 y 4.
d. Las expresiones 3 y 5.
a. El tipo dinámico de una variable v es el tipo tal como está declarado en el código fuente.
b. El tipo estático de una variable v es el tipo del objeto que está almacenado actualmente en v.
c. Declarar un campo o un método protegido impide acceder directamente a él desde las subclases.
d. Todas las afirmaciones anteriores son falsas.
12: Indique cual de las siguientes opciones declarará un método en una clase que fuerza a una subclase a
implementarlo:
13: ¿Qué significa el siguiente fragmento de códigoJava?: String saludar() { return "Hola"; }
a. Hay un método "String saludar" que no recibe ningún parámetro de entrada y devuelve el valor "Hola".
b. Hay una variable"String" cuyo valor es "saludar() { return"Hola"; }"
c. Hay un método "saludar" que no recibe ningún parámetro de entrada y devuelve una cadena (String) cuyo valor
es "Hola".
d. El fragmento no representa un fragmento de código legal enJava.
14: 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.
try {
}catch (ArithmeticException e) {
}fi nally {
a. 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
b. El Bloque4 no se ejecutará si se produce una excepción de tipo aritmético en el Bloque2
c. El Bloque4 no se ejecutará si se produce un acceso a un objeto nulo (null) en el Bloque2
d. El Bloque4 se ejecutará antes que el Bloque3 si se produce una excepción de tipo aritmético en el Bloque2
int electrodomestico = 1;
boo!ean[] ventas = new boolean[3];
boo!ean financiado = ventas[electrodomestico];
Indica cual de las siguientes afirmaciones es correcta en relación al valor de la variable aprobado.
PARTE PRÁCTICA
La Práctica del presente curso va a consistir en diseñar e implementar un sistema integrado de gestión de una tienda de
electrodomésticos. Hoy en día las tiendas de electrodomésticos además de disponer de una gran cantidad de productos
en sus tiendas, disponen de diferentes perfiles de empleados (técnicos, cajeros, financiación y postventa) para atender de
la mejor manera posible a sus clientes. Además, los clientes disponen de un perfil que además de sus datos personales
incluyen un historial de compras, generación de facturas, descarga de manuales, comprobación de estado de garantía y
promociones. De esta forma, la práctica consiste en desarrollar un sistema de gestión que englobe todas estas
características teniendo en cuenta un diseño orientado a objetos.
En general, las funciones que tienen un sistema de gestión de una tienda de electrodomésticos son varias:
•
Venta de un electrodoméstico (cajero): cuando un cliente pasa por la línea de cajas es necesario
generar una ficha de cliente en el caso de que no disponga de ella. El identificador principal
es el DNI y los datos más importantes son el nombre, apellidos, dni, domicilio y número de
teléfono. Esta ficha tendrá disponible un histórico de los productos comprados y su fecha de
adquisición. En el caso de solicitar financiación, deberá constar en la ficha y el cliente debería pasar
por la oficina de financiación para obtener el visto bueno.
•
Financiación (financiación): El empleado de la oficina de financiación recibirá clientes que
previamente hayan pasado por la línea de cajas para comprar productos y analizará la ficha de
financiación. Solicitará la última nómina al cliente, dejando constancia de la cantidad en la ficha del
cliente y en caso de que el cargo mensual no supere el 15% de la nómina en un máximo de
financiación de60 meses, la financiación se aprobará.
•
Reparación de Electrodomésticos (técnico): Los clientes podrán llevar sus productos comprados en
la tienda a reparar. Las condiciones de reparación serán las siguientes: reparación gratuita en los
dos primeros años. A partir de esa fecha, se cargará un importe al cliente dependiendo de la
reparación efectuada.
•
Devolución de electrodoméstico (postventa): Un cliente, presentando su DNI, podrá devolver uno o
varios electrodomésticos en el caso de que el periodo de compra no supera los3 meses.
•
Gestión comercial (comercial): Este empleado generará una serie de comunicaciones con el cliente
ofreciendo diferentes posibilidades de compra.
•
Gestión de usuarios: altas, bajas, modificaciones de las personas que figuran en el sistema (empleados
-- técnicos, cajeros, financiación, postventa y comerciales -- y clientes). La primera vez que acude un
cliente a la tienda hay que darle de alta en el sistema.
•
Gestión de clientes: Cada uno de los empleados tendrán un tipo de relación con el cliente teniendo que
dejar constancia en la ficha del cliente la operación realizada y sus detalles (cliente, empleado que
atiende, tipo de operación, productos involucrados, fecha, etc.)
Se pide realizar las siguientes tareas:
a) [1,0 puntos] Diseñar utilizando un paradigma orientado a objetos, los elementos necesarios para la aplicación
explicada de la práctica durante el curso. Es necesario identificar la estructura y las relaciones de herencia
(mediante el uso de un diagrama de clases) y de uso de las clases necesarias para almacenar y gestionar esta
información. Debe hacerse uso de los mecanismos de herencia siempre que sea posible. Se valorará un buen
diseño que favorezca la reutilización de código y facilite su mantenimiento.
b) [2,0 puntos] Implementar un método (o métodos) que permita generar un listado por cada cliente de
los electrodomésticos comprados en un día determinado, indicando, para cada uno de los electrodomésticos,
otros empleados que hayan intervenido, como el cajero, financiación o postventa. El listado aparecerá ordenado
ascendentemente por el precio de venta del electrodoméstico (en el listado aparecen antes aquellos que tengan un
precio menor). Justifique las opciones y decisiones que se tomen.
e) [2,0 puntos] Implementar un método (o métodos) que implemente la garantía digital. Esta garantía
consta de toda la información posible acerca de la venta, reparaciones y financiación hechas en el
electrodoméstico. El usuario puede acceder online a este servicio y descargar dicha información. Justifique las
opciones y decisiones que se tomen.
d) [1,5 puntos] Implementar un método (o métodos) que permita gestionar las diferentes ofertas y
promociones que puede ofrecer la tienda: ofertas en los principales periodos de compra (navidades, días
especiales, etc.) y rebajas en los dos periodos típicos(Enero, Julio, Black Friday, etc.).
NACIONALEDUCACIÓN A DISTANCIA� ESCUELA SUPERIOR DE
INGENIERÍA INFORMÁTICA
719(U072 A INGENIERÍA l
TECNOLOGÍAS DE LA INFORMACIÓN)
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.
Las preguntas de reserva sólo tendrán utilidad en el caso de que alguna de las 14 preguntas iniciales del test sea
anulada por cualquier circunstancia. Caso de ocurrir este hecho, si se produjera la anulación de alguna de las 14
preguntas iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso de que una segunda pregunta
de las 14 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 14 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).
2: ¿En qué condiciones puede volverse a invocar un constructor de una clase para un objeto después de
que ese objeto haya sido creado?
a. Cuando queremos resetear todos los campos del objeto a sus valores iniciales.
b. Cuando se ha creado un objeto abstracto y se le quiere dar valores iniciales a sus atributos.
c. Cuando se implementa una interfaz para el objeto en cuestión.
d. Nunca.
3: El uso de índices fuera de los límites legales de una matriz hará que se produzca ...
a. Será responsable de al menos una tarea bien definida, pero puede serlo de más.
b. Será responsable, idealmente, de una y sólo una tarea o entidad bien definida coherente.
c. Es aquel método abstracto que se ha instanciado en una clase determinada.
d. Es aquel que se crea en una clase interna para ser invocado desde la clase circundante.
5: Sea el siguiente fragmento de código modificado de la clase Mailltem mostrada en el libro de
texto:
1 import java.util. *;
2 public class MusicOrganizer {
3 public static void main (String args []) {
4 Arraylist <String> a = new Arraylist ();
5 for (int i=O; i<=5; i++)
6 {
7 a.add("Hola"); 8
9 System.out.println("Funciona"); 10
11
continuación:
¿Cuál es la línea que provoca que el código produzca uno o varios errores de compilación?
a. Línea 5.
b. Línea 3.
c. Línea 2.
d. Línea 1.
8: Supongamos que reescribimos el ejemplo BouncingBall del libro de la forma en que se muestra a
continuación:
1 import java.utii.Random;
2 public class BouncingBall {
3 public static void main (String args []) {
4 Random randomGenerator;
5 randomGenerator = new Random();
6 int index = randomGenerator.nextlnt();
7 System.out.println(index); 8
9
¿Cuál es la línea que provoca que el código produzca uno o varios errores de compilación?
9: ¿Cómo se llama el entorno de pruebas que soporta la prueba estructurada de unidades y las pruebas de
regresión en Java?
a. JDK
b. JBoss
c. Javadoc
d. JUnit
10: Respecto al constructor de la subclase ...
a. Debe siempre invocar al constructor de su superclase como primera instrucción. Si no incluye esta llamada,
Java intentará insertar una llamada automáticamente.
b. No debe invocar nunca al constructor de su superclase como primera instrucción. Si la incluye esta llamada,
Java ignorará esta llamada automáticamente.
c. Debe siempre invocar al constructor de su superclase como última instrucción. Si no incluye esta llamada,
Java intentará insertar una llamada automáticamente.
d. Debe siempre invocar al constructor de su superclase como última instrucción. Si no incluye esta llamada, Java
generará un error de compilación.
12: Si una clase B extiende una clase abstracta A que tiene un método abstracto met, ¿qué podemos
afirmar?
14: Según el texto de la bibliografía básica de la asignatura, ¿cuál de las siguientes afirmaciones NO es
correcta?
a. Los campos almacenan datos de manera no persistente dentro de un objeto.
b. Los constructores son responsables de garantizar que un objeto se configure apropiadamente en el momento
de crearlo por primera vez.
c. Los métodos implementan el comportamiento de un objeto; proporcionan su funcionalidad.
d. Los campos se definen fuera de los constructores y métodos.
RESERVA 2: Según el texto de la bibliografía básica de la asignatura, ¿qué se entiende por abstracción?
a. Proceso de dividir un todo en partes bien definidas que puedan construirse y examinarse por separado y que
interactúen de formas bien definidas.
b. Capacidad de ignorar los detalles de las distintas partes, para centrar la atención en un nivel superior de un
problema.
c. Capacidad de dividir un todo en partes bien definidas ignorando los detalles de las distintas partes.
d. Ninguna de las anteriores.
PARTE PRÁCTICA
La Práctica del presente curso va a consistir en diseñar e implementar un sistema integrado de gestión de una tienda de
electrodomésticos. Hoy en día las tiendas de electrodomésticos además de disponer de una gran cantidad de productos en
sus tiendas, disponen de diferentes perfiles de empleados (técnicos, cajeros, financiación y postventa) para atender de la
mejor manera posible a sus clientes. Además, los clientes disponen de un perfil que además de sus datos personales
incluyen un historial de compras, generación de facturas, descarga de manuales, comprobación de estado de garantía y
promociones. De esta forma, la práctica consiste en desarrollar un sistema de gestión que englobe todas estas
características teniendo en cuenta un diseño orientado a objetos.
En general, las funciones que tienen un sistema de gestión de una tienda de electrodomésticos son varias:
•
Venta de un electrodoméstico (cajero): cuando un cliente pasa por la línea de cajas es necesario
generar una ficha de cliente en el caso de que no disponga de ella. El identificador principal es el
DNI y los datos más importantes son el nombre, apellidos, dni, domicilio y número de teléfono.
Esta ficha tendrá disponible un histórico de los productos comprados y su fecha de adquisición. En
el caso de solicitar financiación, deberá constar en la ficha y el cliente debería pasar por la oficina de
financiación para obtener el visto bueno.
•
Financiación (financiación): El empleado de la oficina de financiación recibirá clientes que
previamente hayan pasado por la línea de cajas para comprar productos y analizará la ficha de
financiación. Solicitará la última nómina al cliente, dejando constancia de la cantidad en la ficha del
cliente y en caso de que el cargo mensual no supere el 15% de la nómina en un máximo de
financiación de 60 meses, la financiación se aprobará.
•
Reparación de Electrodomésticos (técnico): Los clientes podrán llevar sus productos comprados en la
tienda a reparar. Las condiciones de reparación serán las siguientes: reparación gratuita en los dos
primeros años. A partir de esa fecha, se cargará un importe al cliente dependiendo de la reparación
efectuada.
•
Devolución de electrodoméstico (postventa): Un cliente, presentando su DNI, podrá devolver uno
o varios electrodomésticos en el caso de que el periodo de compra no supera los 3 meses.
•
Gestión comercial (comercial): Este empleado generará una serie de comunicaciones con el cliente
ofreciendo diferentes posibilidades de compra.
•
Gestión de usuarios: altas, bajas, modificaciones de las personas que figuran en el sistema (empleados
-- técnicos, cajeros, financiación, postventa y comerciales -- y clientes). La primera vez que acude un
cliente a la tienda hay que darle de alta en el sistema.
•
Gestión de clientes: Cada uno de los empleados tendrán un tipo de relación con el cliente teniendo que
dejar constancia en la ficha del cliente la operación realizada y sus detalles (cliente, empleado que
atiende, tipo de operación, productos involucrados, fecha, etc.)
a) [1,0 puntos] Diseñar utilizando un paradigma orientado a objetos, los elementos necesarios para la aplicación
explicada de la práctica durante el curso. Es necesario identificar la estructura y las relaciones de herencia
(mediante el uso de un diagrama de clases) y de uso de las clases necesarias para almacenar y gestionar esta
información. Debe hacerse uso de los mecanismos de herencia siempre que sea posible. Se valorará un buen
diseño que favorezca la reutilización de código y facilite su mantenimiento.
b) [2,0 puntos] Implementar un método (o métodos) que permita generar un listado por fabricante de los
electrodomésticos que hay en stock, indicando, para cada uno de los fabricantes, el número total de
electrodomésticos diferentes existente. El listado aparecerá ordenado descendentemente por el nombre del
fabricante, y dentro de él, los electrodomésticos de ese fabricante aparecerán ordenados ascendentemente por
precio de venta del electrodoméstico (en el listado aparecen antes aquellos que tengan un precio menor).
Justifique las opciones y decisiones que se tomen.
e) [2,0 puntos] Implementar un método (o métodos) que desarrolle una tarjeta de puntos del cliente. Cada cliente
acumulará el 10% del precio de cada compra realizada, de modo que esa cantidad puede ser usada en una próxima
compra. Cuando se va a comprar, si hay disponible puntos, podrán usarse hasta para pagar el 50% de la siguiente
compra. Por ejemplo, si tenemos 240 puntos acumulados y compramos un lavavajillas de 300 €, podremos usar
hasta 150 puntos (el 50% del precio total de la compra), y pagar el resto (150 €) en dinero. De este modo, al
finalizar la compra, se habrán consumido 150 puntos y se habrán pagado 150 €, quedando en la tarjeta de puntos
del cliente 90 puntos restantes (a los 240 puntos que tenía se le han descontado los 150 puntos empleados en la
compra). Justifique las opciones y decisiones que se tomen.
d) [1,5 puntos] Implementar un método (o métodos) gestionar la facturación de un cliente. Así, el sistema generará,
para un cliente determinado, un listado de todas las facturas que el cliente ha generado entre dos meses
suministrados a la aplicación, y proporcionará también la información de las diferentes ofertas que se le han aplicado
al mismo. La información la mostrará desglosada por meses, así como el resumen global. Justifique las opciones y
decisiones que se tomen.
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA� ESCUELA TÉCNICA SUPERIOR DE
INGENIERÍA INFORMÁTICA
71901072 �PROGRAMACIÓN ORIENTADA A OBJETOS (GRADOINGENIERÍA INFORMÁTICA 1 TECNOLOGÍAS DE LA INFORMACIÓN)
SEPTIEMBRE 2018�MODELO B� NO ESTÁ PERMITIDO EL USO DE MATERIAL ADICIONAL
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.
Las preguntas de reserva sólo tendrán utilidad en el caso de que alguna de las 14 preguntas iniciales del
test sea anulada por cualquier circunstancia. Caso de ocurrir este hecho, si se produjera la anulación de
alguna de las 14 preguntas iniciales, la primera pregunta de reserva sustituiría a la pregunta anulada. Caso
de que una segunda pregunta de las 14 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 14 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).
¿Cuál es la línea que provoca que el código produzca uno o varios errores de compilación?
a. No se produce error de compilación
b. En la línea 4
c. En la línea 5
d. En la línea 6
System.out.println(A + B < 12 );
System.out.println(A >= 8 11 e != 'w');
' '
System.out.println((e == e ) && ((A + B)
12 ));
Indica cual será la salida por pantalla (cada valor en una línea diferente):
a. true false true
b. false true false
c. true false false
d. False false false
3: Dada la siguiente jerarquía de herencia:
Electrodomestico
Televisor Lavavajillas
a. Objetos.
b. Copias de objetos.
c. Referencias a objetos.
d. Ninguna de las anteriores.
7: Queremos compilar el siguiente código que se puede encontrar en el texto base de la
asignatura y que ha sido modificado convenientemente. ¿Cuál es el resultado que obtenemos al compilar?
else {
System.out.println("Son diferentes");
9: Para lograr que una clase entre en el depurador en BlueJ a hacer una instancia en BlueJ, ¿qué
hay que hacer con el código fuente?:
a. Compilarlo de nuevo con la opción Debug activado.
b. Lanzar directamente el depurador.
c. Meter un punto de ruptura.
d. Se hace automáticamente al encontrar un error en el código.
10: ¿Qué significa el siguiente fragmento de código Java?: int uno(int i) { return 1 + i;}
a. Hay un método "int uno" que no recibe ningún parámetro de entrada y devuelve el valor l.
b. Hay un método "uno" que recibe un parámetro de entrada i y devuelve un entero cuyo valor es 1 + l.
c. Hay una variable "int" cuyo valor es "uno(int i) { return 1 + i; }"
d. El fragmento no representa un fragmento de código legal en Java.
a. Será responsable de al menos una tarea bien definida, pero puede serlo de más.
b. Es aquel método abstracto que se ha instanciado en una clase determinada.
c. Es aquel que se crea en una clase interna para ser invocado desde la clase circundante.
d. Será responsable de una y sólo una tarea bien definida.
12: ¿Cuál de las siguientes sentencias se ejecuta de manera correcta?
a. Error en tiempo de ejecución indicando que Agenda no ha sido definida como final.
b. Error en tiempo de compilación indicando que una clase con métodos finales deben ser declarada
también como final.
c. Error en tiempo de compilación indicando que no se puede heredar de una clase con métodos finales.
d. Éxito en la compilación y salida "Agregar Elemento".
a. Una aserción es una expresión que establece una condición que esperamos que resulte verdadera.
b. Un seguimiento es la actividad de trabajar a través de un segmento de código línea por línea, mientras
se observan cambios de estado y otros comportamientos de la aplicación.
c. La prueba es la actividad de descubrir si una pieza de código produce el comportamiento pretendido.
d. Todas las respuestas anteriores son correctas.
RESERVA 2: Sea el siguiente fragmento de código modificado de la clase Mailitem mostrada en el libro
de texto:
9 if (aux > 1) {
10 System.out.println(aux); 11 }
12 }
13 }
La Práctica del presente curso va a consistir en diseñar e implementar un sistema integrado de gestión de
una tienda de electrodomésticos. Hoy en día las tiendas de electrodomésticos además de disponer de
una gran cantidad de productos en sus tiendas, disponen de diferentes perfiles de empleados (técnicos,
cajeros, financiación y postventa) para atender de la mejor manera posible a sus clientes. Además, los
clientes disponen de un perfil que además de sus datos personales incluyen un historial de compras,
generación de facturas, descarga de manuales, comprobación de estado de garantía y promociones. De
esta forma, la práctica consiste en desarrollar un sistema de gestión que englobe todas estas
características teniendo en cuenta un diseño orientado a objetos.
En general, las funciones que tienen un sistema de gestión de una tienda de electrodomésticos son varias:
•
Venta de un electrodoméstico (cajero): cuando un cliente pasa por la línea de cajas es necesario
generar una ficha de cliente en el caso de que no disponga de ella. El identificador principal es el DNI y
los datos más importantes son el nombre, apellidos, dni, domicilio y número de teléfono. Esta ficha
tendrá disponible un histórico de los productos comprados y su fecha de adquisición. En el caso de
solicitar financiación, deberá constar en la ficha y el cliente debería pasar por la oficina de
financiación para obtener el visto bueno.
•
Financiación (financiación): El empleado de la oficina de financiación recibirá clientes que previamente
hayan pasado por la línea de cajas para comprar productos y analizará la ficha de financiación.
Solicitará la última nómina al cliente, dejando constancia de la cantidad en la ficha del cliente y en caso
de que el cargo mensual no supere el 15% de la nómina en un máximo de financiación de 60 meses, la
financiación se aprobará.
•
Reparación de Electrodomésticos (técnico): Los clientes podrán llevar sus productos comprados en la
tienda a reparar. Las condiciones de reparación serán las siguientes: reparación gratuita en los dos
primeros años. A partir de esa fecha, se cargará un importe al cliente dependiendo de la reparación
efectuada.
•
Devolución de electrodoméstico (postventa): Un cliente, presentando su DNI, podrá devolver uno o
varios electrodomésticos en el caso de que el periodo de compra no supera los 3 meses.
•
Gestión comercial (comercial): Este empleado generará una serie de comunicaciones con el cliente
ofreciendo diferentes posibilidades de compra.
•
Gestión de usuarios: altas, bajas, modificaciones de las personas que figuran en el sistema (empleados
- técnicos, cajeros, financiación, postventa y comerciales -- y clientes). La primera vez que acude un
cliente a la tienda hay que darle de alta en el sistema.
•
Gestión de clientes: Cada uno de los empleados tendrán un tipo de relación con el cliente teniendo que
dejar constancia en la ficha del cliente la operación realizada y sus detalles (cliente, empleado que
atiende, tipo de operación, productos involucrados, fecha, etc.)
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.
e) [1,5 puntos] Implementar un método (o métodos) para gestionar el plan Renove de Electrodomésticos
que ofrece descuentos a los usuarios clientes para la sustitución de frigoríficos, lavadoras o lavavajillas
con el etiquetado energético de clase A+++. Dicha oferta va en función del tipo de electrodoméstico:
frigoríficos (150€), lavadoras (80€), o lavavajillas (110€). El sistema debería almacenar los datos del
electrodoméstico, del cliente y del aparato antiguo.
d) [2,5 puntos] Se quiere extender el negocio de la tienda a la venta en línea a través de una página
Web. No es necesario desarrollar el sitio Web. Lo que se pide es el método (o métodos) que gestiona(n)
un catálogo para el sitio Web. Además de los datos técnicos de los electrodomésticos, fotos, etc., tendrá
que contener datos sobre las opiniones de los clientes de la tienda en línea sobre ellos.