You are on page 1of 247

UNIVERSIDAD NACIONAL DE EDUCACIN A DISTANCIA.

ESCUELA DE INGENIERA TCNICA INDUSTRIAL


EXAMEN DE FUNDAMENTOS DE INFORMTICA (ESPECIALIDAD ELECTRNICA)

ENERO / FEBRERO 2005

NO EST PERMITIDO EL USO DE MATERIAL ADICIONAL

PRIMERA SEMANA

Para la nota del examen, el Test vale el 30% y el Problema vale el 70%.
El Test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Responda el Test en una hoja de lectura ptica. El cdigo de asignatura es 621040 y el tipo A.
Resuelva el Problema en una hoja aparte (mximo 2 caras), indicando su nombre y el Centro Asociado
en el que ha realizado la prctica.

Primera Parte: Test


1. Cuntos Terabytes hay en un Gigabyte?
a. 1/2
b. 2
c. 1/1024
d. 1024.
2. Qu es la memoria RAM?
a. Memoria permanente de acceso aleatorio.
b. Memoria de slo lectura.
c. Memoria voltil de acceso directo.
d. Memoria donde se almacena la configuracin de los componentes del ordenador.
3. Cul de las siguientes afirmaciones es falsa?
a. Programar con lenguajes de bajo nivel exige conocer la estructura del equipo.
b. Se llama lenguaje mquina al lenguaje ensamblador.
c. El lenguaje ensamblador es de bajo nivel.
d. Los lenguajes orientados a objetos son de alto nivel.
4. Supongamos que necesitamos hacer una compra de un billete de avin por Internet. Qu proceso
sera el ms adecuado para que se llevara a cabo la compra?
a. Proceso on-line.
b. Proceso en lotes.
c. Proceso en tiempo compartido.
d. Proceso en tiempo real.
5. Dado el siguiente programa, indicar qu resultado dara por pantalla:
for (int i=1;i<5;i++)
{
System.out.print(i);
if ((i + 1) = = 3)
continue;
if ( i = = 3)
break;
System.out.print(i+1);
}

a.
b.
c.
d.

12234
1223
12233445
122

UNIVERSIDAD NACIONAL DE EDUCACIN A DISTANCIA. ESCUELA DE INGENIERA TCNICA INDUSTRIAL


EXAMEN DE FUNDAMENTOS DE INFORMTICA (ESPECIALIDAD ELECTRNICA)

ENERO / FEBRERO 2005

NO EST PERMITIDO EL USO DE MATERIAL ADICIONAL

6. En qu punto comienza la ejecucin de un programa en Java?


a. En un mtodo esttico cualquiera, que hay que definir previamente.
b. En el constructor de una de las clases.
c. En el mtodo esttico main.
d. En el mtodo esttico begin.
7. Sea la clase:
Persona persona1 = new Persona();
Persona persona2;
persona1.setNombre(Pepe);
persona2 = persona1;
System.out.print(persona1.getNombre());
System.out.print(persona2.getNombre());
persona2.setNombre(Juan);
System.out.print(persona1.getNombre());
System.out.print(persona2.getNombre());

Indicar lo que se imprimira en pantalla:


a. PepePepePepePepe
b. PepePepePepeJuan
c. PepePepeJuanPepe
d. PepePepeJuanJuan
8. Dada una clase declarada con la palabra reservada extends, indicar de cuntas clases padre puede
heredar directamente:
a. De ninguna.
b. De una.
c. De menos de 5.
d. De todas las que se necesiten.
9. Qu tipos de acceso puede tener el atributo de una clase?
a. public, private, protected, package
b. public, private, associated
c. public, private, protected
d. public, private, protected, associated
10. Cmo se crea un objeto de la clase Calendar de Java?
a. Primero hay que programar el cdigo de la clase adaptndolo al sistema horario local.
Despus se usa new Calendar( );
b. El objeto se crea con new Calendar( );
c. El objeto se crea con Calendar.getInstance( );
d. Se crea con new Calendar( ); pero antes de usarlo es necesario ejecutar
Calendar.getInstance( );

UNIVERSIDAD NACIONAL DE EDUCACIN A DISTANCIA. ESCUELA DE INGENIERA TCNICA INDUSTRIAL


EXAMEN DE FUNDAMENTOS DE INFORMTICA (ESPECIALIDAD ELECTRNICA)

ENERO / FEBRERO 2005

NO EST PERMITIDO EL USO DE MATERIAL ADICIONAL

Segunda Parte: Problema


Se desea disear un programa que tendr que ser capaz de gestionar obras cinematogrficas, literarias y
musicales, permitiendo la creacin, modificacin y acceso de las diferentes obras y sus autores, as como la
impresin por pantalla de sus datos ms caractersticos. De todas las obras necesitamos saber su ttulo, su
autor y ao de edicin. Adems, en concreto, de los libros nos interesa su editorial y su nmero de pginas;
de los discos queremos saber la discogrfica que lo edita y el nmero de canciones; y de las pelculas
interesan los intrpretes y la productora. Todos los autores de una obra, as como los intrpretes de una
pelcula, se consideran artistas. De cada artista queremos saber su nombre y su ao de nacimiento. Por
ltimo, se desea poder imprimir en pantalla todos los datos de cada obra.
Se pide:
1. Dibujar un esquema con las clases necesarias para este programa, indicando los atributos y mtodos que
tiene cada una (slo indicarlos, sin escribir su cdigo). El esquema debe reflejar grficamente la herencia de
clases en caso de que la haya. (3,5 puntos)
2. Codificar la clase correspondiente a las pelculas. (3,5 puntos)
Supongamos a partir de ahora que estamos programando el mtodo main, y que hemos creado los
siguientes objetos:
Clase
Artista
Artista
Artista
Libro

Nombre objeto
gonzaloSuarez
carmeloGomez
maribelVerdu
ciudadanoSade

Datos
Nombre: Gonzalo Surez; Ao de nacimiento: 1954
Nombre: Carmelo Gmez; Ao de nacimiento: 1962
Nombre: Maribel Verd; Ao de nacimiento: 1970
Ttulo: Ciudadano Sade; Autor: gonzaloSuarez; Ao de produccin: 1999;
Editorial: Plaza&Jans; Nmero de pginas: 256

3. Escribir el cdigo necesario para crear el objeto correspondiente a la pelcula "El portero" (Gonzalo
Surez, 2000, Lola Films, interpretada por Carmelo Gmez y Maribel Verd). (1,5 puntos)
4. Codificar en una sola lnea exactamente la siguiente modificacin: "la fecha de nacimiento del autor de la
pelcula 'El Portero' es 1934". Si a continuacin imprimimos por pantalla los datos del libro "Ciudadano
Sade", qu fecha de nacimiento se imprimir en pantalla para el autor? Razonar la respuesta. (1,5 puntos)

PROBLEMA DE LA PRIMERA SEMANA


Solucin al apartado 1:
Obra
private String titulo;
private Artista autor;
private int aoEdicion;
String getTitulo()
void setTitulo(String)
Artista getAutor()
void setAutor(Artista)
int getAoEdicion()
void setAoEdicion(int)

Libro

Artista
private String nombre;
private int aoNacimiento;
Artista(String, int)
int getAoNacimiento()
void setAoNacimiento(int)
String getNombre()
void setNombre(String)

Disco

Pelicula

private String editorial;


private int nPaginas;

private String discografica;


private int nCanciones;

private String productora;


private Artista[] interpretes;

Libro(String, Artista, int,


String, int)
String getEditorial()
void setEditorial(String)
int getNPaginas()
void setNPaginas(int)
void imprimir()

Disco(String, Artista, int,


String, int)
String getDiscografica()
void setDiscografica(String)
int getNCanciones()
void setNCanciones(int)
void imprimir()

Pelicula(String, Artista, int,


String, Artista[])
Artista[] getInterpretes()
void setInterpretes(Artista[])
String getProductora()
void setProductora(String)
void imprimir()

Solucin al apartado 2:
public class Pelicula extends Obra {
private Artista[] interpretes;
private String productora;
public Pelicula(String titulo, Artista autor, int ao,
String productora, Artista[] interpretes) {
this.setTitulo(titulo);
this.setAutor(autor);
this.setAoProduccin(ao);
this.productora = productora;
this.interpretes = interpretes;
}
public void imprimir() {
System.out.print("OBRA: " + this.getTitulo() + "; AUTOR: " +
this.getAutor() + "; AO DE PRODUCCIN:" + this.getAoProduccin()
+ "; PRODUCTORA: " + this.productora + "; INTRPRETES:");
int i;
for (i=0; i<this.interpretes.length; i++ ) {
System.out.print(interpretes[i].toString());
}
System.out.println();
}
}

Esta solucin es posible porque no hemos definido ningn constructor para la clase Obra, por lo que
sigue disponible su constructor por defecto. En otro caso habra que programar el constructor de la
siguiente forma:
public Pelicula(String titulo, Artista autor, int ao,
String productora, Artista[] interpretes) {
super(titulo, autor, ao);
this.productora = productora;
this.interpretes = interpretes;
}

Solucin al apartado 3:
Artista[] interpretes_portero = new Artista[2];
interpretes_portero[0] = carmeloGomez;
interpretes_portero[1] = maribelVerdu;
Pelicula elPortero = new Pelicula("El portero", gonzaloSuarez ,
2000, "Lola Films", interpretes_portero);

Solucin al apartado 4:
Si se han declarado los atributos private y se han definido para ellos mtodos get y set
(opcin ms correcta):
elPortero.getAutor().setAoNacimiento(1934);

En caso contrario:
elPortero.autor.aoNacimiento=1934;

Al imprimir datos del libro, la fecha de nacimiento del autor sera 1934, ya que la modificacin
hecha con la lnea anterior afecta permanentemente al objeto gonzaloSuarez.

Solucin Text Sem. 1:


1)c 2)c 3)b 4)d 5)b 6)c 7)d 8)b 9)c 10)c

UNIVERSIDAD NACIONAL DE EDUCACIN A DISTANCIA. ESCUELA DE INGENIERA TCNICA INDUSTRIAL


EXAMEN DE FUNDAMENTOS DE INFORMTICA (ESPECIALIDAD ELECTRNICA)

ENERO/FEBRERO 2005

NO EST PERMITIDO EL USO DE MATERIAL ADICIONAL

SEGUNDA SEMANA

Para la nota del examen, el Test vale el 30% y el Problema vale el 70%.
El Test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Responda el Test en una hoja de lectura ptica. El cdigo de asignatura es 621040 y el tipo A.
Resuelva el Problema en una hoja aparte (mximo 2 caras), indicando su nombre y el Centro Asociado
en el que ha realizado la prctica.

Primera Parte: Test


1. Los buses de control, qu funcin realizan?
a. Controlan qu instruccin se carga en la Unidad de Control para ser ejecutada.
b. Comunican los perifricos con el procesador (CPU).
c. Llevan los datos de la RAM al procesador.
d. Llevan los datos que han sido procesados por la CPU de la RAM al disco duro.
2. Indicar cul de las siguientes afirmaciones sobre memoria es errnea:
a. Hay tres tipos de memoria temporal: RAM, cach y virtual.
b. La memoria ROM es permanente y su contenido no se pierde al apagar el ordenador.
c. El acceso a la memoria virtual es ms rpido que el acceso a RAM.
d. Se suele llamar memoria principal a la combinacin de ROM y RAM.
3. Cul es la caracterstica fundamental que diferencia a un sistema operativo multitarea?
a. Permite que varios usuarios puedan trabajar simultneamente.
b. Permite gestionar dos o ms procesadores.
c. Permite que se ejecuten varios procesos a la vez.
d. Permite ejecutar procesos en tiempo real.
4. El administrador de memoria se encarga de:
a. Seleccionar el proceso que se va a ejecutar a continuacin
b. Dejar en memoria principal alguno de los componentes del SO.
c. Asignar memoria a los diferentes procesos.
d. Procesa los programas que se encargan de las entradas y salidas relacionadas con los
perifricos.
5. Qu diferencia fundamental existe entre vectores y arrays?
a. Los vectores no se tienen que declarar y los arrays s.
b. Los vectores pueden redimensionar su tamao mientras que los arrays no.
c. No hace falta crear instancias de vectores porque se encuentran en libreras predefinidas de
java, cosa que en los arrays s ocurre.
d. Los vectores pueden tener varias dimensiones, es decir se puede crear un vector de vectores
(por ejemplo una matriz), mientras que en arrays no.

UNIVERSIDAD NACIONAL DE EDUCACIN A DISTANCIA. ESCUELA DE INGENIERA TCNICA INDUSTRIAL


EXAMEN DE FUNDAMENTOS DE INFORMTICA (ESPECIALIDAD ELECTRNICA)

ENERO/FEBRERO 2005

NO EST PERMITIDO EL USO DE MATERIAL ADICIONAL

6. Qu ocurre cuando en un mtodo se pasa un parmetro por valor?


a. Que los cambios que se producen sobre el parmetro dentro del mtodo permanecen cuando
se termina su ejecucin.
b. Que los cambios que se producen sobre el parmetro dentro del mtodo no permanecen
cuando se termina su ejecucin.
c. Que sea cual sea el tipo del parmetro se convierte en un valor entero.
d. Que la variable de salida debe ser del mismo tipo que el parmetro.
7. Un mtodo de clase (static), se podra llamar sin instanciarse un objeto de la clase?
a. No, siempre hay que declarar el objeto y luego llamar al mtodo.
b. No, siempre hay que declarar el objeto, crearlo y a continuacin llamar al mtodo.
c. S, se podra llamar al mtodo desde la misma clase.
d. S, se podra llamar al mtodo pero slo si la clase es abstracta.
8. Cundo se utilizara la estructura de repeticin do-while?
a. Cuando se desea ejecutar el bloque de cdigo que est en esa estructura al menos una vez
aunque no se cumplan las condiciones.
b. Cuando se desea ejecutar el bloque de cdigo slo si se cumplen unas condiciones.
c. Cuando se desea ejecutar un bloque una vez al menos pero slo si las condiciones se
cumplen.
d. Ninguna de las anteriores.
9. Si tenemos el siguiente programa:
public class Arit{
public int sumar2(int sum){
return sum + 2;
}
public String sumar2(String sum){
return sum + 2;
}
public static void main (String[] args){
Arit x = new Arit();
System.out.println(x.sumar2("2"));
}
}

Qu mostrara el siguiente cdigo?


a. Un error de compilacin por sobrecarga.
b. 4
c. 22
d. Un error de ejecucin por no poder sumar un tipo string con el literal 2.
10. En relacin al enunciado de la prctica, indicar cul de las siguientes cabeceras es la correcta:
a. class Camion extends Vehiculo {
b. class Vehiculo extends Camion {
c. class Vehiculo (extends Camion) {
d. extended class Camion {

UNIVERSIDAD NACIONAL DE EDUCACIN A DISTANCIA. ESCUELA DE INGENIERA TCNICA INDUSTRIAL


EXAMEN DE FUNDAMENTOS DE INFORMTICA (ESPECIALIDAD ELECTRNICA)

ENERO/FEBRERO 2005

NO EST PERMITIDO EL USO DE MATERIAL ADICIONAL

Segunda Parte: Problema


Una empresa de telecomunicaciones nos encarga realizar la primera versin de un programa para gestionar
mensajes de texto en diferentes formatos: e-mail, SMS (mensajes cortos de telefona mvil) y chat
(mensajera instantnea). Todos los mensajes, independientemente del formato, tienen un usuario emisor, un
usuario receptor y un texto de mensaje. Adems, en particular, un e-mail tiene un Asunto (de tipo texto) y un
conjunto de usuarios a los que llegar copia del mensaje; un SMS tiene un nmero del centro servidor, y un
mensaje instantneo tiene un protocolo de mensajera. De cada usuario podemos necesitar su nombre, su
direccin de correo electrnico, su nmero de telfono mvil y su direccin IP. Los mensajes pueden
enviarse, y al hacerlo se escribe por pantalla el cuerpo del mensaje independientemente de su formato.
1. Dibujar un esquema con las clases necesarias para este programa, indicando los atributos y mtodos
que tiene cada una (slo indicarlos, sin escribir su cdigo). No es necesario incluir mtodos get y
set. El esquema debe reflejar grficamente la herencia de clases en caso de que la haya. (3 puntos)
La empresa nos explica ahora que al enviar un SMS debe haber un comportamiento especial (el resto de
formatos de mensaje mantienen su comportamiento): si el usuario receptor no tiene mvil, debe imprimirse
un mensaje de error. Adems, si el mensaje SMS ocupa ms de 145 caracteres, antes de imprimirlo debemos
irlo reduciendo hasta que no sobrepase ese tamao. La reduccin se hace con el mtodo String
reduce(String cadena), programado por otra empresa e incluido en el package smstools. Cada vez que se
ejecuta este mtodo, mediante un diccionario de abreviaturas se reduce levemente la longitud del texto.
2. Explicar, en relacin al concepto de herencia, cul sera la mejor solucin para encajar en el diseo
anterior este comportamiento particular del mtodo enviar para los SMS. Indicar una solucin
alternativa sin utilizar herencia y comentar sus ventajas o inconvenientes. (3 puntos)
3. Codificar el constructor de la clase correspondiente a los SMS. La presencia o ausencia de
constructor en una clase padre, afecta de alguna manera a la clase que hereda? (2 puntos)
4. Codificar el mtodo que permite enviar mensajes SMS. (2 puntos)

PROBLEMA DE LA SEGUNDA SEMANA


Solucin al Apartado 1:
Usuario
private String nombre;
private String email;
private String movil;
private String ip;
Usuario(String, String,
movil, ip)

Email

Mensaje
private Usuario emisor;
private Usuario receptor;
private String texto;
void enviar()

Sms

Chat

private String asunto;


private Usuario[] receptores;

private int servidor;

private String cliente;

Email(Usuario, Usuario,
String, boolean, int)

Sms(Usuario, Usuario,
String, int)

Chat(Usuario, Usuario,
String, String)

Solucin al Apartado 2:
Habra que reescribir el mtodo enviar en la clase Sms, de forma que el mtodo enviar
original permaneciera en la clase Mensaje. As, cuando se imprima un email o un mensaje
instantneo, se recurrir al mtodo heredado de la clase padre, pero cuando se imprima un SMS se
ejecutar el mtodo redefinido.
La alternativa sin herencia sera eliminar el mtodo enviar de la clase padre y escribirlo
individualmente para cada formato de mensaje. Sin embargo, esta solucin es peor, porque implica
duplicar informacin al escribir un mismo cdigo varias veces (en este caso dos, pero podran ser
ms), con la consiguiente dificultad para mantener la coherencia en caso de un cambio en el cdigo.
Solucin al Apartado 3:
Al crear un objeto de la clase que hereda, lo primero que se hace es llamar implcitamente al
constructor por defecto de la clase padre, por lo que no es necesario escribir cdigo adicional:
public Sms(Usuario emisor, Usuario receptor, String texto,
boolean multimedia, int servidor) {
this.setEmisor(emisor);
this.setReceptor(receptor);
this.setTexto(texto);
this.servidor = servidor;
}

Sin embargo, si hemos definido un constructor con argumentos para la clase padre, el constructor
por defecto deja de estar accesible y por tanto es necesario llamar explcitamente al constructor de
la clase padre que hemos creado:
public Sms(Usuario emisor, Usuario receptor, String texto,
boolean multimedia, int servidor) {
super(emisor,receptor,texto);
this.servidor = servidor;
}

Solucin al Apartado 4:
public void enviar() {
if (this.getReceptor().getMovil()== null) {
System.out.println("ERROR: El receptor carece de mvil.");
}
else {
while(this.getTexto().length()>145) {
this.setTexto(Smstools.reduce(this.getTexto()));
}
System.out.println(this.getTexto());
}
}

Solucin Text Sem. 2:


1)b 2)c 3)c 4)c 5)b 6)b 7)c 8)a 9)c 10)a

UNIVERSIDAD NACIONAL DE EDUCACIN A DISTANCIA. ESCUELA DE INGENIERA TCNICA INDUSTRIAL


EXAMEN DE FUNDAMENTOS DE INFORMTICA (ESPECIALIDAD ELECTRNICA)

SEPTIEMBRE 2005

NO EST PERMITIDO EL USO DE MATERIAL ADICIONAL

ORIGINAL

Para la nota del examen, el Test vale el 30% y el Problema vale el 70%.
El Test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Responda el Test en una hoja de lectura ptica. El cdigo de carrera es 62, el de la asignatura 104 y
examen es de tipo A.
Resuelva el Problema en una hoja aparte (mximo 2 caras), indicando su nombre y el Centro Asociado
en el que ha realizado la prctica.

Primera Parte: Test


1. La placa madre
a. es siempre compatible con cualquier nuevo componente.
b. es independiente de la CPU.
c. est compuesta por las unidades de almacenamiento y los buses.
d. integra todos los componentes que colectivamente proporcionan la funcionalidad del equipo.
2. Qu se imprime al ejecutarse el siguiente cdigo?
int resultado = 0;
int suma = 1;
while (suma < 5)
resultado+= suma;
System.out.print (resultado);

a.
b.
c.
d.

0
5
1234
No imprimira nada

3. Qu es la tecnologa plug-and-play?
a. Un sistema que permite la instalacin de nuevos dispositivos con facilidad. Para que
funcione slo sera necesario enchufar el dispositivo e instalar los drivers adecuados que
vienen con dicho dispositivo. La asignacin del nmero de interrupcin asociada al
dispositivo se hace de forma automtica.
b. Un sistema que permite la instalacin de nuevos dispositivos con facilidad. Para que
funcione slo sera necesario enchufar el dispositivo ya que los drivers los detecta de forma
automtica. La asignacin del nmero de interrupcin asociada al dispositivo se hace de
forma manual.
c. Un sistema que permite la instalacin de nuevos dispositivos con facilidad. Para que
funcione slo sera necesario enchufar el dispositivo ya que los drivers los detecta de forma
automtica. La asignacin del nmero de interrupcin asociada al dispositivo se hace de
forma automtica.
d. Un sistema que permite la instalacin de nuevos dispositivos. Para que funcione se tendra
que enchufar el dispositivo adems de instalar un conversor para que pueda trabajar de
analgico a digital.

UNIVERSIDAD NACIONAL DE EDUCACIN A DISTANCIA. ESCUELA DE INGENIERA TCNICA INDUSTRIAL


EXAMEN DE FUNDAMENTOS DE INFORMTICA (ESPECIALIDAD ELECTRNICA)

SEPTIEMBRE 2005

NO EST PERMITIDO EL USO DE MATERIAL ADICIONAL

4. Cual de estas afirmaciones es falsa:


a. Un array puede estar constituido por objetos de cualquier clase.
b. El valor inicial por defecto de un array es null.
c. Es posible redimensionar el tamao de un array una vez instanciado.
d. Un array puede ser creado en la misma lnea en la que se declara.
5. Una mquina virtual
a. hace que un computador se comporte como si fuera otro distinto.
b. es un computador en la red.
c. es un compilador de alto nivel.
d. es un compilador de bajo nivel.
6. Sean Mamfero y Gato dos clases que mantienen una relacin de herencia padre-hijo. Qu
habra que modificar para que el siguiente cdigo sea correcto y por qu?
Animal a; /*Lnea 1*/
Gato b; /*Lnea 2*/
a= new Animal();
/*Lnea 3*/
b=a;
/*Lnea 4*/

a. Nada. Es correcto.
No se puede asignar un objeto a otro de otra clase, luego cambiamos la lnea 2:
Animal b;
c. Es necesario explicitar el tipo cuando asignamos un objeto a otro objeto perteneciente a una
clase hija, luego cambiamos la lnea 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 lnea 4:
b = new (Gato) a;
b.

7. Un sistema operativo...
a. gestiona los recursos del sistema de forma eficiente.
b. es bsicamente un compilador.
c. es un componente hardware.
d. convierte el procesador en multi-procesador.
8.

Dada una clase alumno:


public class Alumno{
private int edad;
public int darEdad(){
return this.edad;
}
public Alumno(int edad){
this.edad=edad;
}
}

Cul sera la forma correcta de acceder a la edad de un objeto a de tipo Alumno desde otra
clase?
a. int x=Alumno.edad;
b. int x= a.edad;
c. int x=Alumno.darEdad(a);
d. int x=a.darEdad();
9. En la prctica del Rent a Car, qu opcin sera mejor para representar un contrato?

UNIVERSIDAD NACIONAL DE EDUCACIN A DISTANCIA. ESCUELA DE INGENIERA TCNICA INDUSTRIAL


EXAMEN DE FUNDAMENTOS DE INFORMTICA (ESPECIALIDAD ELECTRNICA)

SEPTIEMBRE 2005

NO EST PERMITIDO EL USO DE MATERIAL ADICIONAL

a. Se creara la clase contrato definiendo como atributos los datos de ste y la composicin de
las clases vehculo y cliente.
b. Se creara la clase contrato definiendo como atributos los datos de ste y los atributos que se
necesiten del vehculo y el cliente.
c. Se creara la clase contrato definiendo como atributos los datos de ste. En el programa main
se definiran las relaciones necesarias entre el objeto contrato y los objetos vehculo y
cliente.
d. No hara falta la clase contrato, dentro del programa principal se pueden crear variables que
almacenan las fechas del contrato y se relacionen con la creacin de un objeto cliente y un
objeto coche por ejemplo.
10. Sea la clase A

class A {
void imprimir () {System.out.print(3);}
}
y la clase B que hereda de A.

class B extends A {
void imprimir () {super.imprimir();System.out.print(5);}
public static void main (String [] args) {
B varB = new B();
A varA = varB;
varA.imprimir();
}
}
Qu se imprimira en pantalla?
a. 3
b. 5
c. 35
d. Hay un error de compilacin ya que no se puede asignar un objeto de la clase hija a otro
objeto de la clase padre.

UNIVERSIDAD NACIONAL DE EDUCACIN A DISTANCIA. ESCUELA DE INGENIERA TCNICA INDUSTRIAL


EXAMEN DE FUNDAMENTOS DE INFORMTICA (ESPECIALIDAD ELECTRNICA)

SEPTIEMBRE 2005

NO EST PERMITIDO EL USO DE MATERIAL ADICIONAL

Segunda Parte: Problema


Un controlador que regula la automatizacin de una lavadora cuenta con una serie de componentes que son:
una vlvula, un tambor, un motor y una bomba. El motor se caracteriza por el tiempo de duracin del ciclo,
que se expresa en segundos (por defecto es de 30), por el estado del motor: encendido o apagado, y por el
sentido del giro, que puede ser: a izquierdas o a derechas. La variable de sentido de giro determina el
movimiento del motor de la lavadora. El motor funciona mediante ciclos de lavado. Durante la primera mitad
del ciclo el motor se encuentra en sentido a izquierdas, y durante la segunda mitad del ciclo el motor se
encuentra en sentido a derechas. Al final del ciclo, el motor queda en reposo. Adems, el tambor tiene un
estado que puede ser lleno o vaco. La vlvula realiza la accin de dar agua al tambor y la bomba realizar la
funcin de sacar agua del tambor. El controlador tambin se caracteriza por tener un detector de nivel que
indica si el tambor est lleno o no.
Se pide:
1. Dibujar un esquema con las clases necesarias para describir el controlador, indicando los atributos y
mtodos que tiene cada una (slo indicarlos, sin escribir su cdigo). (4 puntos)
2. Supongamos ahora que se quiere introducir en el controlador la funcionalidad programa de Lavado
en Fro. Este programa debera ejecutar los siguientes pasos:
a. La vlvula permite el paso del agua al tambor.
b. Se comprueba que el tambor est lleno y se indica en el detector de nivel (mientras el tambor
permanece vaco no se indica en el detector de nivel)
c. El motor realiza 50 ciclos de lavado, asignando al motor 40 segundos de duracin de ciclo.
d. La bomba vaca al tambor de agua.
e. Se comprueba que el tambor est vaco y se indica en el detector de nivel (mientras el
tambor permanece lleno no se indica en el detector de nivel)
Escribir el cdigo de dicho mtodo. (6 puntos)

Solucin Text:
1)d 2)d 3)c 4)c 5)a 6)c 7)a 8)d 9)a 10)c

Solucin al apartado 1:
Controlador
private boolean detectorNivel
private Motor motor;
private Tambor tambor;

Tambor
private String estado;
String getEstado()
void setEstado(String)

private Bomba bomba;


private Valvula valvula;
boolean getDetectorNivel()
void setDetectorNivel(boolean)
Motor getMotor()
void setMotor(Motor)
Tambor getTambor()
void setTambor(Tambor)
Bomba getBomba()
void setBomba(Bomba)
Valvula getValvula()
void setValvula(Valvula)

Valvula
void llenarTambor(Tambor)

Motor
private String sentGiro;
private Boolean estado;
private int segundos;

Bomba
void vaciarTambor(Tambor)

String getSentGiro()
void setSentGiro(String)
Boolean getEstado()
void setEstado(Boolean)
int getSegundos()
void setSegundos(int)
void setGiro(String)
void realizarCiclo()

Nota: En esta solucin hemos dejado el constructor por defecto por lo que no aparece en el
diseo anterior.

Solucin al apartado 2:
public void lavado_en_frio (){
// 1. Llenar el tambor de agua mediante la vlvula
valvula.llenarTambor(tambor);
// 2. Detectar que el tambor est lleno indicndolo en el detector de nivel.
while (tambor.getEstado().equals("vacio"))
System.out.println("Todava no se ha llenado el tambor");
detectorNivel = true;
// 3. Hacer que el motor realice 50 ciclos asignando al motor 40 seg. por cada sentido del giro.
motor.setSegundos(40);
for (int nCiclos = 0; nCiclos < 50; nCiclos++)
motor.realizarCiclo();
// 4. Vaciar el tambor de agua mediante la bomba.
bomba.vaciarTambor(tambor);
// 5. Detectar que el tambor est vaco indicndoselo en el detector de nivel.
while (tambor.getEstado().equals("lleno"))
System.out.println("Todava no se ha vaciado el tambor");
detectorNivel = false;
}

Solucin Primera Semana Feb 2006


Solucin apartado 1
Obra (Abstract)

Venta
private Vector obras_vendidas = new Vector();
public Venta ()
public Venta (Vector obras_vendidas)
public void addObra(Obra obra)
public double importeVenta()

private int id;


private String nombre;
private String autor;
private String editorial;
private int aoEdiccion;
private double precio;
public Obra(int id, String nombre,
String autor, String editorial, int
aoEdiccion, double precio)
public abstract double
calcularImporte()

Comic

Revista

private String nDibujante;


private static final double iva = 10;

private int numSerie;


private static final double iva = 7;

public Obra(int id, String nombre,


String autor, String editorial, int
aoEdiccion, double precio,
String nDibujante)
public double calcularImporte()

public Revista(int id, String


nombre, String autor, String
editorial, int aoEdiccion, double
precio, int numSerie)
public double calcularImporte()

Libro
private static final double iva = 3;
public Libro(int id, String nombre,
String autor, String editorial, int
aoEdiccion, double precio)
public double calcularImporte()

No se han puesto en el esquema pero tambin seran necesarios los mtodos get y set de cada atributo en cada clase.

Solucin apartados 2 y 3.
import java.util.Vector;
public class Venta
{
private Vector obras_vendidas = new Vector();
public Venta (){}
public Venta (Vector obras_vendidas)
{this.obras_vendidas = obras_vendidas;}
public void addObra(Obra obra)
{obras_vendidas.addElement(obra);}
public Vector getObras_vendidas()
{return obras_vendidas;}
public void setObras_vendidas(Vector obras_vendidas)
{this.obras_vendidas = obras_vendidas;}
public double importeVenta()
{
double costeTotal = 0;
Obra ob;
for(int i=0; i < obras_vendidas.size();i++)
{
ob = (Obra)obras_vendidas.elementAt(i);
costeTotal += ob.calcularImporte();
}
return costeTotal;
}
}

La estructura ms adecuada sera la del Vector ya que no se sabe a priori las ventas que
se van a realizar.

Solucin Text Sem. 1:


1)c 2)b 3)a 4)a 5)b 6)a 7)d 8)c 9)d 10)d

PROBLEMA
Una planta de tratamiento de piedras dispone de un conjunto de mquinas, siendo
stas de dos tipos: cortadoras y pulidoras. Un tipo de piedra se caracteriza por su
nombre y su resistencia. Cada maquina se caracteriza por su identificador. Por otro
lado, todas las mquinas se caracterizan por un lmite mximo de resistencia de la
piedra que aceptan. Las cortadoras en particular requieren adems un mnimo de
resistencia de la piedra para que esta no se deshaga.
Con el objetivo de controlar la usabilidad de las mquinas de la planta, se desea
disponer de un sistema que, ante un tipo de piedra, pueda mostrar la lista de
identificadores de mquinas de la planta, y para cada identificador, si acepta o no
dicho tipo de piedra.
Se pide
1. Realizar un esquema indicando las clases y relaciones necesarias para la
implementacin del sistema. Indicar tambin los atributos y mtodos
necesarios y sus tipos. (4 puntos)
2. Implementar la clase que gestione la lista de mquinas (planta) y el
mtodo que muestra la lista. (3 puntos)
3. Sobre el sistema diseado, generar el cdigo que permita:
i. Crear un nuevo tipo de piedra de resistencia 5 y una nueva
mquina pulidora con resistencia mxima de piedra 4. (1 punto)
ii. Crear Crear un objeto tipo Planta y aadirle dicha mquina.
(1 punto)
iii. Comprobar si la mquina acepta la piedra. (1 punto)
Requisitos de diseo del ejercicio
1. El diseo de las clases es independiente de criterios de eficiencia.
2. El objetivo del sistema es concreto: controlar la usabilidad de las mquinas.
3. No hay ambigedad en cuanto a modelos posibles.
Objetivos del ejercicio:
1.

2.

3.

4.

El alumno debe identificar la jerarqua de herencia dada por los tipos de mquina, con
peso_mximo y resistencia_mxima como atributos comunes, y resistencia_mnima como
atributo particular de las pulidoras.
El alumno debe definir una clase planta con un vector de mquinas, no de pulidoras ni
cortadoras, dado que para el control de la usabilidad slo interesan los identificadores de
mquinas.
El alumno debe introducir un mtodo admitePiedra en la superclase mquina y en la
subclase pulidora. Este mtodo no puede estar en la clase planta porque la relacin de
herencia no le da acceso al atributo resistencia mnima de la subclase pulidora. En la
superclase mquina si es necesario dado que a este mtodo se accede desde la clase
planta. En la subclase pulidora es tambien necesario dado que el mtodo ha de
considerar un atributo propio de la subclase.
(Una opcin alternativa es definir un mtodo admitePeso solo en la superclase, y un mtodo
admiteResistencia en ambas clases).
El alumno debe saber implementar un recorrido simple sobre los elementos de un vector.

Piedra
private String nombre;
private int resistencia;

Planta
private Vector maquinas;

public void Piedra(String, int)


public void setResistencia(int)
public int getResistencia()
public void setNombre(String)
public String getNombre()

public void mostrarLista()


public void aadirMaquina(maquina)

Maquina
private String id;
private int resistenciaMax;
public void maquina(id,int)
public String getId()
public void setId(String)
public int getResistenciaMax()
public void setResistenciaMax(int)
public boolean aceptaPiedra(Piedra)

Cortadora
private int resistenciaMin;
public void Cortadora(id,int,int)
public int getResistenciaMin()
public void setResistenciaMin(int)
public boolean aceptaPiedra(Piedra)

Nota: La clase Maquina y Pulidora tendran los mismos atributos y mtodos. Al no


diferenciarse se podra decir que una pulidora es una mquina, no siendo necesario crear
una clase Pulidora.

IMPLEMENTACIN DE LA CLASE PLANTA


Import java.util.Vector;
public class Planta{
private Vector maquinas;
public void aadirMaquina(Maquina maquina){
this.maquinas.add(maquina);
}
public void mostarLista(Piedra p){
Maquina maquina;
for (int i=0;i < maquinas.length();i++)
{
maquina = (Maquina) maquinas.elementAt(i);
if (maquina.aceptaPiedra(p))
{
System.out.println MAQUINA+ maquina.getId()+ SI;
}
else
{
System.out.println MAQUINA+maquina.getId()+ NO;
}
}
}

LLAMADAS A MTODOS
/* DEFINICIN DE VARIABLES*/
Piedra piedra;
Maquina pulidora;
Planta planta;
boolean acepta;
/*INSTANCIACION DE VARIABLES*/
piedra=new Piedra(marmol,5);
pulidora=new Maquina(m1,4);
planta=new Planta();
planta.aadirMaquina(pulidora);
if (pulidora.aceptaPiedra(piedra))
System.out.prinln(La piedra es aceptada);
else
System.out.prinln(La piedra no es aceptada);

Solucin Text Sem. 2:


1)b 2)c 3)b 4)c 5)d 6)a 7)b 8)b 9)a 10)b

ORIGINAL

Solucin tipo A:
1)C 2)A 3)C 4)D 5)B 6)C 7)C 8)C 9)C 10)C

FUNDAMENTOS DE LA INFORMTICA
SOLUCIN AL EJERCICIO DE EXAMEN DE SEPTIEMBRE 2006

Se necesita una aplicacin informtica para la venta de entradas en un multi-cine.


Cada sesin se caracteriza por la pelcula proyectada, la sala en la que se proyecta,
el da y la hora de comienzo de la pelcula, y el nmero de entradas vendidas.
Todas las salas tienen el mismo nmero de asientos numerados del uno al cien.
Una sesin puede ser numerada o no. Si la sesin es numerada es necesario
recordar qu asientos han sido vendidos. Si es no numerada basta con llevar el
recuento de entradas vendidas.
La funcionalidad del sistema debe incluir:
1. Un mtodo sugerir_asiento para sesiones numeradas que proponga
el primer asiento no vendido (segn su numeracin). Si la sala est
completa el mtodo debe imprimir sala completa.
2. Un mtodo comprar_entrada que, para sesiones no numeradas
incremente el nmero de asientos vendidos. Si no quedan asientos
libres el mtodo debe imprimir sala completa. Para sesiones
numeradas el mtodo recibe como entrada un nmero de asiento. Si el
asiento est libre lo vende. Si est vendido imprime asiento vendido.
Se pide:
1. Dibujar un esquema con las clases necesarias para este programa,
indicando y comentando brevemente los atributos, mtodos y relaciones
entre clases (slo indicarlos, sin escribir cdigo) (3 puntos)

Comentarios al esquema:
-

Las sesiones numeradas y no numeradas se comportan de manera distinta


(distintos mtodos y atributos), luego deberan ser dos clases distintas.
Ambas clases comparten algunos atributos, luego definimos una clase padre
sesin.
Solo existen sesiones numeradas o no numeradas, por lo que la clase padre
sesin es abstracta. Adems, esta clase padre no tiene constructor.
Las sesiones numeradas necesitan una estructura de almacenamiento, mientras
que en las sesiones no numeradas basta con un contador de entradas vendidas,
por lo que el recuento de asientos no en un atributo comn en ambas clases.
El mtodo comprar entrada posee argumentos de entrada distintos en cada
subclase, por lo que se trata en realidad de mtodos distintos aunque se llamen
de la misma forma y no pueden definirse en la clase padre.

public abstract class Sesin


private String pelcula;
private int sala;
private int dia;
private int hora
public SesionNumerada(String pelcula,
int sala, int dia, int hora)

public class SesinNumerada

public class SesinNoNumerada

private boolean[] asientosVendidos

private int numEntradasVendidas;

public SesionNumerada(String pelcula,


int sala, int dia,
int hora)
public int sugerirAsiento();
public void comprarEntrada(int);

public SesionNoNumerada(String
pelcula, int sala, int dia, int hora)
public void comprarEntrada();

2. Qu estructura sera la ms adecuada para poder almacenar qu asientos


han sido reservados? Por qu? (1 punto)

La estructura de datos ms adecuada sera un ARRAY, dado que el nmero de asientos


mximo es conocido y no mucho mayor que el nmero de asientos que se ocuparn.

2. Implementar el/los mtodos comprar entrada e indicar su localizacin en


las clases. (3 puntos)
En la clase SesinNoNumerada tendramos
public void comprarEntrada(){
if (this.NumEntradasVendidas>=100){
System.out.println(Sala Completa);
}else{
this.NumEntradasVendidas+=1;
}
}

En la clase SesinNumerada:
public void comprarEntrada(int numAsiento){
if (numAsiento>100){
System.out.println(Solo se dispone de 100 asientos);
}else{
if (this.asientosVendidos[numAsiento]){
System.out.println(Asiento Ocupado);
}else{
this.asientosVendidos[numAsiento]=true;
}
}
}

3. Escribir el cdigo necesario para:


a. Crear una sesin numerada de la pelcula ET el da 5 a las 18
horas.
SesionNumerada sesion1=new SesionNumerada( ET,1,5,18)

b. Crear una sesin no numerada de la pelcula COMANDO el da 5


a las 20 horas.
SesionNumerada sesion2=
new SesionNoNumerada( COMANDO,1,5,20)

c. Comprar 2 entradas con asientos 1 y 5 en la sesin numerada.


sesion1.comprarEntrada(1);
sesion1.comprarEntrada(2);

d. Pedir al sistema que sugiera un asiento para la sesin numerada.


Cul sera la respuesta del sistema?
sesion1.sugerirAsiento();
Devolvera el asiento 2.

Reserva

Reserva

Solucin tipo A Reserva:


1)A 2)B 3)C 4)B 5)C 6)B 7)B 8)D 9)B 10)C

SOLUCIN EXAMEN RESERVA 2006

1. Diseo de clase
CARTERA

DEUDA (Abstract)

static private int identificador = 0;


private Vector deudas;
public Cartera ()
public int getIdentificador ()
public void addDeuda(Deuda deuda)
public double calcularTotalIntereses
(GregorianCalendar fecha)

protected GregorianCalendar gcFechaSuscripcion;


protected int iTipoInteres;
protected int iValor;
public GregorianCalendar getGcFechaSuscripcion()
public double getDTipoInteres()
public int getIValor()
public setGcFechaSuscripcion(GregorianCalendar gcFechaSuscripcion)
public void setDTipoInteres(double dTipoInteres)
public void setIValor(int iValor)
abstract public double calcularInteres (GregorianCalendar fecha)

LETRA

BONO

final private int iaosPlazo = 2;

final private int iaosPlazo = 5;

public Letra (GregorianCalendar gcFechaSuscripcion,


int dTipoInteres,int iValor)
public double calcularInteres (GregorianCalendar fecha)

public Bono (GregorianCalendar gcFechaSuscripcion,


int dTipoInteres,int iValor)
public double calcularInteres (GregorianCalendar fecha)

2. Implementar la clase Letra del tesoro.


import java.util.GregorianCalendar;
import java.util.Calendar;

public class Letra extends Deuda {


final private int iaosPlazo = 2;

public Letra (GregorianCalendar gcFechaSuscripcion,int


dTipoInteres,int iValor)
{
this.gcFechaSuscripcion = gcFechaSuscripcion;
if ((dTipoInteres > 0) &&(dTipoInteres <= 100))
this.dTipoInteres = dTipoInteres;
else
System.out.println("El inters debe estar entre 0 y 100.");
this.iValor = iValor;
}
public double calcularInteres (GregorianCalendar fecha)
{
Calendar gcFechaFinPlazo = gcFechaSuscripcion;
// Suma dos aos a la fecha de suscripcin
gcFechaFinPlazo.add(Calendar.DATE,2);
if (gcFechaFinPlazo.getTimeInMillis()<= fecha.getTimeInMillis())
return (iValor*(dTipoInteres/100));
else
return 0;
}

3. Resolviendo el ejemplo de Manuel


a. Ejemplo:
GregorianCalendar fecha1 = new GregorianCalendar(2005,10,1);
GregorianCalendar fecha2 = new GregorianCalendar(2004,6,1);
Letra letra1 = new Letra(fecha1,4,500);
Letra letra2 = new Letra(fecha2,5,900);
GregorianCalendar fecha3 = new GregorianCalendar(2003,6,10);
Bono bono1 = new Bono(fecha3,7,3000);
Bono bono2 = new Bono(fecha3,7,3000);
Cartera cartera1 = new Cartera();
cartera1.addDeuda(letra1);
cartera1.addDeuda(letra2);
cartera1.addDeuda(bono1);
cartera1.addDeuda(bono2);

b. Implementar el mtodo calcularTotalIntereses, mtodo de la clase


Cartera.
public double calcularTotalIntereses (GregorianCalendar fecha)
{
double totalDeudas = 0;
Deuda auxDeuda;
for (int i=0;i<deudas.size();i++)
{
auxDeuda = (Deuda) deudas.elementAt(i);
totalDeudas += auxDeuda.calcularInteres(fecha);
}
return totalDeudas;
}
// por defecto al crear un objeto del tipo gregorian calendar se
// crea con la fecha actual
GregorianCalendar fecha4 = new GregorianCalendar();
long interesTotales = cartera1.calcularTotalIntereses(fecha4);
System.out.println(interesTotales);

TIPO A

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Responda el test en una hoja de lectura ptica. No olvide rellenar en dicha hoja el cdigo de carrera, el
de la asignatura y el tipo de examen.
Resuelva el Problema en una hoja aparte (mximo 2 caras), indicando su nombre y el Centro Asociado en
el que ha realizado la prctica.
FEBRERO 2007 Primera semana

Apellidos..Nombre..DNI

Primera Parte: Test


1. Cul de las siguientes memorias no es voltil?
a. Memoria cach.
b. Memoria RAM.
c. Memoria virtual.
d. Memoria ROM.
2. Qu es un hub?
a. Es un dispositivo de distribucin de comunicaciones que permite la conexin de ms
perifricos.
b. Es un bus como PCI.
c. Es un protocolo de comunicacin como los puertos serie y paralelo.
d. Es un comunicador unidireccional entre el computador y los perifricos.
3. Entre las funciones fundamentales del sistema operativo no est:
a. El control de los procesos de entrada/salida.
b. La asignacin de recursos a los procesos.
c. La gestin de ficheros.
d. Traducir cdigo fuente a cdigo objeto.
4. De las siguientes sentencias, cul es la que mejor describe la funcionalidad del programa controlador
de trabajo?
a. Carga el monitor en memoria al iniciarse el trabajo del sistema.
b. Carga en memoria los mdulos de programa que necesite el proceso de ejecucin.
c. Se encarga de planificar la secuencia de los diferentes trabajos, repartir la memoria y controlar
la cola de tareas y las interrupciones.
d. Se encarga de optimizar el uso de la memoria al asignar la misma a los diferentes programas.
5. Qu estructura se utilizara mejor en la prctica a la hora de almacenar los modelos dentro de la clase
GestinMaquinaria?
a. Un array de tamao N.
b. Una array de tamao ilimitado.
c. Un ArrayList.
d. Una matriz de N x N.
6. Cul de los siguientes tipos no es primitivo?
a. 1.32
b. false
c. b
d. mundo

7.

Es correcta la siguiente sentencia?


System.out.println(Math.sqrt(25));
a. No es correcta ya que no se puede llamar a un mtodo de una clase sin crearse previamente un
objeto.
b. No es correcta ya que la clase Math se tiene que importar previamente.
c. Es correcta porque la clase Math es una clase predefinida.
d. No es correcta ya que la clase Math carece del mtodo sqrt(int).

8. Es correcta la implementacin de la siguiente clase?


public class A
{
private int x;
private int y;
public A(int x){this.x=x;}
public A(int x, int y){this.x=x;this.y=y;}
}
a. No, ya que dentro de una clase slo se puede implementar un constructor.
b. No, ya que no se ha implementado el constructor por defecto.
c. Si, es correcta.
d. No, porque los parmetros d entrada a los constructores no se pueden llamar de la misma forma
que los atributos de la clase.
9. Es correcto el siguiente cdigo?
public class B{private int b;}
public class C extends B {private int c;}
public class D extends B {private int d;}
Dentro del mtodo main se realizan las siguientes
sentencias:
D oD = new D();
C oC = (C) oD;
a. Si, ya que al ser C y D clases hijas de la clase padre B por polimorfismo se puede reconvertir
un objeto de la clase D en otro de la clase C.
b. No, porque no se pueden crear dos clases hijas de una misma clase padre.
c. No, porque una clase hija no se puede reconvertir a otra clase hija por tanto hay
incompatibilidad de tipos.
d. No, porque no se ha creado previamente el objeto oC con la sentencia C oC = new C();.
Sin esta sentencia previa no se puede asignar otros objetos al objeto oC.

10. Qu resultado da la siguiente estructura de control? El operador % es el operador resto.


int x = 2;
do
{
try
{
if (x%2 == 0)
throw new Exception();
x++;
}
catch(Exception e){x--;}
finally
{
x=x+2;
System.out.print(x + " ");
}
}
while (x < 10);
a.
b.
c.
d.

3
4
3
3

6
6
5
6

7
8
7
8

10
10
9
10

Segunda Parte: Problema


Un circuito elctrico puede estar formado, al menos, por una serie de resistencias elctricas (R) medidas en
ohmios y una fuente elctrica que es capaz de generar una diferencia de potencial V (que es la que se
almacena en el circuito). Dentro de los circuitos podemos ver que hay dos tipos, los circuitos en serie y los
circuitos en paralelo. Los circuitos en serie calculan la intensidad con la siguiente frmula de la ley de Ohm
V= I(R1 + ... + Rn) mientras que los circuitos en paralelo calculan la intensidad con la siguiente formula I= V
(1/R1 + + 1/Rn).
1. Dibujar un diagrama de clases con los atributos y mtodos necesarios, incluidos los mtodos constructores.
(2 puntos)
2. Implementar la clase circuito serie. (2 puntos)
3. Implementar la creacin del siguiente objeto de un circuito en serie:
a. Circuito con 3 resistencias de 3, 5 y 6 ohmios y una fuente de alimentacin cuyo potencial es
medido a 4 voltios. (1 punto)
b. Hacer la llamada al mtodo correspondiente. Qu resultado dara por pantalla? (1 punto)
4. Definimos un circuito mixto como una composicin donde puede haber circuitos en serie y/o circuitos en
paralelo. Implementar un mtodo de la clase circuito mixto que calcule la suma de las intensidades de
todos los circuitos que componen el circuito mixto. Pista: Para este apartado se ha de tener en cuenta el
polimorfismo. (4 puntos)

Solucin test febrero 2007 primera semana tipo A:


1D, 2A, 3D, 4C, 5C, 6D, 7C, 8C, 9C, 10A

Problema 1 semana Febrero 2007 Electrnica-Electricidad


Apartado 1
CircuitoMixto
private ArrayList <Circuito> circuitos = new ArrayList <Circuito> ();
public void addResistencia(double r)
public void removeCircuito(Circuito c)
public double calcularIntensidadTotal()

Circuito (Abstract)
protected ArrayList <Double> resistencias = new ArrayList <Double> ();
protected double v;
public Circuito ()
public Circuito (double v)
public double getV()
public void setV(double v)
public void addResistencia(double r)
public void removeResistencia(double r)
public abstract double calcularIntensidadCircuito();

CircuitoSerie

Apartado 2

CircuitoParalelo

public CircuitoSerie ()

public CircuitoParalelo ()

public CircuitoSerie (double v)

public CircuitoParalelo (double v)

public double calcularIntensidadCircuito()

public double calcularIntensidadCircuito()

import java.util.ArrayList;
public class CircuitoSerie extends Circuito
{
public CircuitoSerie (){super();}
public CircuitoSerie (double v)
{
super(v);
}
public double calcularIntensidadCircuito()
{
double totalResistencias = 0;
double intensidad;
for (double r: resistencias)
totalResistencias += r;
intensidad = v / totalResistencias;
return intensidad;
}
}

Apartado 3
public static void main (String[] args)
{
// 3. a. Se crea un circuito en serie
CircuitoSerie cs = new CircuitoSerie();
// Se aaden las resistencias una a una
cs. addResistencia(3);
cs. addResistencia(5);
cs. addResistencia(6);
// Se aade el V
cs.setV(4);
// 3.b. Llamada a calcularIntensdidad y se imprime por pantalla
System.out.println(cs.calcularIntensidadCircuito());
}

Apartado 4
public double calcularIntensidadTotal()
{
double intensidadTotal= 0;
for (Circuito c: circuitos)
intensidadTotal += c.calcularIntensidadCircuito();
return intensidadTotal;
}

TIPO A

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Responda el test en una hoja de lectura ptica. No olvide rellenar en dicha hoja el cdigo de carrera, el
de la asignatura y el tipo de examen.
Resuelva el Problema en una hoja aparte (mximo 2 caras), indicando su nombre y el Centro Asociado en
el que ha realizado la prctica.
FEBRERO 2007 Segunda Semana

Apellidos..Nombre..DNI

Primera Parte: Test


1. Cul de las siguientes memorias no es voltil?
a. Memoria cach.
b. Memoria RAM.
c. Memoria virtual.
d. Memoria ROM.
2. Qu es un hub?
a. Es un dispositivo de distribucin de comunicaciones que permite la conexin de ms
perifricos.
b. Es un bus como PCI.
c. Es un protocolo de comunicacin como los puertos serie y paralelo.
d. Es un comunicador unidireccional entre el computador y los perifricos.
3. Entre las funciones fundamentales del sistema operativo no est:
a. El control de los procesos de entrada/salida.
b. La asignacin de recursos a los procesos.
c. La gestin de ficheros.
d. Traducir cdigo fuente a cdigo objeto.
4. De las siguientes sentencias, cul es la que mejor describe la funcionalidad del programa controlador
de trabajo?
a. Carga el monitor en memoria al iniciarse el trabajo del sistema.
b. Carga en memoria los mdulos de programa que necesite el proceso de ejecucin.
c. Se encarga de planificar la secuencia de los diferentes trabajos, repartir la memoria y controlar
la cola de tareas y las interrupciones.
d. Se encarga de optimizar el uso de la memoria al asignar la misma a los diferentes programas.
5. Qu estructura se utilizara mejor en la prctica a la hora de almacenar los modelos dentro de la clase
GestinMaquinaria?
a. Un array de tamao N.
b. Una array de tamao ilimitado.
c. Un ArrayList.
d. Una matriz de N x N.
6. Cul de los siguientes tipos no es primitivo?
a. 1.32
b. false
c. b
d. mundo

7.

Es correcta la siguiente sentencia?


System.out.println(Math.sqrt(25));
a. No es correcta ya que no se puede llamar a un mtodo de una clase sin crearse previamente un
objeto.
b. No es correcta ya que la clase Math se tiene que importar previamente.
c. Es correcta porque la clase Math es una clase predefinida.
d. No es correcta ya que la clase Math carece del mtodo sqrt(int).

8. Es correcta la implementacin de la siguiente clase?


public class A
{
private int x;
private int y;
public A(int x){this.x=x;}
public A(int x, int y){this.x=x;this.y=y;}
}
a. No, ya que dentro de una clase slo se puede implementar un constructor.
b. No, ya que no se ha implementado el constructor por defecto.
c. Si, es correcta.
d. No, porque los parmetros d entrada a los constructores no se pueden llamar de la misma forma
que los atributos de la clase.
9. Es correcto el siguiente cdigo?
public class B{private int b;}
public class C extends B {private int c;}
public class D extends B {private int d;}
Dentro del mtodo main se realizan las siguientes
sentencias:
D oD = new D();
C oC = (C) oD;
a. Si, ya que al ser C y D clases hijas de la clase padre B por polimorfismo se puede reconvertir
un objeto de la clase D en otro de la clase C.
b. No, porque no se pueden crear dos clases hijas de una misma clase padre.
c. No, porque una clase hija no se puede reconvertir a otra clase hija por tanto hay
incompatibilidad de tipos.
d. No, porque no se ha creado previamente el objeto oC con la sentencia C oC = new C();.
Sin esta sentencia previa no se puede asignar otros objetos al objeto oC.

10. Qu resultado da la siguiente estructura de control? El operador % es el operador resto.


int x = 2;
do
{
try
{
if (x%2 == 0)
throw new Exception();
x++;
}
catch(Exception e){x--;}
finally
{
x=x+2;
System.out.print(x + " ");
}
}
while (x < 10);
a.
b.
c.
d.

3
4
3
3

6
6
5
6

7
8
7
8

10
10
9
10

Segunda Parte: Problema


Un circuito elctrico puede estar formado, al menos, por una serie de resistencias elctricas (R) medidas en
ohmios y una fuente elctrica que es capaz de generar una diferencia de potencial V (que es la que se
almacena en el circuito). Dentro de los circuitos podemos ver que hay dos tipos, los circuitos en serie y los
circuitos en paralelo. Los circuitos en serie calculan la intensidad con la siguiente frmula de la ley de Ohm
V= I(R1 + ... + Rn) mientras que los circuitos en paralelo calculan la intensidad con la siguiente formula I= V
(1/R1 + + 1/Rn).
1. Dibujar un diagrama de clases con los atributos y mtodos necesarios, incluidos los mtodos constructores.
(2 puntos)
2. Implementar la clase circuito serie. (2 puntos)
3. Implementar la creacin del siguiente objeto de un circuito en serie:
a. Circuito con 3 resistencias de 3, 5 y 6 ohmios y una fuente de alimentacin cuyo potencial es
medido a 4 voltios. (1 punto)
b. Hacer la llamada al mtodo correspondiente. Qu resultado dara por pantalla? (1 punto)
4. Definimos un circuito mixto como una composicin donde puede haber circuitos en serie y/o circuitos en
paralelo. Implementar un mtodo de la clase circuito mixto que calcule la suma de las intensidades de
todos los circuitos que componen el circuito mixto. Pista: Para este apartado se ha de tener en cuenta el
polimorfismo. (4 puntos)
Solucin test febrero 2007 segunda semana tipo A:
1A, 2A, 3A, 4A, 5D, 6C, 7A, 8A,9C, 10C

Se desea implementar un sistema para la gestin de zonas de tala. Cada


zona se caracteriza por el nmero de rboles que posee, pero adems, hay
dos tipos de zonas, las zonas de tala anual y las zonas de tala
espordica. Las zonas de tala espordica se talan completamente cada 10
aos, y se caracterizan por el ao de la ltima poda. Las zonas de tala
anual se talan todos los aos pero slo un cierto porcentaje de rboles.
Cada zona de tala anual tiene asociada dicho porcentaje. Sabiendo que la
cantidad de madera promedio que se obtiene de un rbol es de 1000
kilogramos, el sistema debe permitir calcular, dado un ao, la cantidad
de madera que se espera obtener dicho ao en el conjunto de zonas
gestionadas.
1. Dibujar un esquema con las clases necesarias para este programa,
indicando los atributos y mtodos en caso de haberlos (slo
indicarlos, sin escribir su cdigo). (4 puntos)
2. Implementar el/los mtodos que calculen la cantidad de madera
extrada dado un ao en una zona determinada y en todas las zonas.
Dnde se encontrara cada uno de dichos mtodos?(4 puntos)
3. Implementar en cdigo JAVA la creacin de los siguientes objetos (2
puntos):
a. Una
zona de tala espordica
que
con 1000 rboles que se
tal en 1998.
b. Una zona de tala anual con 2000 rboles en donde se tala
anualmente un 10% de los rboles.
c. Un objeto gestin de zonas que incluya ambas zonas.

EJERCICIO 1:
Zona
private String nombre;
private int numArboles;

GestorZonas
private ArrayList <zona> zonas;
public GestorZonas();
public int calculaKgMadera(int ao)
public void aadirZona(Zona zona)

public Zona(String nombre,


int numArboles);
/*Metodos get y set*/
public int calculaKgMadera(int ao)

ZonaTalaEsporadica

ZonaTalaAnual

private int ultimoAoTala;

private int porcentaje;

public Zona(String nombre,


int numArboles);
public int getUltimoAoTala();
public void setUltimoAoTala(int ao);
public int calculaKgMadera(int ao);

public Zona(String nombre,


int numArboles);
public int getPorcentaje();
public void setPorcentaje(int porcent);
public int calculaKgMadera(int ao);

EJERCICIO 2
En primer lugar, ser necesario un mtodo en la clase
GestionZonas que sume la madera recogida en las distintas zonas
que gestiona.
public void calculaKgMadera (int ao){
int kgs=0;
for (int i=0;i < zonas.size();i++){
kgs=kgs+this.zonas.get(i).calculaKgMadera(ao);
}
}
return kgs;
}
Dado que el mtodo que calcula la cantidad de madera generada en
un ao en una zona depende del tipo de zona, este mtodo debe
estar implementado en ambas clases hijas de Zona. Adems, este
mtodo tendr que estar tambin definido en la clase padre Zona,
para que pueda aplicarse polimorfirsmo. Es decir, para que pueda
accederse al mtodo sin necesidad de conocer a qu subclase
referencia el objeto.
En la clase ZonaTalaEspordica tendramos

public int calculaKgMadera(int ao){


int kgs=0;
/*Si el ao fue un ao de tala
(la diferencia ente el ltimo ao de tala
y el ao en cuestin
es mltiplo del intervalo entre talas 10)*/
if ((ao-ultimo_ao_tala)%10)==0){
kgs=numArboles*1000;
}
return kgs;
}
En la clase ZonaTalaAnual tendramos:

public int calculaKgMadera(int ao){


int kgs=0;
kgs=numArboles*porcentaje*10; // porcentaje/100 * 1000
}
return kgs;
}

EJERCICIO 3:
Zona a=new Zona(A,1000);
a.setUltimoAoTala(1998);
Zona a=new Zona(B,2000);
a.setPorcentaje(10);
GestorZonas gz=new GestorZonas();
gz.aadirZona(a);
gz.aadirZona(b);
NOTA: Tambin podra haberse definido un constructor que incluyera
como parmetro de entrada los atributos ultimoAoTala y
porcentaje. No sera necesario en ese caso llamar al mtodo set
correspondiente.

SEPTIEMBRE 2007
TIPO A

Na (ele)

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Responda el test en una hoja de lectura ptica. No olvide rellenar en dicha hoja
el cdigo de carrera, el de la asignatura y el tipo de examen.
Resuelva el Problema en una hoja aparte (mximo 2 caras), indicando su nombre
y el Centro Asociado en el que ha realizado la prctica.
Rellene sus datos en esta hoja y entrguela junto a la de lectura ptica.
Apellidos..Nombre..DNI

Primera Parte: Test


1. Indica, de las siguientes opciones, aquella que no es un componente de la placa madre:
a. Puertos de entrada salida.
b. Interface IDE.
c. Tarjetas de memoria.
d. Fuente de alimentacin.
2. Afecta la memoria cach a la cantidad de instrucciones que un computador ejecuta en un cierto
tiempo?
a. No, dado que depende nicamente de la frecuencia de reloj.
b. S, dado que ampla la memoria de almacenamiento permantente.
c. S, dado que acelera los accesos a datos en memoria.
d. No. La memoria cach solo preserva los datos ante una cada del sistema.
3. El proceso en tiempo compartido (time-sharing) consiste en:
a. Distribuir los procesos en diferentes procesadores.
b. Sincronizar los relojes de diferentes procesadores.
c. Asignar a los procesos ranuras de tiempo en el procesador central.
d. Que los procesos compartan los canales de entrada/salida.
4. Indica cul de los siguientes programas NO es un programas de control de un sistema operativo:
a. Cargador de mdulos.
b. Controlador de tareas.
c. Administrador de memoria.
d. Compilador.
5. La composicin entre clases sirve para:
a. Establecer mecanismos de herencia entre clases.
b. Implementar constructores por defecto.
c. Definir atributos de una clase como instancias de otras clases.
d. Implementar una lista de enteros (int).

6. Cmo diseara un sistema que gestione productos en un supermercado de forma que el vendedor pueda
introducir nuevas marcas de productos en su sistema?
a. Definiendo cada nueva marca como una nueva clase hija de producto.
b. Definiendo marca como un valor (String) de un atributo de la clase producto.
c. Definiendo cada nueva marca como un nuevo atributo (booleano) de la clase producto.
d. No es posible que el usuario introduzca nuevas marcas sin implementar de nuevo el sistema.
7. La herencia es un mecanismo muy til para:
a. La reutilizacin de cdigo en la implementacin de nuevos sistemas.
b. Implementar estructuras dinmicas de almacenamiento.
c. Generar cdigo portable a otros sistemas operativos.
d. La implementacin de bucles.
8. Que secuencia de valores imprimira el siguiente cdigo?

for (int i=1;i<3;i++){


for (int j=1;j<3;j++){
System.out.println(i);
System.out.println(j);
}
}

a.
b.
c.
d.

1,1,2,1,1,2,2,2
1,1,2,2,2,1,1,2
1,1,1,2,2,1,2,2
1,2,1,2

9. Indica cul de las siguientes afirmaciones es correcta:


a. En Java, un bloque try{...} slo puede tener asociado un bloque catch{...}, cuyo cdigo se
ejecutar siempre que salte una excepcin en el try{...}.
b. En Java, un bloque try{...} puede tener asociados varios bloques catch{...} y, en caso de que salte
una excepcin en el try{...}, se ejecutar primero, y mientras sea posible, el cdigo del bloque
catch{...} secuencialmente ms cercano.
c. En Java, un bloque try{...} puede tener asociados varios bloques catch{...} y, en caso de que salte
una excepcin en el try{...}, se ejecutar el cdigo del bloque catch que capture dicha excepcin.
d. En Java, un bloque try{...} puede tener asociados varios bloques catch{...} y, en caso de que salte
una excepcin en el try{...}, se ejecutarn todos los cdigos de los bloques catch asociados a
dicho bloque.
10. En qu clase se implementa el mtodo comprobar_mquina_plantacin en la prctica de este ao?
a. En la clase GestinMaquinaria.
b. En la clase Plantacin.
c. En la clase Modelo_de_mquina
d. En la clase Producto.

Segunda Parte: Problema


Se desea implementar un sistema para el control de gastos de cambio de piezas en los
automviles de una empresa de transporte. Cada ao, los conductores que consideren
que se requiere un cambio de pieza por desgaste pedirn una revisin en el taller de
mantenimiento de la flota. El encargado del taller anotar la informacin relativa a las
revisiones realizadas. De cada revisin se anotar la fecha de revisin, la matrcula del
automvil y el conjunto de piezas sustitudas. De cada pieza es necesario conocer su
cdigo y coste. El sistema de control de revisiones debe disponer de un mtodo que
permita calcular el coste total de todas las piezas de una revisin. Adems, el sistema
debe tener en cuenta que, a efectos de facturacin, existen tres tipos de piezas: las
importadas, las de fabricacin nacional y las de desguace. A las importadas hay que
aadirles un porcentaje por gastos de envo, especfico para cada pieza. A las de
fabricacin nacional el porcentaje de IVA fijo, y a las de desguace no se les aade
ningn porcentaje.
Se pide:
1. Dibujar un diagrama de clases con los atributos y mtodos necesarios, incluidos los
mtodos constructores. Justificar en qu clase o clases se implementara el o los
mtodos para calcular el coste final de UNA pieza. (5 puntos)
2. Implementar el mtodo necesario para calcular el coste total de una revisin. (3
puntos)
3. En un cdigo aparte, escribir las instrucciones necesarias (creacin de objetos y
llamadas a mtodos) para (2 puntos):
a. Crear dos objetos que representen una revisin y una pieza de importacin
nacional (con valores arbitrarios en sus atributos).
b. Incluir en la revisn la pieza instanciada.
c. Calcular el coste total de la revisin.

Solucintestseptiembre2007,tipoA:
1d),2c),3c),4d),5c),6b),7a),8c),9c),10c)

SOLUCIN PARTE PRCTICA DEL EXAMEN


SEPTIEMBRE 2007, ESPECIALIDAD MECNICA
Se desea implementar un sistema para el control de gastos de cambio de
piezas en los automviles de una empresa de transporte. Cada ao, los
conductores que consideren que se requiere un cambio de pieza por desgaste
pedirn una revisin en el taller de mantenimiento de la flota. El encargado
del taller anotar la informacin relativa a las revisiones realizadas. De cada
revisin se anotar la fecha de revisin, la matrcula del automvil y el
conjunto de piezas sustitudas. De cada pieza es necesario conocer su
cdigo y coste. El sistema de control de revisiones debe disponer de un
mtodo que permita calcular el coste total de todas las piezas de una
revisin. Adems, el sistema debe tener en cuenta que, a efectos de
facturacin, existen tres tipos de piezas: las importadas, las de fabricacin
nacional y las de desguace. A las importadas hay que aadirles un porcentaje
por gastos de envo, especfico para cada pieza. A las de fabricacin nacional
el porcentaje de IVA fijo, y a las de desguace no se les aade ningn
porcentaje.
Se pide:
1. Dibujar un diagrama de clases con los atributos y mtodos necesarios,
incluidos los mtodos constructores. Justificar en qu clase o clases se
implementara el o los mtodos para calcular el coste final de UNA pieza. (5
puntos)
2. Implementar el mtodo necesario para calcular el coste total de una
revisin. (3 puntos)
3. En un cdigo aparte, escribir las instrucciones necesarias (creacin de
objetos y llamadas a mtodos) para (2 puntos):
a. Crear dos objetos que representen una revisin y una pieza de
importacin nacional (con valores arbitrarios en sus atributos).
b. Incluir en la revisn la pieza instanciada.
c. Calcular el coste total de la revisin.

EJERCICIO 1:
Revisin

Pieza
private String cdigo;
private int coste;
public Pieza(String codigo,
int coste);
/*Metodos get y set*/
public int calculaCoste(int ao)

PiezaImportada

private ArrayList <pieza>


piezas_sustituidas;

public Revisn();
public int calculaCosteTotal()
public void aadirPieza(Pieza p)

Pieza_Imp_Nacional

private int gastos_envio;

public static int iva;

public PiezaImportada(
String codigo,
int coste,
int gastos_envio);
public int getGastos_envio();
public void setGastos_envio(int g);
public int calculaCoste();

public PiezaImportada(
String codigo,
int coste);
public int calculaCoste();

COMENTARIOS DEL EQUIPO DOCENTE:


1.Dado que existen diferentes tipos de piezas con diferentes
atributos, como los gastos de envo o el IVA,
y diferente
comportamiento en sus mtodos, como el clculo del coste, es
indispensable establecer una herencia entre clases para seguir
el paradigma de programacin orientada a objetos. En caso de
implementar todos ellos en una sola clase Pieza, sera necesario
reimplementar el sistema para incluir en un futuro nuevos tipos
de piezas en el sistema. Sin embargo, aplicando herencia
bastara con extender una nueva clase hija.
2.Siguiendo el paradigma de programacin orientada a objetos es
importante que el proceso de clculo de costes sea invisible
para la clase Revisn, de forma que no sea necesario
reimplementar esta clase para introducir nuevos tipos de piezas.

3.La clase Revisin se relaciona por composicin con Pieza


mediante el atributo piezas_sustituidas. ste es un Vector
dinmico (ArrayList) que contendr objetos de la clase Pieza. No
debe ser un array, dado que no conocemos a priori el nmero de
piezas que conlleva una revisin.
4.No es estrictamente necesario implementar una clase hija para
las piezas de desguace si consideramos que encaja con el
comportamiento por defecto de la clase padre. Esto es posible
dado que las piezas de desguace no poseen atributos ni mtodos
que no aparezcan en el resto de las clases hijas.
5.Para que el
mtodo calculaCoste de la clases tipo Pieza sea
accesible desde Revisin, debe implementarse para la clase padre
que es con la que se relaciona Revisin. Adems, el mtodo debe
reescribirse en las clases hijas, ya que en stas el mtodo va a
comportarse de diferente modo.
6.A diferencia del atributo gastos_envo, el IVA es un atributo
cuyo valor lo comparten todas las instancias (objetos) de la
clase Pieza_Imp_Nacional. Es decir, si se modifica el IVA para
una instancia de la clase, se modifica para todas. Esto se
implementa definiendo IVA como variable estatica.

EJERCICIO 2
publicvoidcalculaCosteTotal(){
intcoste=0;
for(inti=0;i<this.piezas_sustituidas.size();i++){
coste=coste+this.piezas_sustituidas.get(i).calculaCoste();
}
return coste;
}
EJERCICIO 3:
Revision r=new Revision();
Pieza p=new Pieza_Imp_Nacional(qwe012,300);
r.aadirPieza(p);
int coste=r.calcularCosteTotal();

FEBRERO 2008 Primera Semana

Solucin test Febrero 2008 Primera Semana(Tipo A):


1-A, 2-B, 3-A, 4-B, 5-D, 6-C, 7-D, 8-A, 9-B, 10-D

FEBRERO 2008 Segunda Semana

Solucin test Febrero 2008 Segunda Semana(Tipo A):


1-A, 2-B, 3-B, 4-D, 5-C, 6-B, 7-C, 8-A, 9-A, 10-D

Septiembre 2008 tipo A (electrnica)


TIPO A

ORIG (elec)

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Responda el test en una hoja de lectura ptica. No olvide rellenar en dicha hoja el cdigo de carrera, el
de la asignatura y el tipo de examen.
Resuelva el Problema en el cuadernillo indicando su nombre y el Centro Asociado en el que ha realizado
la prctica.
Entregue la hoja de lectura ptica, enunciados y el cuadernillo completo.

Primera Parte: Test


1. Cmo se llama la tcnica que utiliza un rea del disco duro para almacenar datos destinados a la
memoria RAM cuando no queda espacio libre en sta?
a) Memoria fsica.
b) Memoria virtual.
c) Memoria esttica.
d) Memoria cach.
2. Un puerto USB:
a) Evita el uso de tarjetas especializadas para cada perifrico.
b) Establece una conexin directa entre los dispositivos perifricos.
c) Establece un nivel hardware entre el sistema operativo y el compilador.
d) Es un hub que interconecta conjuntos de mquinas.
3. Un lenguaje orientado a objetos frente a un ensamblador:
a) Permite un manejo ms directo de los registros del computador.
b) Es ms cercano al lenguaje natural.
c) Es ms fiable ante cadas del sistema.
d) Evita la necesidad de compiladores complejos.
4. Cul de las siguientes funciones no depende sistema operativo:
a) Gestin de ficheros.
b) Gestin del arranque del computador.
c) Gestin de la memoria.
d) Planificacin de trabajos.

5. Qu es una clase interna?


a) Una clase cuya definicin est dentro de otra clase.
b) Una clase definida dentro de un paquete.
c) Una clase que hereda de otra.
d) Una clase que extiende a otra (utilizando el mecanismo de extensin).

6. Que secuencia de valores imprimira el siguiente cdigo?


public class Prueba {
public static void main(String[] args) {
for (int i = 1; i < 3; i++) {
int j = 0;
do {
System.out.println(j);
j++;
} while (j <= 1);
System.out.println(i);

}
}
}
a) 0,1,2,0,1,2
b) 0,1,1,0,1,2
c) 0,1,1,0,1,1
d) 2,1,1,2,2,1

7. Qu clases pueden acceder a un atributo declarado con el modificador 'protected'?


a) Slo la propia clase.
b) Slo las clases dentro del mismo paquete.
c) Las clases dentro del mismo paquete y los descendientes de la propia clase.
d) Slo los descendientes de la propia clase.
8. Se tiene este cdigo para un determinado mtodo, Qu salida dara por pantalla?
public void imprime(String Nombre) {
this.nombre=nombre;
nombre=this.nombrePila;
System.out.println(this.nombre);
}

a) El valor del atributo nombre de la clase.


b) El valor del parmetro de entrada nombre.
c) El valor de la variable nombre en el contexto del mtodo.
d) El valor del atributo nombrePila de la clase.

9. Dado el siguiente cdigo, sabiendo que la clase Alumno hereda de Persona, y que Persona dispone de
un mtodo imprimirDNI se ejecutara:
...
Alumno a = new Alumno(726382-L);
Persona b = a;
b.imprimirDNI();

...
a) El mtodo imprimirDNI de la clase Persona.
b) Nada. Un error de compilacin.
c) imprimirDNI pero slo si est redefinido en la clase Alumno.
d) Nada. Aparecera un error de ejecucin (Null pointer exception)
10. En la prctica obligatoria, el tipo de cuerda se represent mediante un tipo:
a) String.
b) Enumerado.
c) Object.
d) Se emple una clase distinta para cada tipo de cuerda.

Apellidos..Nombre..DNI...
Centro asociado ..

Segunda Parte: Problema


Se desea gestionar las citas en un hospital. El centro debe administrar su lista de citas con especialistas y de citas para
pruebas mdicas. Tanto las citas con especialistas como las citas para pruebas medicas deben incluir su hora y da y
nombre del paciente. Las citas con especialistas incluyen adems el nombre del especialista y su especialidad. Las citas
para pruebas incluyen el nombre de la prueba. El sistema debe de ser capaz de imprimir en pantalla todas las citas
existentes para un especialista concreto o para todos, y para una o todas las pruebas. Adems, debe de ser posible crear
una nueva cita introduciendo los datos de la misma (strings). Antes de proceder al diseo leanse las tres cuestiones
siguientes:

Se pide:
1. (2 puntos) Dibujar un esquema con las clases necesarias para este programa, indicando los atributos y mtodos
que tiene cada una (slo indicarlos, sin escribir su cdigo), aplicando los principios de la programacin
orientada a objetos.
2. (1 punto) Implementar el mtodo que permite imprimir las citas de un determinado especialista.
3. (2 puntos) Explicar justificadamente cmo se hara para, sin modificar el sistema existente y aplicando los
principios de la programacin orientada a objetos, reutilizar el cdigo para hacer un nuevo programa que
gestione otro hospital anlogo que incluya adems la posibilidad de modificar una cita. Qu clases han de
extenderse y con qu nuevos mtodos y atributos? Qu mtodos se reutilizan?

Solucin al test septiembre 2008 tipo A (electrnica):


1-b, 2-a, 3-b, 4-b, 5-a, 6-b, 7-c, 8-a, 9-a, 10-b

SOLUCIN PARTE PRCTICA DEL EXAMEN


SEPTIEMBRE 2008, ESPECIALIDAD ELECTRNICA
Se desea gestionar las citas en un hospital. El centro debe administrar su lista
de citas con especialistas y de citas para pruebas mdicas. Tanto las citas con
especialistas como las citas para pruebas medicas deben incluir su hora y da y
nombre del paciente. Las citas con especialistas incluyen adems el nombre
del especialista y su especialidad. Las citas para pruebas incluyen el nombre
de la prueba. El sistema debe de ser capaz de imprimir en pantalla todas las
citas existentes para un especialista concreto o para todos, y para una o todas
las pruebas. Adems, debe de ser posible crear una nueva cita introduciendo
los datos de la misma (strings). Antes de proceder al diseo leanse las tres
cuestiones siguientes:
Se pide:
1. (2 puntos) Dibujar un esquema con las clases necesarias para este
programa, indicando los atributos y mtodos que tiene cada una (slo
indicarlos, sin escribir su cdigo), aplicando los principios de la
programacin orientada a objetos.
2. (1 punto) Implementar el mtodo que permite imprimir las citas de un
determinado especialista.
3. (2 puntos) Explicar justificadamente cmo se hara para, sin modificar el
sistema existente y aplicando los principios de la programacin orientada
a objetos, reutilizar el cdigo para hacer un nuevo programa que
gestione otro hospital anlogo que incluya adems la posibilidad de
modificar una cita. Qu clases han de extenderse y con qu nuevos
mtodos y atributos? Qu mtodos se reutilizan?

EJERCICIO 1:
Hospital
protected List<CitaEspecialista> citasEspecialista;
protected List<CitaPrueba> citasPrueba;
public List<CitaEsp> imprimirCitasEspecialista(String nombre);
public List<CitaEsp> imprimirCitasEspecialista();
public List<CitaPruebas> imprimirCitasPruebas(String nombre);
public List<CitaPruebas> imprimirCitasPruebas();
public void CrearCitaEspecialista(String hora, String da, String
nombrePaciente, String nombreEspecialista, String especialidad);
public void CrearCitaPrueba(String hora, String da, String nombrePaciente,
String nombrePrueba);

abstract Cita
private String hora;
private String da;
private String nombrePaciente;
/*Mtodos get y set*/

Cita

CitaEspecialista

Cita

CitaPruebas

private String nombreEspecialista;


private String especialidad;

private String nombrePrueba

public CitaEspecialista(
String hora,
String da,
String nombrePaciente,
String nombreEspecialista,
String especialidad);

public CitaPrueba(
String hora,
String da,
String nombrePaciente,
String nombrePrueba);

/*Mtodos get y set*/

/*Mtodos get y set*/

PRIMER PROBLEMA:
1. Dado que todas las citas son o de especialista o de prueba, la clase genrica
cita debe de ser abstracta.
2. Para poder imprimir conjuntos de citas es necesario crear una estructura de
composicin
mediante
una
lista
sobre
las
clases
CitaPrueba
y
CitaEspecialista.
3. Dado que las listas de pruebas y citas de especialista se imprimen de manera
independiente, el parmetro de salida de los mtodos imprimir debe de ser
una lista de pruebas o citas de especialistas, no de la clase genrica Cita,
que adems es abstracta.
4. La creacin de una nueva cita requiere dos mtodos (dependiendo del tipo de
cita) en la clase Hospital que aada un elemento a su lista.

SEGUNDO PROBLEMA
El mtodo debe recorrer la lista de citas de especialista, atributo de la clase
Hospital. Por cada elemento de la lista (variable c), el mtodo debe comprobar
que el nombre de especialista se corresponda con el parmetro de entrada
nombreEspecialista, y si es as, imprimir los atributos de la cita. El cdigo
sera el siguiente:
public void imprimirCitasEspecialista (String nombreEspecialista){
for (int i=0;i< this.citasEspecialista.size();i++){
CitaESpecialista c=(this.citasEspecialista.getElementAt(i));
if (c.getNombreEspecialista()=nombreEspecialista){
System.out.println(c.getNombreHora());
System.out.println(c.getNombreDia());
System.out.println(c.getNombreNombrePaciente());
}
}
}
TERCER PROBLEMA
Para modificar una cita sera necesario un nuevo mtodo en la clase Hospital
anlodo a crearCitaEspecialista o crearCitaPrueba. Podra crearse un mtodo
o dos, cada uno de ellos especializado en cada tipo de cita. En general, no es
necesario reimplementar de nuevo el sistema. Bastara con crear una clase hija
de Hospital en la que se implemente este nuevo mtodo, reutilizando el resto de
mtodos.
Si nos adentramos a ms nivel de detalle, cabra decir que esto solo es posible
si los atributos citasEspecialista y citasPrueba estn definidos como
protected y no como private, ya que como private no podran ser
modificados por la clase hija. En general, esto no suele ser un problema en la
reutilizacin de cdigo. Para los atributos private, las clases suelen incluir
todos los mtodos necesarios para modificar el atributo. Por ejemplo, bastara
un que hubiera de antemano un metodo borrarCita.

Septiembre 2008 tipo A (mecnica)


TIPO A

ORIG (mec)

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Responda el test en una hoja de lectura ptica. No olvide rellenar en dicha hoja el cdigo de carrera, el
de la asignatura y el tipo de examen.
Resuelva el Problema en el cuadernillo indicando su nombre y el Centro Asociado en el que ha realizado
la prctica.
Entregue la hoja de lectura ptica, enunciados y el cuadernillo completo

Primera Parte: Test


1. Cmo se llama la tcnica que utiliza un rea del disco duro para almacenar datos destinados a la
memoria RAM cuando no queda espacio libre en sta?
a) Memoria fsica.
b) Memoria virtual.
c) Memoria esttica.
d) Memoria cach.
2. Un puerto USB:
a) Evita el uso de tarjetas especializadas para cada perifrico.
b) Establece una conexin directa entre los dispositivos perifricos.
c) Establece un nivel hardware entre el sistema operativo y el compilador.
d) Es un hub que interconecta conjuntos de mquinas.
3. Un lenguaje orientado a objeto, frente a un ensamblador:
a) Permite un manejo ms directo de los registros del computador.
b) Es ms cercano al lenguaje natural.
c) Es ms fiable ante cadas del sistema.
d) Evita la necesidad de compiladores complejos.

4. Cul de las siguientes funciones no depende sistema operativo:


a) Gestin de ficheros.
b) Gestin del arranque del computador.
c) Gestin de la memoria.
d) Planificacin de trabajos.

5. Qu es una clase interna?


a) Una clase cuya definicin est dentro de otra clase.
b) Una clase definida dentro de un paquete.
c) Una clase que hereda de otra.
d) Una clase que extiende a otra (utilizando el mecanismo de extensin).

6. Que secuencia de valores imprimira el siguiente cdigo?


public class Prueba {
public static void main(String[] args) {
for (int i = 1; i < 3; i++) {
int j = 0;
do {
System.out.println(j);
j++;
} while (j <= 1);
System.out.println(i);

}
}
}
a) 0,1,2,0,1,2.
b) 0,1,1,0,1,2.
c) 0,1,1,0,1,1.
d) 2,1,1,2,2,1.

7. Qu clases pueden acceder a un atributo declarado con el modificador 'protected'?


a) Slo la propia clase.
b) Slo las clases dentro del mismo paquete.
c) Las clases dentro del mismo paquete y los descendientes de la propia clase.
d) Slo los descendientes de la propia clase.
8. Se tiene este cdigo para un determinado mtodo, Qu salida dara por pantalla?
public void imprime(String Nombre) {
this.nombre=nombre;
nombre=this.nombrePila;
System.out.println(this.nombre);
}

a) El valor del atributo nombre de la clase.


b) El valor del parmetro de entrada nombre.
c) El valor de la variable nombre en el contexto del mtodo.
d) El valor del atributo nombrePila de la clase.

9. Dado el siguiente cdigo, sabiendo que la clase Alumno hereda de Persona, y que Persona dispone de
un mtodo imprimirDNI se ejecutara:
...
Alumnoa=newAlumno(726382L);
Personab=a;
b.imprimirDNI();

...
a) El mtodo imprimirDNI de la clase Persona.
b) Nada. Un error de compilacin.
c) El mtodo imprimirDNI, pero slo si est redefinido en la clase Alumno.
d) Nada. Aparecera un error de ejecucin (Null pointer exception)
10. En la prctica obligatoria, el tipo de cuerda se represent mediante un tipo:
a) String.
b) Enumerado.
c) Object.
d) Se emple una clase distinta para cada tipo de cuerda.

Apellidos..Nombre..DNI...
Centro asociado ..

Segunda Parte: Problema


Se desea implementar un sistema JAVA para la gestin de una fbrica de vehculos donde se fabrican motores
de tres tipos: gasolina, disel y elctricos. De cada motor se tiene como informacin caracterstica la relacin
de compresin y su cilindrada, as como un identificador nico de la marca y el modelo del motor.
En el caso de motores de gasolina y diesel se debe guardar informacin relativa a la resistencia que presenta el
combustible cuando es comprimido dentro del motor: el ndice de octanaje en el caso de la gasolina y el ndice
de cetano en los motores disel. Los motores de gasolina pueden ser de inyeccin o de carburacin. En el caso
de los motores de gasolina con carburador deber guardarse tambin el tamao de la cuba como informacin
caracterstica, y para los motores disel y los de gasolina de inyeccin, el tipo de inyeccion (directa o
indirecta) y el nmero de inyectores. De los motores elctricos se desea almacenar la informacin relativa a la
corriente y el par de arranque.
Por ltimo, y dado que la fbrica est preparada para la construccin de diferentes modelos de coches, se desea
que la aplicacin a desarrollar sea capaz de recuperar, para un modelo de coche dado, el conjunto de motores
compatibles con su chsis.
Se pide:

2'5 puntos. Cmo modelaras este problema para que la aplicacin soporte todas la especificacin
requerida? Realiza el diseo de clases correspondiente.
1'5 puntos. Dnde definiras el mtodo necesario para devover, dado un modelo de coche, el conjunto de
motores compatibles con su chsis? Razona tu respuesta.
1 puntos. Implementa el cdigo necesario para instanciar un motor de gasolina de inyeccin directa.

Solucin al test septiembre 2008 tipo A (mecnica):


1-b, 2-a, 3-b, 4-b, 5-a, 6-b, 7-c, 8-a, 9-a, 10-b

SOLUCIN PARTE PRCTICA DEL EXAMEN


SEPTIEMBRE 2008, ESPECIALIDAD MECNICA
Se desea implementar un sistema JAVA para la gestin de una fbrica de
vehculos donde se fabrican motores de tres tipos: gasolina, disel y elctricos.
De cada motor se tiene como informacin caracterstica la relacin de
compresin y su cilindrada, as como un identificador nico de la marca y el
modelo del motor. En el caso de motores de gasolina y diesel se debe guardar
informacin relativa a la resistencia que presenta el combustible cuando es
comprimido dentro del motor: el ndice de octanaje en el caso de la gasolina y
el ndice de cetano en los motores disel. Los motores de gasolina pueden ser
de inyeccin o de carburacin. En el caso de los motores de gasolina con
carburador deber guardarse tambin el tamao de la cuba como informacin
caracterstica, y para los motores disel y los de gasolina de inyeccin, el tipo
de inyeccion (directa o indirecta) y el nmero de inyectores. De los motores
elctricos se desea almacenar la informacin relativa a la corriente y el par de
arranque.
Por ltimo, y dado que la fbrica est preparada para la construccin de
diferentes modelos de coches, se desea que la aplicacin a desarrollar sea
capaz de recuperar, para un modelo de coche dado, el conjunto de motores
compatibles con su chsis.
Se pide:
1. (2'5 puntos). Cmo modelaras este problema para que la aplicacin
soporte todas la especificacin requerida? Realiza el diseo de clases
correspondiente.
2. (1'5 puntos). Dnde definiras el mtodo necesario para devover, dado
un modelo de coche, el conjunto de motores compatibles con su chsis?
Razona tu respuesta.
3. (1 punto). Implementa el cdigo necesario para instanciar un motor de
gasolina de inyeccin directa.

EJERCICIO 1:
abstract Motor

GestionMotores

private String marca;


private String modelo;
private Double relComp;

private List <Motor> listaMotores;

public compatibilidad (String chasis)


/*Mtodos get y set*/

/*Mtodos get y set*/

Cita

MotorGasolina

Cita

MotorDiesel

Cita

MotorElec

private Double resistencia;


private Double indOct;

private Double resistencia;


Private String tipoIny;

private Double corriente;


private Double parArranque;

public MotorGasolina(
String marca,
String Modelo,
Double relComp
Double resistencia,
Double indOct);
/*Mtodos get y set*/

public MotorDiesel(
String marca,
String Modelo,
Double relComp
Double resistencia,
String tipoIny);

public MotorElec(
String marca,
String Modelo,
Double relComp
Double corriente,
Double parArranque);

Cita

MotorGasolinaIny

/*Mtodos get y set*/

Cita

MotorGasolinaCarb

Private String tipoIny

Private int tamCuba

public MotorGasolinaIny(
String marca,
String Modelo,
Double relComp
Double resistencia,
Double indOct
String tipoIny);

public MotorGasolinaCarb(
String marca,
String Modelo,
Double relComp
Double resistencia,
Double indOct
int tamCuba);

/*Mtodos get y set*/

/*Mtodos get y set*/

/*Mtodos get y set*/

PRIMERA PREGUNTA:
En general, la jerarqua viene dada por la tipologa de
motores descrita en el enunciado. Sobre sta, basta con situar
cada atributo en las clases correspondientes. Si un atributo es
compartido por todas las clases hijas, entonces se aade
nicamente en la clase padre.
Hemos introducido como parmetros de entrada en cada
constructor todos los atributos de la clase. Otra posibilidad es
contar con el constructor por defecto (sin parmetros de entrada)
e incluir mtodos get y set para dar valor a los atributos del
objeto creado.

SEGUNDO PROBLEMA
En cuando al problema de la compatibilidad entre chasis y
motores, es necesario disponer de alguna lista de motores sobre la
que comprobar la compatibilidad y devolver la lista reducida que
se pide en el enunciado. Para incorporar esta lista de motores se
requiere una nueva clase GestionMotores (no tiene sentido que
una clase contenga una lista de elementos de su misma clase).
Basta entonces con incluir en dicha clase un mtodo que recorra la
lista y compruebe la compatibilidad chasis-motor.
TERCER PROBLEMA
Dado que todos los atributos vienen dados como parmetros de
entrada en el constructor, basta con una lnea de cdigo en el que
se cree el objeto pedido mediante una llamada a su constructor.
MotorGasolinaIny motorEjemplo =
new MotorGasolinaIny(Opel,Corsa,0.5,0.2,0.3,directa);

Septiembre de 2008 tipo A (reserva)


TIPO A

RES(elec/mec)

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Responda el test en una hoja de lectura ptica. No olvide rellenar en dicha hoja el cdigo de carrera, el
de la asignatura y el tipo de examen.
Resuelva el Problema en el cuadernillo indicando su nombre y el Centro Asociado en el que ha realizado
la prctica.
Entregue la hoja de lectura ptica, enunciados y el cuadernillo completo.

Primera Parte: Test


1. Para mejorar la velocidad de procesamiento sobre un gran conjunto de datos necesitaras:
a) Ms memoria ROM.
b) Ms memoria RAM.
c) Ms memoria en el disco duro.
d) Un sistema operativo multiusuario.
2. Cul es la funcin de un modem?
a) Convertir datos digitales a analgicos para permitir la comunicacin entre ordenadores por medio de una
red de rea local.
b) Convertir datos digitales a analgicos para permitir la comunicacin entre ordenadores por medio de una
lnea telefnica.
c) La compresin de datos digitales para permitir la comunicacin entre ordenadores por medio de una red
de rea local.
d) La compresin de datos analgicos para permitir la comunicacin entre ordenadores por medio de una
lnea telefnica.
3. El sistema operativo:
a) Gestiona los tiempos de CPU asignados a los procesos.
b) Se encarga de la compilacin de todos los programas ejecutados en el computador.
c) Se encarga de interconectar los elementos de la placa madre.
d) Es el componente hardware principal del computador.
4. El software es:
a) El conjunto de componentes fsicos del ordenador.
b) La placa madre y sus componentes.
c) El conjunto de programas que nos permiten hacer uso del ordenador.
d) El conjunto de programas instalados en el ordenador, salvo el sistema operativo.

5. Que secuencia de valores imprimira el siguiente cdigo?

for (int i=0; i < 3; i++ ) {


if ( i == 0 ) {
i++;
}
System.out.println(i);
}
a) 0, 1, 2.
b) 1, 2.
c) 1, 2, 3.
d) 0, 1.
6. Al crear una clase siempre debe implementarse al menos un constructor?
a) S, porque si no tiene constructores no se puede saber cmo inicializar los objetos.
b) S, de hecho debe tener al menos dos constructores: uno con parmetros y otro sin ellos.
c) No, es posible crear clases que no tengan implementado ningn constructor; en ese caso se ejecutar el
constructor por defecto.
d) No, porque siempre es posible instanciar un objeto sin ejecutar ningn constructor.
7. La palabra clave extends se usa para:
a) Declarar una superclase.
b) Declarar una subclase.
c) Componer un conjunto de objetos.
d) Componer un conjunto de clases.
8. Se tiene este cdigo para un determinado mtodo:
Public void suma(int a,b){
this.suma = this.suma+this.a;
this.suma = this.suma+this.b;
System.out.println(this.suma);
}
Qu salida dara por pantalla?
a) La suma de los parmetros de entrada a y b.
b) La suma de los parmetros de entrada a y b ms el valor del atributo suma de la clase.
c) La suma de los atributos a, b y suma de la clase.
d) La suma de los objetos a y b.

9. Dado el siguiente cdigo:


public class Pedido {
public Pedido(int cantidad) {
...
}
public static void main(String[] args) {
Pedido pedido = new Pedido();
}
}
a) El cdigo es correcto.
b) La creacin del objeto 'pedido' es incorrecta.
c) Un mtodo static no permite la creacin de objetos.
d) Falta declarar el tipo que devuelve el mtodo 'Pedido'.
10.En la prctica obligatoria, en qu clases aparece el mtodo getPrecio() ?
a) nicamente en la clase Guitarra.
b) nicamente en la clase GuitarraOferta.
c) En la clase Catalogo.
d) En las clases Guitarra y GuitarraOferta.

Apellidos..Nombre..DNI...
Centro asociado ..

Segunda Parte: Problema


Un proveedor distribuye distintos tipos de piezas a una serie de clientes. Cada cliente adquiere un nmero de
piezas determinado cada mes, informacin que pueden alterar en cualquier momento. Para ello el distribuidor
almacena la informacin relativa a los clientes en cuentas. Cada cuenta tiene un titular y un pedido. Cada
pedido se compone de un conjunto de piezas, cada una de las cuales tendr un identificador y un precio, y un
mtodo para calcular el precio total del pedido.

Se pide:

2'5 puntos. Disear el diagrama de clases para una aplicacin que permita gestionar las cuentas de cliente
y los pedidos, teniendo en cuenta que se han de poder aadir, eliminar y modificar dichas cuentas y
pedidos.
1'5 puntos. Modificar el diseo para que en el conjunto de piezas se distingan dos tipos de piezas. El
primero de ellas, las bielas, contendr informacin acerca del dimetro de sus dos agujeros, as como su
longitud. El segundo tipo, el cigeal, debe almacenar el nmero de apoyos que tenga dicho cigeal.
Qu mecanismo has utilizado para introducir la modificacin solicitada en este apartado? Por qu?
1 puntos. Escribe el cdigo necesario para calcular el precio total de un pedido segn el diseo resultante
del apartado anterior.

Solucin al test de septiembre de 2008 tipo A (reserva):


1-b, 2-b, 3-a, 4-c, 5-b, 6-c, 7-b, 8-c, 9-b, 10-d

SOLUCIN PARTE PRCTICA DEL EXAMEN


DE RESERVA EN SEPTIEMBRE 2008,
Un proveedor distribuye distintos tipos de piezas a una serie de clientes. Cada
cliente adquiere un nmero de piezas determinado cada mes, informacin que
pueden alterar en cualquier momento. Para ello el distribuidor almacena la
informacin relativa a los clientes en cuentas. Cada cuenta tiene un titular y un
pedido. Cada pedido se compone de un conjunto de piezas, cada una de las
cuales tendr un identificador y un precio, y un mtodo para calcular el precio
total del pedido. Se pide:
1. 2'5 puntos. Disear el diagrama de clases para una aplicacin que
permita gestionar las cuentas de cliente y los pedidos, teniendo en
cuenta que se han de poder aadir, eliminar y modificar dichas cuentas y
pedidos.
2. 1'5 puntos. Modificar el diseo para que en el conjunto de piezas se
distingan dos tipos de piezas. El primero de ellas, las bielas, contendr
informacin acerca del dimetro de sus dos agujeros, as como su
longitud. El segundo tipo, el cigeal, debe almacenar el nmero de
apoyos que tenga dicho cigeal. Qu mecanismo has utilizado para
introducir la modificacin solicitada en este apartado? Por qu?
3. 1 punto. Escribe el cdigo necesario para calcular el precio total de un
pedido segn el diseo resultante del apartado anterior.

EJERCICIO 1:
GestionCuentas
private List <Cuenta> listaCuentas;

public List<Cuenta> getCuentas();


public void removeCuenta(Cuenta c);
public void addCuenta(Cuenta c);
/*Mtodos get y set*/

Cuenta
private String Cliente;
private List<Pieza> pedido;
public
public
public
public
public

void Cuenta(String cliente);


List<Pieza> getPedido();
void removePieza(Pieza p);
void addPieza(Pieza p);
int calculaPrecioTotalPedido();
/*Mtodos get y set*/

Pieza
Private String identificador;
Private int precio;
public void Pieza(
String identificador,
int precio);
/*Mtodos get y set*/

PRIMERA PREGUNTA: DISEO DE CLASES


Para poder aadir o eliminar cuentas, es necesario una clase
que contenga al menos una lista de cuentas sobre las que poder
operar. sta es la clase GestionCuentas. Dado que existe un
nico pedido por cada cuenta, ambos conceptos se pueden abstraer
como una nica clase, siendo pedido un atributo tipo lista
dentro de la clase Cuenta. Otra opcin consistira en definir
dos
clases
independientes
que
mantengan
una
relacin
de
composicin.
Para poder modificar pedidos, es necesario poder borrar o
aadir piezas de la lista Pedidos. Para ello, definimos los
mtodos correspondientes en la clase Cuenta.
SEGUNDO PROBLEMA
Para aadir dos subtipos de Pieza no es necesario modificar
lo establecido en el esquema de clases anterior. Basta con aadir
dos nuevas clases que hereden de Pieza. Por la propiedad de
polimorfismo, las clases descritas en el esquema anterior que
operan sobre precios de piezas, seguirn comportndose de la misma
forma, independientemente del tipo de pieza a que corresponda cada
elemento de la lista pedido.
Pieza
private String identificador;
private int precio;
public void Pieza(
String identificador,
int precio);
/*Mtodos get y set*/

Biela
private int diametro;
private int longitud;
public void Pieza(
String identificador,
int precio,
int diametro,
int longitud);
/*Mtodos get y set*/

Cigeal
private int puntosApoyo;
public void Pieza(
String identificador,
int precio,
int puntosApoyo);
/*Mtodos get y set*/

TERCER PROBLEMA
Siendo cuentaEj un objeto Cuenta ya instanciado con elementos
dentro del atributo pedido bastara con escribir:
int precioTotal = cuentaEj.calculaPrecioTotal();

FEBRERO 2009 Primera Semana


TIPOA

modI

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Responda el test en una hoja de lectura ptica. No olvide rellenar en dicha hoja el cdigo de
carrera, el de la asignatura y el tipo de examen.
Resuelva el Problema en el cuadernillo indicando su nombre y el Centro Asociado en el que ha
realizado la prctica.
Entregue la hoja de lectura ptica, enunciados y el cuadernillo completo.

Primera Parte: Test

1. Dnde se integran todos los componentes que proporcionan funcionalidad al


computador?
a) En la controladora USB.
b) En la BIOS.
c) En la placa base.
d) En las interfaces IDE.

2. Indique cul de las siguientes afirmaciones NO es correcta.


La mquina virtual de java:
a) Permite ejecutar un mismo cdigo en diferentes plataformas.
b) Se necesita una versin de la mquina virtual para cada sistema operativo (Windows, Linux,
MacOS, etc.).
c) Es el compilador de Java que transforma cdigo fuente en cdigo mquina.
d) Interpreta el bytecode (.class) de un programa Java y lo transforma en cdigo mquina.

3. La memoria principal de un ordenador est compuesta por la combinacin de:


a) Memoria RAM y memoria virtual .
b) Memorias ROM y RAM .
c) Discos duros, unidades extraibles .
d) Memoria cach de niveles 1 y 2 .

4. En la prctica realizada este ao, qu relacin existe entre las clases Tren y Vagn?
a) Composicin.
b) Herencia.
c) Abstraccin.
d) Encapsulacin.

5. En la prctica realizada este ao, para dibujar la carga de un vagn en funcin de su peso
sera necesario modificar el mtodo Draw de la clase:
a) Tren.
b) Vagn.
c) Figura.
d) Locomotora.

6. Indique cul de las siguientes afirmaciones es correcta:


a)
b)
c)
d)

Pueden existir mltiples objetos a partir de una misma clase.


Pueden existir mltiples clases a partir de un mismo objeto.
Por cada clase puede existir un nico objeto.
Los conceptos clase y objeto son equivalentes.

7. Se tiene un sistema informtico en JAVA para la gestin de una tienda, compuesto por una
clase Tienda y otra clase Cliente de la que heredan dos: ClienteHabitual y
ClienteEspordico. Si quisiramos disponer de una lista de Clientes, dnde sera correcto
incluirla?
a)
b)
c)
d)

En la clase cliente
En la clase Tienda
En cualquiera de las clases que heredan de Cliente
No sera posible la inclusin de listas con el diseo dado.

8. Si existe cdigo duplicado en dos clases diferentes, indique el mecanismo que utilizaria en
Java para evitar el problema:
a) Composicin de clases.
b) Polimorfismo.
c) Herencia.
d) Estructuras de control.

9. Qu secuencia numrica imprimira el siguiente cdigo?


...
for(inti=0;i<10;i=i+2){
if(i>2){
System.out.println(i);
}
}

a) 0, 2, 4, 6, 8.
b) 0, 2.
c) 4, 6, 8.
d) 4, 6, 8, 10.

10. La finalidad de los mtodos de acceso (get) a campos (atributos) en una clase JAVA es:
a) Dar informacin sobre el estado del objeto a otras clases.
b) Modificar los campos de una clase.
c) Permitir que las clases hijas hereden los campos.
d) Redefinir el tipo de los campos.

Apellidos.....Nombre..DNI...

SegundaParte:Problema
Partiendo del siguiente diagrama de clases:

Se desea disear un gestor para la compra de billetes de tren. Dicho gestor almacenar todos los
trenes disponibles en un momento dado y permitir la adquisicin de billetes para un tren dado su
destino. Cada tren se caracteriza por su destino y por los vagones que lo componen. Cada vagn
tiene un lmite de plazas y un nmero de plazas libres. Cada billete tendr asociados un nombre y un
DNI correspondientes a su comprador.
a) (1,5 Puntos) Dado el diagrama, completar la clase tren para que sea coherente con el diseo
y adems proporcione mtodos para saber el nmero de plazas totales en un tren, las
ocupadas, las libres y adems incluya un mtodo adquirirPlaza.
b) (1,5 Puntos) Extender el diagrama para incluir el Gestor de Billetes y los Billetes. Para
comprar un billete a travs del gestor es necesario un mtodo que permita especificar el
destino, de forma que se pueda identificar el tren correspondiente para comprobar si existen
plazas libres, y en su caso, adquirir una. Dicho mtodo devolver un objeto de la clase
Billete.
c) (1 Punto) Describa de forma ordenada cmo se buscara un tren con un destino concreto
segn su diseo, especificando la clase o clases dnde se realizara dicha bsqueda y las
estructuras de control que sera necesario utilizar.
d) (1 Punto) Dado un tren concreto, describa de forma ordenada el proceso que llevar a cabo
el mtodo adquirirPlaza (buscar una plaza libre en el tren y ocuparla), especificando las
estructuras de control necesarias en cada paso y las llamadas a mtodos que seran
necesarias.

Solucin febrero de 2009 - Primera semana (TIPO A):


1 c), 2 c), 3b), 4 a), 5b), 6a) -se admite tambin como
correcta 6 c)-, 7b), 8c), 9 c), 10 a)

FEBRERO 2009 Segunda Semana


TIPO A

mod II

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Responda el test en una hoja de lectura ptica. No olvide rellenar en dicha hoja el cdigo de
carrera, el de la asignatura y el tipo de examen.
Resuelva el Problema en el cuadernillo indicando su nombre y el Centro Asociado en el que ha
realizado la prctica.
Entregue la hoja de lectura ptica, enunciados y el cuadernillo completo.

Primera Parte: Test


1. Qu elemento NO afecta a la velocidad a la que se ejecuta un programa?
a) La frecuencia de reloj de la placa madre.
b) La memoria cach.
c) La memoria RAM disponible.
d) La bios.

2. La mquina virtual de JAVA es:


a) Un traductor de codigo intermedio a codigo objeto.
b) Un sistema operativo independiente de plataforma.
c) Un gestor de memoria.
d) El mecanismo que permite la herencia.

3. Indica cul de los siguientes programas de control no son componentes de un sistema


operativo :
a) Cargador de mdulos (System Loader)
b) Traductores (compiladores e intrpretes)
c) Controlador de trabajo (Job Control)
d) Administracin de memoria.

4. En la prctica realizada este ao, cuntos vagones puede llegar a tener un tren?
a) Un nmero ilimitado.
b) Un nmero constante.
c) Uno por cada tipo de carga.
d) Depende de la potencia de la locomotora.

5. En la prctica realizada este ao, a los mtodos de la clase Pizarra se accede desde las
clases hijas de:
a) Figura.
b) Vagn.
c) Locomotora.
d) Tren.

6. Considerando la instanciacin c = new Casa(), y sabiendo que la clase Casa tiene un


mtodo definido como public int getSuperficie(), indique cul de las siguientes sentencias
devolvera la superficie de una casa concreta:
a)
b)
c)
d)

Casa.getSuperficie();
Casa().getSuperficie();
getSuperficie(c);
c.getSuperficie();

7. Cuando una clase tiene como atributo (campo) una lista de objetos de otra clase decimos
que entre ambas existe una relacin de:
a) Herencia.
b) Abstraccin.
c) No existe ninguna relacin.
d) Composicin

8. Cual de estas siguientes afirmaciones es FALSA. El mecanismo de herencia permite:


a) Reutilizar programas sin tocar su cdigo (extensibilidad).
b) Reducir la cantidad de cdigo redundante al disear un sistema.
c) Eliminar campos de una clase previamente implementada.
d) Crear una clase similar a otra previamente implementada pero con nuevos campos y mtodos.

9. Que secuencia de valores imprimira el siguiente cdigo?


...
intj=0;
for(inti=1;i<3;i++){
do{
intj=j+3;
System.out.println(j);
}while(j<10);

a)
b)
c)
d)

3,6,9,12
1,3,6,10,15
0,1,3,6
1,2,4,8

10. Una variable local es:


a) La que se define fuera de los mtodos y no es visible desde otras clases.
b) La que se define en el encabezado del mtodo.
c) La que se define dentro de un mtodo.
d) La que se define fuera de los mtodos y es visible desde otras clases.

Apellidos& & & & & & & & & & & & & & & & ..Nombre& & & & & & & & ..DNI& & & ...& &

SegundaParte:Problema
Unaempresadelogsticaquiereinformatizarsuactividad.Estaempresasededicaalaorganizacin
ydistribucindeflujosdemercancasporvaterrestre,enparticular,porferrocarril.
Se deber poder tratar un conjunto de solicitudes de clientes, cada una de las cuales deber tener un
identificador de cliente, un tipo de carga contratada y la cantidad que se quiere transportar.
A partir de cada solicitud, se deber fletar un tren (en nuestro caso, esto es instanciar un objeto de la
clase Tren) para el transporte de esa mercanca, con un nmero de vagones que depender de la
cantidad y tipo de mercanca a transportar. Al igual que en la prctica de este ao, cada tren est
formado por una locomotora y un conjunto de vagones.
Sepide:
1. (1,5puntos) ApartirdelaclaseTrenmostradaenlafigura,representareldiagramade
clasesnecesarioparallevaracabolasaccionesdescritasenelenunciado.Noesnecesario
especificarlasclasesLocomotorayVagn,nisusmtodos.Portanto,debernindicarseto
dosloscamposymtodosnecesariossloenlaclaseoclasesquesedefinan.

2. (2puntos)Expliqueendetallecmodeberaimplementarseunmtodocapazdeaccederal
conjuntodesolicitudesquesetenganalmacenadasenunmomentodado,eirfletandotrenes
conlascaractersticasrequeridasencadacaso.
3. (1'5puntos)Crearlosobjetosyhacerlasllamadasnecesariasparainstanciardossolicitudes
(Pepequieredesplazar5000kgdemaderayJuandeseaenviar6000Kgdehierro),ascomo
gestionlas,esdecir,fletartrenesquepuedanrealizarambostransportes.

Solucin febrero de 2009 - Segunda semana (TIPO A):


1d), 2a), 3b), 4d), 5a), 6d), 7d), 8c), 9a), 10c)
NOTA: Se ha detectado una errata en la pregunta 9 del test.
A efectos de calificacion se ha considerado la opcin a) como correcta,
pero cualquier otra opcin NO se ha considerado como error.

FUNDAMENTOS DE INFORMTICA Junio 2012 - 1

IE_1s

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Resuelva el Problema en una hoja aparte (mximo 2 caras), indicando su nombre y DNI.
TIPO A

Primera Parte: Test


1. Indique cul de las siguientes afirmaciones, relativas a la BIOS de un PC, es
correcta:
a. Contiene el men de seleccin de los sistemas operativos instalados en la mquina.
b. Es el componente hardware donde se guarda la informacin de las cuentas de usuario de la
mquina.
c. Contiene informacin sobre la configuracin y arranque de la mquina.
d. Es el componente hardware donde los sistemas operativos guardan su configuracin.
2. Tenemos varios programas ejecutando simultneamente en una mquina. Queremos que una de
las ejecuciones tenga preferencia sobre la otra. Para ello, tendramos que configurar:
a. el sistema operativo.
b. el compilador.
c. el ensamblador.
d. la BIOS.
3. Indica cul de las siguientes afirmaciones es correcta:
a. En las llamadas Redes de Difusin (tambin llamadas Redes Multipunto) es necesario que se
fije qu camino seguir la informacin para poder ser recibida en el punto de destino, ya que
para ir desde un nodo origen a un nodo destino existen mltiples caminos.
b. En las llamadas Redes de Conmutacin de Circuitos (tambin llamadas Redes Punto a
Punto)
un equipo emisor manda la informacin a la red a travs de su tarjeta
y, en este caso, se dispone de un nico camino entre el origen y el destino .
c. En las llamadas Redes de Conmutacin de Paquetes la informacin se divide en fragmentos
que se envan a la red, de modo que circulan por ella hasta que llega a su destino.
d. En las llamadas Redes de Difusin (tambin llamadas Redes Multipunto) la informacin se
divide en fragmentos que se envan a la red, de modo que circulan por ella hasta que llega a
su destino.
4. En la prctica obligatoria, qu mecanismo se utiliza para que todos los tipos de notas
escriban sus caractersticas particulares (ttulo, comentarios, etc.) por pantalla?
a. Composicin.
b. Polimorfismo.
c. Excepciones.
d. Ninguno, lo hace nicamente la clase Nota.
5. Qu tipos de acceso puede tener el atributo de una clase?
a. Public, associated, protected.
b. Public, private, associated.
c. Public, private, protected.
d. Private, protected, associated.

6. Indica cul de las siguientes afirmaciones, relativas a la sobreescritura de mtodos, es correcta:


a. Cuando se sobreescribe un mtodo en Java, se ejecuta la definicin ms baja en la jerarqua
de herencia respecto al objeto al que pertenece el mtodo.
b. Cuando se sobreescribe un mtodo en Java, se ejecuta la definicin ms alta en la jerarqua
de herencia respecto al objeto al que pertenece el mtodo.
c. Un mtodo en Java no puede reescribirse.
d. Un mtodo en Java slo puede reescribirse si antes ha sido definido como final.
7. Indique cul de las opciones siguientes se correspondera con la salida del siguiente cdigo:
for (int i=1;i<3;i++){
for (int j=1; j<4;j++){
System.out.print(j);
}
System.out.print(i);
}

a. 11322333
b. 12112212
c. 12311232
d. 23134245
8. Si queremos aadir un nuevo dato "Fecha de trmino de contrato" a una clase "Empleados",
es necesario modificar las clases ya implementadas?
a S, si queremos asegurar la consistencia.
b No. Podramos extender la clase "Empleado" con un nuevo atributo o campo.
c S, pero tendramos que aplicar herencia.
d No. Siempre bastara con modificar los parmetros de entrada.
9. Una variable polimrfica:
a. no puede ser accedida desde fuera de la clase.
b. puede contener objetos del tipo declarado o de cualquier subtipo de ste.
c. slo puede ser accedida desde un mtodo de la misma clase.
d. no puede ser accedida por ms de una clase.
10. Indica cul de las siguientes afirmaciones en Java es FALSA:
a. Una clase padre es una clase a partir de la cual se crea otra clase mediante el mecanismo de
herencia.
b. Una clase hija es una clase creada a partir de otra clase mediante el mecanismo de herencia.
c. Una clase padre asume los campos y mtodos del conjunto de sus subclases.
d. Una clase hija hereda los campos y mtodos de una superclase.

Apellidos.....Nombre..DNI...

Segunda Parte: Problema


Se desea implementar un gestor de pedidos para una fbrica de aceitunas y encurtidos. Esta fbrica
ofrece 2 productos: aceitunas negras y aceitunas verdes, donde las ltimas pueden ser con sabor
anchoa o no. Cada producto de un pedido est formado por la cantidad de botes que se piden,
existiendo nicamente tres tipos de botes de 100gr., 500gr y 1 kg., respectivamente. Cada pedido
est identificado por la fecha en la que se realiza, un identificador de pedido (compuesto por un
nmero) y la lista de productos que se solicitan. Se requiere que el gestor sea capaz de:
1. Aadir un nuevo pedido.
2. Eliminar un pedido completo, para lo que necesitaremos el identificador del pedido.
3. Mostrar por pantalla los pedidos realizados en una determinada fecha.
NOTA: podemos asumir que existe una clase Fecha, cuyo constructor es
Fecha(String fecha), donde el parmetro representa la fecha como un String. Esta clase
contiene un mtodo cuya signatura es boolean esIgual(Fecha fecha), que devuelve cierto
en caso de que las fechas sean iguales y falso en caso contrario.
Antes de comenzar a responder lea con atencin todos los apartados. Se pide:
1. (4 puntos) Dibujar un esquema con las clases necesarias para realizar este gestor de pedidos,
indicando los atributos y mtodos que tiene cada una de ellas (slo indicarlos, sin escribir su
cdigo), aplicando los principios de la programacin orientada a objetos.
SOLUCIN
Pedido

GestorPedidos

private int id
private Fecha fecha
private List<Producto> productos
/* metodos set y get de los
atributos */

Producto

/* metodos set y get de los


atributos */

AceitunasNegras

private boolean saborAnchoa


/* metodos set y get de los
atributos */

public void aadir(Pedido pedido)


public boolean eliminar(int id)
public void mostrarPedidos(Fecha fecha)

enumeration

private TipoEnvase envase


private int cantidad

AceitunasVerdes

private List<Pedido> pedidos

/* metodos set y get de


los atributos */

TipoEnvase
100gr
500gr
1kg

2. (4 puntos) Supongamos ahora que la fbrica desea ampliar los productos que ofrece con uno
nuevo denominado Encurtidos, ste tiene las mismas caractersticas que el resto excepto que pueden
ser picantes o no. Explicar justificadamente qu debera realizarse para que, sin modificar el gestor,
se permita realizar pedidos que incluyan el nuevo producto ofrecido.
SOLUCIN
Pedido

GestorPedidos

private int id
private Fecha fecha
private List<Producto> productos

private List<Pedido> pedidos


public void aadir(Pedido pedido)
public boolean eliminar(int id)
public void mostrarPedidos(Fecha fecha)

/* metodos set y get de los


atributos */

Producto

enumeration

TipoEnvase

private TipoEnvase envase


private int cantidad

100gr
500gr
1kg

/* metodos set y get de los


atributos */

AceitunasVerdes

AceitunasNegras

private boolean saborAnchoa


/* metodos set y get de los
atributos */

Encurtido
private boolean picante

/* metodos set y get de


los atributos */

* metodos set y get de


los atributos */

Para solucionar este apartado utilizaremos la herencia. De este modo, crearemos una nueva clase
Encurtido que al ser otro tipo de producto y, por tanto, compartir parte de sus atributos y
funcionalidad, heredar de la propia clase Producto.
3. (2 punto) Escribir el cdigo del mtodo que nos permite mostrar por pantalla todos los pedidos
de una determinada fecha.
SOLUCIN
public void mostrarPedidos(Fecha fecha) {
for (Pedido p : this.pedidos) {
if (p.getFecha().esIgual(fecha) {
System.out.println(p.toString());
}
}
}

FUNDAMENTOS DE INFORMTICA Junio 2012 - 2


Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Resuelva el Problema en una hoja aparte (mximo 2 caras), indicando su nombre y DNI.
TIPO A

Primera Parte: Test


1. La memoria cach funciona sobre el principio de:
a. una memoria de acceso rpido pero ms pequea para datos usados con frecuencia.
b. una memoria de acceso lento pero ms grande para grandes tamaos de datos.
c. una memoria de acceso robusto ante fallos para procesos crticos.
d. una memoria con un sistema operativo independiente.
2. Indica cul de las siguientes no es funcin del Sistema Operativo:
a. Control de errores
b. Control de concurrencia.
c. Control de seguridad
d. Control de depuracin de programas.
3. La programacin orientada a objetos se caracteriza porque:
a. no requiere proceso de compilacin.
b. no requiere sistema operativo.
c. permite reutilizar cdigo.
d. es la ms rpida en tiempo de ejecucin.
4. En la prctica obligatoria, la clase GestorLibretas:
a. hereda de la clase Libreta.
b. se compone de elementos de la clase Libreta.
c. se compone de elementos de la clase Nota.
d. es padre de la clase Libreta, es decir, Libreta hereda de ella.
5. Indique cul de las siguientes afirmaciones es correcta:
a. El tipo de dato de los campos se define en los objetos.
b. Todos los objetos de una misma clase tendrn los mismos campos.
c. Todos los objetos de una misma clase tendrn los mismos valores en sus campos.
d. No todos los objetos de una clase tendrn los mismos mtodos.
6. Puede un mtodo llamar a otro mtodo de la misma clase?
a. Slo si la clase est definida como "public".
b. Slo si la clase est definida como "private".
c. Siempre puede llamarse a un mtodo de la misma clase.
d. Siempre que se instancie un nuevo objeto de la misma clase.

IE_2s

7. El mecanismo denominado polimorfismo en un mtodo en Programacin Orientada a Objetos


permite:
a. el almacenamiento de objetos en otros objetos.
b. la creacin de una nueva clase como extensin de otra.
c. que el mismo mtodo pueda invocar en diferentes momentos diferentes mtodos.
d. clases abstractas sin implementacin.
8. Indique cul de las opciones siguientes se correspondera con la salida del siguiente cdigo
int
i=0;
while (i<3){
for (int j=0; j<3; j++){
System.out.print(i+j);
}
i++;
}

a. 123234345
b. 000102101
c. 001020011
d. 012123234
9. Teniendo en cuenta el siguiente cdigo:
public class Animal {
private int patas;
private void setPatas(int p) {
patas = p;
}
}
public class Perro extends Animal {
public Perro(int p){
super.setPatas(p);
}
}

Indique cul de las siguientes afirmaciones es correcta:


a. Todos los objetos que se creen de la clase Animal tendrn las mismas patas que los que se
creen de la clase Perro.
b. Todos los objetos de la clase Perro tendrn las mismas patas que los objetos de la clase
Animal.
c. El cdigo es incorrecto porque no podemos acceder al mtodo setPatas porque est declarado
como private.
d. El cdigo es correcto porque el mtodo setPatas est declarado como private y puede ser
accedido desde las clases que hereden de la clase Animal.
10. En el diseo de un programa JAVA relativo a vehculos, existen coches, motos y autobuses.
Todos ellos tienen algn atributo que no comparten con ningn otro vehculo. Se puede aplicar
herencia?
a. No, dado que ninguno de los tres vehculos puede ser padre del resto.
b. No, dado que no se puede extender atributos de un vehculo a otro.
c. S, definiendo una clase abstracta como clase padre.
d. S, aplicando composicin entre los vehculos.

Apellidos.....Nombre..DNI...

Segunda Parte: Problema


Se desea desarrollar un programa informtico que permita la gestin y control de la compra-venta
de inmuebles. Cada inmueble tendr un precio, un tamao expresado en metros cuadrados y un
campo de texto asociado en el que se describan sus principales caractersticas.
Por cada inmueble se desea almacenar informacin relativa al vendedor y posibles compradores
(usuarios que manifiestan su inters por el inmueble). Deber poderse guardar informacin relativa
a sus datos personales (nombre, apellidos y DNI).
La aplicacin deber ser capaz de:
1. Devolver los inmuebles que un determinado vendedor tiene a la venta, as como la de los
inmuebles que han sido objeto de inters por parte de un determinado comprador.
2. Devolver los inmuebles que han sido objeto de inters por parte del conjunto total de
compradores.
Antes de responder lea con atencin todos los apartados. Se pide:
a)[4 puntos]. Realice un diagrama de clases capaz de cubrir el total de requisitos especificados en el
enunciado, indicando los atributos y mtodos que tiene cada clase (slo indicarlos, sin escribir su
cdigo) y siguiendo los principios de la Programacin Orientada a Objetos.
SOLUCIN

GestorInmuebles
Inmueble

private List<Inmueble> inmuebles


private List<Usuario> compradores
private List<Usuario> vendedores

private int precio


private int metros2
private String caracteristicas
private Usuario vendedor
private List<Usuario> compradores

public List<Inmueble> inmueblesComprador(Usuario comprador)


public List<Inmueble> inmueblesVendedor(Usuario vendedor)
public List<Inmueble> inmueblesCompradores()
/* necesitara mtodos para aadir inmuebles, compradores y
vendedores */

/* metodos set y get de los atributos */

Usuario
private String nombre
private String apellidos
private String dni
/* metodos set y get de los
atributos */

b)[4 puntos]. Describa, sin implementar el cdigo pero indicando las llamadas a mtodos en cada
clase y su funcionalidad (incluyendo las estructuras de control necesarias, iteraciones sobre listas,
etc.), cmo se implementara el mtodo capaz de devolver la lista de inmuebles que han sido objeto
de inters por parte de algn comprador.
SOLUCIN
En primer lugar deberamos invocar el correspondiente mtodo de la clase GestorInmuebles.
Dicho mtodo recorrer la lista de inmuebles que tiene almacenada, para lo cual utilizar una
estructura for, recorriendo la lista completamente. Dentro del bucle for, obtendremos un objeto
inmueble concreto y mediante el uso de una estructura if comprobaremos si la lista de
compradores de dicho inmueble est vaca o no. Es decir, en la condicin del if invocaremos el
mtodo getCompradores de la clase inmueble y sobre la lista de compradores que nos devuelva
invocaremos el mtodo size() para comprobar si su tamao es distinto de cero.
En caso afirmativo, es decir, el tamao de la lista es distinto de cero, quiere decir que existe algn
posible comprador y por tanto ese inmueble tenemos que almacenarlo en una lista auxiliar de
inmuebles que ser la que al finalizar este mtodo devolveremos.
En otro caso, si la lista de compradores es cero, no haremos nada y seguiremos comprobando el
siguiente inmueble.
Al finalizar el bucle for, tendremos todos los inmuebles que tienen algn comprador almacenados
en una lista que habremos creado al comienzo de la ejecucin y en este punto ejecutaremos el
comando return devolviendo dicha lista de inmuebles.
c)[2 puntos]. Se desea incluir un nuevo tipo de inmuebles, los chalets. La diferencia es que en este
caso se dispone de una parcela. Cmo habra que modificar el diseo para cubrir este nuevo tipo de
inmueble con el menor nmero de cambios posibles?
SOLUCIN
GestorInmuebles
Inmueble

private List<Inmueble> inmuebles


private List<Usuario> compradores
private List<Usuario> vendedores

private int precio


private int metros2
private String caracteristicas
private Usuario vendedor
private List<Usuario> compradores

public List<Inmueble> inmueblesComprador(Usuario comprador)


public List<Inmueble> inmueblesVendedor(Usuario vendedor)
public List<Inmueble> inmueblesCompradores()
/* necesitara mtodos para aadir inmuebles, compradores y
vendedores */

/* metodos set y get de los atributos */

Chalet
private int parcela
/* metodos set y get de los
atributos */

Usuario
private String nombre
private String apellidos
private String dni
/* metodos set y get de los
atributos */

Para solucionar este apartado utilizaremos la herencia. De este modo, crearemos una nueva clase
Chalet que al ser otro tipo de inmueble y, por tanto, compartir parte de sus atributos y
funcionalidad, heredar de la propia clase Inmueble inicial.

FUNDAMENTOS DE INFORMTICA 2012 Junio 1 A MEC


Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Resuelva el Problema en una hoja aparte (mximo 2 caras), indicando su nombre y DNI.
TIPO A

Primera Parte: Test


1. Indique cul de las siguientes afirmaciones es correcta:
a. La memoria SRAM (Static RAM) es ms rpida que la memoria DRAM (Dynamic RAM)
b. La memoria DRAM (Dynamic RAM) es ms rpida que la memoria SRAM (Static RAM)
c. La memoria virtual es ms rpida que la memoria SRAM (Static RAM).
d. La memoria virtual es ms rpida que la memoria DRAM (Dynamic RAM).
2. La mquina virtual de JAVA:
a. ejecuta cdigo en JAVA.
b. ejecuta cdigo intermedio (Bytecode).
c. ejecuta cdigo mquina.
d. No ejecuta. Slo compila.
3. Indicar cul de las siguientes funciones NO es propia de un sistema operativo:
a. Control de la ejecucin de programas.
b. Gestin de permisos y de usuarios.
c. Impresin y escaneado.
d. Administracin de perifricos.
4. En la prctica obligatoria, la relacin entre una libreta y las notas que contiene es de:
a. herencia.
b. composicin.
c. polimorfismo.
d. sobrecarga.
5.Es correcto el siguiente cdigo?
public class B {
private int total;
public int B() {
return total;
}
}

a. No, ya que un mtodo no puede llamarse igual que la clase si no es el constructor.


b. S, es correcto.
c. No, ya que no est inicializado el campo total.
d. No, porque no podemos acceder al campo total en el mtodo B ya que est declarado
como private.

IE_1s

6. La declaracin de atributos de tipo privado sirve para:


a. evitar que stos sean accedidos desde el cdigo de otras clases.
b. evitar que mtodos no privados accedan a ellos.
c. fijar qu atributos son inicializados por el constructor por defecto.
d. definir atributos de clase.
7. Si en la signatura de un mtodo aparece la palabra void significa..
a. que el mtodo no puede ser invocado desde otra clase.
b. que el mtodo devuelve un tipo de datos desconocido.
c. que el mtodo no devuelve ningn resultado.
d. que el mtodo es esttico.
8. Indique cul de las opciones siguientes se correspondera con la salida del siguiente cdigo:
int j=0;
for (int i=3;i<5;i++){
do{
System.out.print(i+j);
j++;
}while (j<3);
}

a.
b.
c.
d.

345
357
3457
345456

9. Indica, a partir de la siguiente definicin, cul de las siguientes afirmaciones es correcta:


public class A extends B

a. Las clases A y B son equivalentes


b. La clase A hereda de B
c. La clase B hereda de A
d. La clase A se compone de B.
10. Indica cul de las siguientes afirmaciones es correcta:
a. El polimorfismo en Java permite manipular un objeto como si ste fuera de una clase ms
general.
b. El polimorfismo en Java permite manipular un objeto como si ste fuera de una clase ms
especfica.
c. La composicion de objetos en Java permite manipular un objeto como si ste fuera de una
clase ms general.
d. La composicion de objetos en Java permite manipular un objeto como si ste fuera de una
clase ms especfica.

Apellidos.....Nombre..DNI...

Segunda Parte: Problema


Se desea disear un sistema simplificado para gestionar los gastos de los clientes de un Hotel. El
cliente podr realizar diferentes gastos que luego se incluirn en la factura final. Estos gastos se
pueden realizar en diferentes zonas del Hotel (restaurante, piscina, spa, etc.) cada una de las cuales
dispondr de un terminal de venta (TPV) para registrar dichos gastos.
Para ello, se han de cubrir las siguientes funcionalidades:
1. Un cliente ha de poder reservar una habitacin, momento en el cual se introducen sus datos
en el sistema.
2. Un Cliente tiene asociados su nombre, apellidos, DNI y nmero de habitacin. En nuestro
sistema un Cliente slo estar asociado a una habitacin.
3. El Hotel tendr diversos terminales de venta (llamados TPV). El sistema gestor debe
funcionar independientemente del nmero de TPVs que se utilicen.
4. Cada uno de los TPVs deber almacenar una serie de gastos de los clientes.
5. Un Gasto asocia una cantidad de dinero con un Cliente del Hotel.
6. El Gestor debe poder acceder a todos los gastos del Cliente y presentar la cantidad total
adeudada por el cliente.
Lea atentamente el ejercicio completo antes de comenzar a contestar las preguntas. Se pide:
a) (4 Puntos) Realice el esquema de clases correspondiente al sistema que se desea implementar.
Indique claramente relaciones, atributos y mtodos en cada clase.
SOLUCIN
GestorHotel
TPV
private String zona
private List<Gasto> gastos
public void aadirGasto(Gasto g)
/* metodos set y get de los atributos */

private List<TPV> tpvs


private boolean[] habitaciones
private List<Cliente> clientes
public GestorHotel(int habitaciones)
public int gastosCliente(Cliente c)
public void imprimirEstadoHabitaciones()

Cliente
Gasto
private Cliente cliente
private int importe
/* metodos set y get de los
atributos */

private String nombre


private String apellidos
private String dni
private int habitacion
/* metodos set y get de los
atributos */

b) (3 Puntos) Describa, sin implementar el cdigo, pero indicando las llamadas a mtodos en cada
clase y su funcionalidad (incluyendo las estructuras de control necesarias, iteraciones sobre listas,
etc.), cmo se calcularan los gastos de un cliente cuando ste deja el Hotel. (1,5 puntos)
SOLUCIN
Para calcular los gastos de un cliente lo primero que debemos hacer es invocar el mtodo
correspondiente de la clase GestorHotel (gastosCliente(Cliente c)).
En el cuerpo de este mtodo recorreremos la lista de TPVs que tiene el hotel, para ello utilizaremos
un bucle for, ya que deseamos recorrer la lista entera.
Dentro del bucle debemos recorrer la lista de gastos que tiene almacenada cada TPV, para lo cual
utilizaremos otro bucle for anidado en el bucle anterior. De esta manera, comprobaremos
mediante el uso de una estructura if, si existe algn gasto en dicho TPV realizado por el cliente que
estamos comprobando.
En caso afirmativo, si en la lista de gastos existe un gasto de este cliente, obtendremos el importe
del gasto y lo almacenaremos en una variable auxiliar que nos permitir guardar el total de todos
los gastos realizados por el cliente en todos los TPVs.
Al finalizar los dos bucles, que nos permiten recorrer los TPVs y los gastos de un TPV,
devolveremos el gasto total almacenado en la variable auxiliar, mediante la instruccin return.
c) (3 Puntos) Describa, sin implementar el cdigo, pero indicando las llamadas a mtodos en cada
clase y su funcionalidad (incluyendo las estructuras de control necesarias, iteraciones sobre listas,
etc.), cmo se podra obtener un listado de las habitaciones libres y ocupadas del Hotel. (1,5
puntos)
SOLUCIN
Esta funcionalidad se llevara a cabo en el mtodo imprimirEstadoHabitaciones() de la clase
GestorHotel.
Como podemos observer en la solucin propuesta, hemos modelado la lista de habitaciones como
un array de boolean, cuyo tamao ser el nmero de habitaciones del hotel, que como podemos
observar se indica como parmetro del constructor de la propia clase.
Esta solucin nos permite almacenar mediante un valor booleano el estado de cada habitacin, por
ejemplo asignando un true en las habitaciones que estn ocupadas. De esta forma, para obtener el
estado de las habitaciones, lo que deberamos hacer es, primero recorrer mediante un bucle for
todo el array de habitaciones y, segundo, acceder al valor de cada una de las posiciones de dicho
array, que corresponder con el nmero de habitacin y en caso de tener almacenado el valor true
mostraremos por pantalla que la habitacin est ocupada, o libre en caso de tener asignado en
dicha posicin el valor false.

FUNDAMENTOS DE INFORMTICA Junio 2012 2 A MEC

Elec_sem1_A

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Resuelva el Problema en una hoja aparte (mximo 2 caras), indicando su nombre y DNI.
TIPO A

Primera Parte: Test


1. Qu puerto permite transferir datos ms rpidamente de un dispositivo externo al disco duro?
a. Puerto paralelo.
b. Puerto FireWire 800.
c. Puerto USB 2.
d. Puerto Serie.
2. Un programa tiene que realizar clculos sobre una matriz de n*n nmeros almacenados en el
disco duro. Vemos que se ralentiza cuando n es demasiado grande. Para solucionarlo podramos:
a. aumentar la memoria del disco duro.
b. aumentar la memoria RAM.
c. aumentar la memoria ROM.
d. aumentar la memoria de la BIOS.
3. Indica cul de las siguientes afirmaciones es correcta.
a. Un compilador de C es un proceso.
b. Un programa se compone de un cdigo y un conjunto de datos, ambos cargados en la
memoria ejecutndose.
c. Un proceso es un programa en ejecucin.
d. El trmino proceso se refiere al cdigo fuente de un programa.
4. El planificador del sistema operativo:
a. planifica el uso de la memoria RAM.
b. planifica el uso de los perifricos.
c. planifica el uso de la informacin por parte de los usuarios.
d. planifica la ejecucin de los procesos.
5. En la prctica obligatoria, una Alerta:
a. hereda de la clase Fecha.
b. hereda de la clase Libreta.
c. hereda de la clase Nota.
d. hereda de la clase Hora.

6. Indica cul de las siguientes afirmaciones en Java es FALSA:


a. La composicin permite que atributos tomen como valor instancias de otras clases.
b. La herencia permite extender clases con nuevos atributos.
c. Puede existir herencia entre una clase y ella misma.
d. Puede haber composicin entre una clase y ella misma.
7. Indica, a partir de la siguiente declaracin, la expresin correcta en Java (asumiendo que existe
un mtodo public int getKm() en la clase:
Coche miCoche = new Coche();

a. Coche.getKm();
b. miCoche.getKm();
c. getKm(miCoche);
d. Coche.miCoche.getKm();
8. Que secuencia de valores imprimira el siguiente cdigo?

for

(int i=1;i<3;i++){
for (int j=1;j<=i;j++){
System.out.print(i);
System.out.print(j);
}

a. 11212
b. 12112
c. 11122
d. 11212
9. Qu clases pueden acceder a un campo declarado como protected?
a. No se puede acceder a un campo declarado como protected.
b. Slo la propia clase donde se declara.
c. Slo las clases que heredan de la clase donde se declara.
d. Las clases dentro del mismo paquete y las clases que heredan de la propia clase
donde se define.
10. Teniendo en cuenta el siguiente cdigo, y dada la clase Hombre que extiende la clase Persona a
travs de herencia, indique cul de las siguientes afirmaciones es correcta.
public class Persona {
private int edad;
}

a. Desde la clase Hombre se puede acceder al atributo edad para mostrar su valor.
b. Desde la clase Hombre se puede modificar el valor del atributo edad.
c. Desde la clase Hombre no se puede acceder al atributo edad.
d. No se puede extender la clase Persona porque no tiene constructor.

Apellidos.....Nombre..DNI...

Segunda Parte: Problema


Se desea implementar un sistema gestor encargado de la asignacin de pistas de aterrizaje a los
distintos vuelos que aterrizan en un aeropuerto. Un aeropuerto se identifica por su nombre y una
lista de pistas de aterrizaje que tiene a su disposicin. A su vez, cada pista de aterrizaje est
identificada por un nmero y tendr una lista de vuelos asignados que realizarn el aterrizaje en
ella. Por otro lado, cada vuelo est identificado por un cdigo (un nmero), tiene un origen, un
destino y una fecha de llegada (donde est incluida la hora). Existen 2 tipos de vuelos: comercial,
que adems de las caractersticas previas, tambin est identificado por la aerolnea a la que
pertenece y vuelos privados, que en lugar de una aerolnea requieren el nombre de la empresa o
persona duea del mismo. De esta manera, un aeropuerto debe permitir las siguientes
funcionalidades:
1. Aadir una pista de aterrizaje
2. Asignar una pista de aterrizaje a un vuelo
3. Mostrar los vuelos que van a aterrizar en una determinada pista en una fecha concreta.
NOTA: podemos asumir que existe una clase Fecha, cuyo constructor es Fecha(String fecha, String
hora), donde el primer parmetro representa la fecha como un String y el segundo la hora tambin
como un String. Un ejemplo de uso sera: new Fecha(9/6/2012, 10:00)
Antes de responder lea con atencin todos los apartados. Se pide:
a) (4 puntos) Disear el sistema especificado, representando el esquema de clases que muestre las
clases, atributos y mtodos (slo indicarlos, sin escribir su cdigo), as como las relaciones entre las
propias clases, aplicando los principios de la programacin orientada a objetos.
SOLUCIN
Aeropuerto

PistaAterrizaje

private String nombre


private List<PistaAterrizaje> pistas

private int id
private List<Vuelo> vuelos
public PistaAterrizaje(int id)
public boolean asignar(Vuelo vuelo)
/* metodos set y get de los atributos */

Vuelo
private int codigo
private String origen
private String destino
private Fecha fechaLlegada
public Vuelo(int codigo)
/* metodos set y get de los
atributos */

Comercial

Privado

private String aerolinea

private String dueo

/* metodos set y get de los


atributos */

/* metodos set y get de


los atributos */

public Aeropuerto(String nombre)


public void aadir(PistaAterrizaje pista)
public boolean asignarPista(vuelo Vuelo, int pista)
public void mostrarVuelos(int pista, Fecha fecha)

b) (2 punto) Escribir el cdigo necesario para crear un nuevo aeropuerto llamado Barajas, que
tiene 3 pistas de aterrizaje: pistas 1, 2 y 3. Adems, escriba el cdigo para crear un vuelo comercial
con cdigo 12, de la aerolnea IBERIA, con origen New York, destino Madrid y fecha de
aterrizaje el 9/6/2012 a las 10:02 horas y asgnelo al aeropuerto Barajas, en su pista de aterrizaje
2.
SOLUCIN
Aeropuerto barajas = new Aeropuerto(Barajas);
PistaAterrizaje pista1 = new Pista(1);
PistaAterrizaje pista2 = new Pista(2);
PistaAterrizaje pista3 = new Pista(3);
barajas.aadir(pista1);
barajas.aadir(pista2);
barajas.aadir(pista3);
Comercial vuelo1 = new Comercial(12);
vuelo1.setAerolinea(IBERIA);
vuelo1.setOrigen(New York);
vuelo1.setDestino(Madrid);
vuelo1.setFechaLlegada(new Fecha(9/6/2012, 10:02));
aeropuerto1.asignar(vuelo1, 2);
c) (4 puntos) Se desea ahorrar gastos, para lo que se ha decidido que los vuelos militares tambin
puedan aterrizar en los aeropuertos pblicos. Estos vuelos tienen las mismas caractersticas que el
resto de vuelos, excepto que requieren el pas al que pertenecen. Explicar justificadamente cmo
podra el sistema gestor asignar los vuelos militares a una pista de aterrizaje de un aeropuerto, sin
modificar las clases aeropuerto y pista de aterrizaje.
SOLUCIN
Aeropuerto

PistaAterrizaje

private String nombre


private List<PistaAterrizaje> pistas

private int id
private List<Vuelo> vuelos
public PistaAterrizaje(int id)
public boolean asignar(Vuelo vuelo)
/* metodos set y get de los atributos */

public Aeropuerto(String nombre)


public void aadir(PistaAterrizaje pista)
public boolean asignarPista(vuelo Vuelo, int pista)
public void mostrarVuelos(int pista, Fecha fecha)

Vuelo
private int codigo
private String origen
private String destino
private Fecha fechaLlegada
public Vuelo(int codigo)
/* metodos set y get de los
atributos */

Comercial

Privado

Militar

private String aerolinea

private String dueo

private String pais

/* metodos set y get de los


atributos */

/* metodos set y get de


los atributos */

* metodos set y get de


los atributos */

Para solucionar este apartado utilizaremos la herencia. De este modo, crearemos una nueva clase
Militar que representar a los vuelos militares y ya que comparte todas las caractersticas del resto
de tipos de vuelos, heredar de la propia clase Vuelo.

FUNDAMENTOS DE INFORMTICA Septiembre 2012 - 1

sept12-M1

Para calcular la nota del examen, el test supone el 30% y el problema el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Resuelva el Problema en una hoja aparte (mximo 2 caras), indicando su nombre y DNI.

Primera Parte: Test


1) Indique qu tipo de memoria permite un almacenamiento permanente:
a. La memoria RAM.
b. La memoria ROM.
c. La memoria SRAM.
d. La memoria DRAM.
2) Qu es un hub?
a. Es un bus de comunicaciones que permite compartir una red de datos o la conexin de
varios perifricos.
b. Es un dispositivo de distribucin de comunicaciones que permite compartir una red de
datos o la conexin de varios perifricos.
c. Es un protocolo de comunicacin que permite compartir una red de datos o la conexin de
varios perifricos.
d. Es un sistema de comunicacin unidireccional entre el computador y los perifricos
conectados a l.
3) La mquina virtual de JAVA se caracteriza por permitir la ejecucin de:
a. cdigo intermedio en diferentes sistemas operativos.
b. cdigo fuente en diferentes sistemas operativos.
c. codigo objeto JAVA sobre memoria virtual.
d. cdigo objeto JAVA en sistemas operativos multi-tarea.
4) Cul es la secuencia de pasos necesaria para la compilacin de un programa desde un cdigo
fuente a cdigo objeto?
a. Anlisis lxico, anlisis semntico y generacin del cdigo.
b. Anlisis lxico, anlisis semntico y anlisis sintctico.
c. Anlisis lxico, anlisis semntico, anlisis sintctico y generacin del cdigo.
d. Anlisis lxico, anlisis sintctico, anlisis semntico y generacin del cdigo.

5) Qu valor imprimira el siguiente cdigo?


int c=0;
for (int i=1;i<4;i++){
c=c+i;
}
System.out.println(c);

a. 3
b. 4
c. 5
d. 6
6) En la prctica obligatoria, la clase Nota:
a. hereda de la clase Libreta.
b. se compone de objetos de la clase Libreta.
c. se compone de Alerta, Libro, Pelcula y Discos.
d. es la clase de la que heredan Alerta, Libro, Pelcula y Disco.
7) Indique cul de las siguientes afirmaciones es correcta:
a. Una clase puede tener ms de un constructor, independientemente de sus parmetros.
b. Una clase nunca puede tener ms de un constructor.
c. Una clase puede tener ms de un constructor, siempre que sus parmetros sean distintos.
d. Slo las clases abstractas pueden tener ms de un constructor.
8) Dado el siguiente mtodo:
public void suma(int a, int b){
this.a=a+b;
}

a. Actualiza el campo a de la clase a la que pertenece el mtodo.


b. Modifica el parmetro de entrada a.
c. No compila por estar la misma variable a ambos lados del smbolo =.
d. Devuelve la suma de a y b a la clase que realiza la llamada al mtodo.
9) Dos clases contienen algunos mtodos y campos duplicados. Segn la metodologa de
orientacin a objetos, lo ms apropiado sera:
a. Eliminar una de las clases.
b. Establecer relaciones de herencia.
c. Establecer relaciones de composicin.
d. Definir una clase como campo de la otra.
10) Puede un mtodo llamar a mtodos de otros objetos?
a. S, usando la notacin de punto sobre el nombre de la clase a la que pertenece el objeto.
b. S, usando la notacin de punto sobre el nombre del objeto.
c. No, desde un mtodo slo se puede llamar a otros mtodos del propio objeto.
d. No, desde un mtodo nunca se puede llamar a otro mtodo.

Segunda Parte: Problema


Una empresa que vende piscinas quiere desarrollar una aplicacin informtica para la gestin de sus
ventas y beneficios. Esta empresa vende dos tipos de piscinas: de obra y autoportantes. En el primer
caso la depuradora podr ser de cloracin salina o convencional (cloro), y emplear siempre filtros
de arena. En el caso de las autoportantes, la depuracin siempre ser por medio de cloro y, en
este caso, podrn emplearse filtros de arena o de papel. Todas las piscinas, independientemente del
tipo que sean, tienen una capacidad y un precio de compra. La empresa vende las piscinas
aadiendo el porcentaje siguiente al precio de compra inicial:
- Piscina de obra: 25%
- Piscina autoportante: 10%
Realizar el diseo de la aplicacin de gestin de ventas para que, al menos, permita:
- Indicar el nmero total de piscinas vendidas.
- Listar el nmero total de piscinas autoportantes vendidas con filtro de arena.
- Calcular el total de ingresos obtenido por la venta de todas las piscinas, as como los beneficios
totales de la empresa obtenidos por la venta de las mismas.
Lea atentamente el ejercicio completo antes de comenzar a contestar las preguntas.
Se pide:
a) (4 puntos) Realice un diagrama de clases capaz de cubrir el total de requisitos especificados en el
enunciado, indicando los atributos y mtodos que tiene cada clase (slo indicarlos, sin escribir su
cdigo) y siguiendo los principios de la Programacin Orientada a Objetos.
SOLUCIN
Piscina

GestorPiscinas

private int capacidad


private int precioCompra
private static final int porcentaje = 25
protected TDepuracion depuracion

private List<Piscina> piscinasVendidas


private List<PAutoportantes> piscinasAutoportantesVendidas
public int totalPiscinasVendidas()
public void piscinasAutoportantesVendidasFiltroArena()
public int calcularIngresos()
public int calcularBeneficios()

/* metodos set y get de los atributos */


public int precioVenta()
enumeration

TDepuracion
salina
cloro
PAutoportante
private static final int porcentaje = 10
protected static final TDepuracion depuracion = cloro
protected TFiltro filtro
/* metodos set y get de los atributos */
public int precioVenta()

enumeration

TFiltro
arena
papel

b) (3 puntos) Escriba cmo se implementara un mtodo capaz de devolver el total de beneficios


que ha obtenido la empresa por la venta de piscinas autoportantes.
SOLUCIN
public int beneficiosPisicinasAutoportantes() {
int beneficios = 0;
for (PAutoportantes p : this.piscinasAutoportantesVendidas) {
beneficios += (p.getPrecioCompra() * (p.getPorcentaje() / 100));
}
return beneficios;
}

c) (3 puntos). Si ahora la empresa quisiera modificar el porcentaje de beneficio de las piscinas


autoportantes con filtro de arena del 10% al 15%, Cmo habra que modificar el diseo de la
aplicacin para cubrir esta nueva situacin? Razone su respuesta.
SOLUCIN
Piscina

GestorPiscinas

private int capacidad


private int precioCompra
private static final int porcentaje = 25
protected TDepuracion depuracion

private List<Piscina> piscinasVendidas


private List<PAutoportantes> piscinasAutoportantesVendidas
public int totalPiscinasVendidas()
public void piscinasAutoportantesVendidasFiltroArena()
public int calcularIngresos()
public int calcularBeneficios()

/* metodos set y get de los atributos */


public int precioVenta()
enumeration

TDepuracion
salina
cloro
PAutoportante
private static final int porcentaje = 10
protected static final TDepuracion depuracion = cloro
protected TFiltro filtro
/* metodos set y get de los atributos */
public int precioVenta()

enumeration

TFiltro
PAutoportanteArena

arena
papel

private static final int percentaje = 15


protected static final TFiltro filtro = arena
/* metodos set y get de los atributos */
public int precioVenta()

Para abordar los nuevos requisitos utilizaremos el mecanismo de herencia. Para ello crearemos
una nueva clase que representar a las piscinas autoportantes con filtro de arena que heredar de
la propia clase piscina autoportante (PAutoportante). En este caso redefiniremos su atributo filtro
para asignarle el valor arena, igualmente que el porcentaje de beneficios.

FUNDAMENTOS DE INFORMTICA

spet12-M2

Para calcular la nota del examen, el supone el 30% y el problema el 70%.


El test es eliminatorio y se necesitan 7 respuestas correctas para superarlo.
Resuelva el Problema en una hoja aparte (mximo 2 caras), indicando su nombre y DNI.

Primera Parte: Test


1) Con cul de las siguientes memorias NO se pierde la informacin una vez se apaga un
ordenador?
a. Memoria cach.
b. Memoria ROM.
c. Memoria virtual.
d. Memoria RAM.
2) Qu se entiende por dispositivos perifericos?
a. Programas auxiliares del sistema operativo.
b. Dispositivos independientes conectados a la CPU.
c. Puertos USB.
d. Componentes externos del compilador.
3) Cul de estas situaciones podemos descartar si se detiene la ejecucin de un programa JAVA?
a. La memoria RAM no es suficiente.
b. El sistema operativo ha relegado el proceso frente a otras tareas.
c. Un error de compilacin.
d. Un bucle sin condicin de terminacin.
4) Qu parte del sistema operativo se encarga de organizar la informacin en archivos y
directorios?
a. El gestor de memoria.
b. El sistema de ficheros.
c. La memoria virtual.
d. El gestor de entrada/salida.
5) Qu secuencia de valores imprimira el siguiente cdigo?

int n = 1;
for (int i=0; i<4; i++) {
System.out.print(i+n);
n++;
}
a. 0135
b. 1357
c. 1235
d. 1347

6) En la prctica obligatoria, el polimorfismo aparece en:


a. el mtodo que permite crear una nueva Libreta.
b. el mtodo que aade una Libreta al GestorLibretas.
c. el mtodo que establece el ISBN de un Libro.
d. el mtodo que escribe por pantalla una Nota.
7). Un mtodo declarado como private:
a. slo puede ser invocado desde la clase donde se define y sus hijas.
b. slo puede ser invocado desde la clase donde se define.
c. slo puede ser invocado desde las clases del paquete en el que est declarado.
d. slo puede ser invocado desde el constructor de la clase donde est definido.
8) Sin ms informacin a priori, cul sera la forma ms apropiada de modelar los mritos
acadmicos en un currculum?
a. Por composicin, definiendo un campo meritosAcademicos tipo Lista en la clase
Curriculum.
b. Por herencia, donde la clase MeritosAcademicos hereda de Curriculum.
c. Por composicin, mediante un campo meritosAcademicos tipo Array de tamao N.
d. Con un mtodo curriculum en la clase MeritosAcademicos.
9) Dos mtodos necesarios en una clase tienen parte de su cdigo duplicado. Segn la metodologa
de orientacin a objetos, lo ms apropiado en este caso sera:
a. Eliminar los mtodos y crear uno slo que realice las funciones de los dos.
b. Aadir nuevos mtodos que realicen las funciones solapadas.
c. Crear una clase hija para cada mtodo.
d. Definir los mtodos como privados.
10) Dadas las clases
public class A{
public int mult(int a,int b){
return a*b
}
}
public class B extends A {
public int mult(int a, int b, int c){
return mult(a,b)*c;
}
}

Qu devolvera el siguiente cdigo?


B b = new B();
System.out.println(b.mult(2,2,3));

a. Error, el mtodo mult ha sido sobreescrito y han de usarse 3 parmetros en la llamada.


b. Error, no pueden existir dos mtodos con el mismo nombre y diferente nmero de
parmetros.
c. El cdigo de la clase B provocara la ejecucin de un bucle infinito.
d. 12

Segunda Parte: Problema


Se desea implementar un simulador de una de una red P2P (peer-to-peer) para compartir ficheros.
Estas redes se caracterizan por estar compuestas por un conjunto de nodos, definidos por un
identificador formado por un nmero entero. Cada nodo, a su vez, dispone de un conjunto de
ficheros que desea compartir. Cada uno de los ficheros se identifica mediante un nombre y un
tamao (expresado en megas). Cada uno de los nodos tiene una lista de vecinos, que almacena los
nodos a los que puede realizar una peticin para descargarse un fichero. Teniendo en cuenta estos
requisitos, se desea que el simulador sea capaz de:
Aadir un nuevo nodo.
Eliminar un nodo, a partir de su identificador.
Mostrar por pantalla el identificador de los nodos que hay en el simulador.
Antes de comenzar a responder lea con atencin todos los apartados.
Se pide:
a) (4 puntos) Dibujar un esquema con las clases necesarias para realizar el simulador,
indicando los atributos y mtodos que tiene cada una de ellas (slo indicarlos, sin escribir su
cdigo), aplicando los principios de la programacin orientada a objetos.
SOLUCIN

Nodo
private int id
private List<Fichero> ficheros
private List<Nodo> vecinos
/* metodos set y get de los
atributos */

Fichero
private String nombre
private int tamao
/* metodos set y get de
los atributos */

Simulador
private List<Nodo> nodos
public void aadirNodo(Nodo n)
public boolean eliminarNodo(int id)
public void mostrarNodos()

b) (2 punto) Escribir el cdigo del mtodo que nos permite mostrar por pantalla el
identificador de los nodos que hay en el simulador.
SOLUCIN
public void mostrarNodos() {
for (Nodo n : this.nodos) {
System.out.println(n.getId())
}
}
c) (4 puntos) Supongamos que ahora deseamos ampliar el simulador. En concreto queremos
aadir el concepto de mensaje. Para ello, debemos tener en cuenta que los nodos envan
mensajes a sus vecinos; en concreto, pueden enviar dos tipos de mensajes distintos: mensajes
denominados Request (utilizados para pedir un fichero a sus vecinos) y mensajes denominados
Piece (utilizados para enviar un fichero). Todos los mensajes se caracterizan por: un
identificador formado por un nmero; un emisor, representado por un nmero que identifica al
nodo que enva el mensaje; y por un receptor, igualmente representado por un nmero que
identifica al nodo que recibir el mensaje. Los mensajes Request estn compuestos por el
nombre de un fichero que se desea solicitar, mientras que los mensajes Piece contienen el
fichero que se enva. Modifique el esquema de clases realizado en el apartado a) para tener en
cuenta esta nueva funcionalidad. Recuerde que deben aplicarse los principios de la
programacin orientada a objetos.
SOLUCIN

Nodo

Simulador

private int id
private List<Fichero> ficheros
private List<Nodo> vecinos

private List<Nodo> nodos


public void aadirNodo(Nodo n)
public boolean eliminarNodo(int id)
public void mostrarNodos()

public void enviar(Nodo vecino, Mensaje msg)


/* metodos set y get de los atributos */

envia

abstract

Mensaje
Fichero
private String nombre
private int tamao

private int id
private int emisor
private int receptor

/* metodos set y get de


los atributos */

/* metodos set y get de


los atributos */

contiene

Piece

Request

private Fichero fichero

private String nombreFichero

/* metodos set y get de


los atributos */

/* metodos set y get de los


atributos */

Como podemos observar, para solucionar este apartado hemos creado una clase abstracta
llamada Mensaje de la cual heredarn los dos tipos de mensajes que queremos tener en cuenta,
representados por las clases Piece y Request, respectivamente.

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para
superarlo.
Resuelva el problema en una hoja aparte (mximo 2 caras), indicando su
nombre y DNI.
Junio 2013 - 1 TIPO A

Primera Parte: Test


1. Un componente de almacenamiento permanente es aqul que mantiene la
informacin:
a.
b.
c.
d.

Durante la ejecucin de un programa.


Durante la compilacin de un programa.
Sin ser modificada en ningn momento.
Aunque el computador no est funcionando.

2. Las funciones principales de un sistema operativo se pueden resumir en las


siguientes:
a. Control de la ejecucin de programas, administracin de perifricos,
gestin de permisos y de usuarios, control de concurrencia y de
errores, administracin de memoria y control de seguridad.
b. Control de la ejecucin de programas, administracin de perifricos,
gestin de permisos y de usuarios, visualizacin de fotografas y
videos, administracin de memoria y control de seguridad.
c. Control de la ejecucin de programas, administracin de perifricos,
gestin de permisos y de usuarios, realizacin de video-llamadas,
administracin de memoria y control de seguridad.
d. Control de la ejecucin de programas, administracin de perifricos,
gestin de permisos y de usuarios, manejo de la agenda de
contactos, administracin de memoria y control de seguridad.
3. En la prctica de este curso la clase GestorTiradas dispone de un
mtodo que:
a. Permite modificar la ruta de acceso y el nombre del fichero asociado
a un cartel.
b. Permite modificar slo la ruta de acceso al fichero.
c. Permite modificar slo el nombre del fichero.
d. Ninguna de las anteriores.

4. En Java:
a. Est permitido definir varios mtodos con el mismo nombre siempre
que tengan diferentes parmetros de entrada.
b. Est permitido definir varios mtodos con el mismo nombre siempre
que stos sean constructores y tengan diferentes parmetros de
entrada.
c. No est permitido definir varios mtodos con el mismo nombre.
d. No est permitido definir varios mtodos con el mismo nombre, salvo
que sean de tipo 'static' y tengan diferentes parmetros de
entrada.
5. Qu secuencia imprimira el siguiente cdigo?
for (int i = 0; i < 3; i++) {
int j = 1;
do {
System.out.println(j);
j++;
} while (j <= 1);
System.out.println(i);
}
a. 101112
b. 202122
c. 021222
d. 021022
6. Si tenemos una clase A con un mtodo m1, cmo debemos definirlo para
que ste slo pueda ser invocado desde la misma clase A y desde las
subclases de la misma?
a. No se puede hacer eso, ya que en Java no se permite la herencia
mltiple.
b. El mtodo debe definirse con acceso protegido (protected).
c. El mtodo debe definirse con acceso pblico (public).
d. El mtodo debe definirse con acceso privado (private).

7. Nos descargamos de la red una clase ReservaEntradaTeatro en


formato .class con un mtodo imprimeEntrada. Queremos reutilizar
dicha clase, pero modificando el formato de la entrada impresa. Para ello
podemos:
a. Aplicar herencia y sobreescritura de mtodos.
b. Aplicar composicin aadiendo un nuevo mtodo en el
cdigo .class original.
c. Crear una nueva instancia de la clase.
d. No es posible. Es necesario implementar la clase completa de nuevo.
8. Cul es la diferencia principal en Java entre listas (List) y arrays (o
arreglos)?:
a. En Java no existen las listas.
b. Que el tamao de la lista est predefinido y no se pueden
redimensionar, mientras que los arrays s.
c. Que el tamao de los arrays est predefinido, mientras que las listas
no y, por tanto, pueden ser redimensionadas.
d. Un array sirve para almacenar tipos predefinidos, mientras que una
lista sirve para almacenar objetos.
9. Supongamos que reescribimos un mtodo de la clase padre en la clase hija
con distinto nmero de parmetros de entrada. Entonces:
a. Tendremos siempre un error en tiempo de ejecucin.
b. Se ejecutar el nuevo mtodo cuando se le llame con los parmetros
de entrada correspondientes.
c. Es incorrecto. Slo se puede reescribir un mtodo de la clase hija en
la clase padre.
d. Es incorrecto, dado que la reescritura de mtodos requiere una
relacin de composicin entre clases.
10. Cmo debera definirse un mtodo para que se pudiera acceder a l
desde una subclase de otro paquete?
a.
b.
c.
d.

Como 'public' o 'protected'


Como 'public' o 'static'
Como 'public' o 'private'
Como 'public' o 'default'

Apellidos.....NombreDNI..........

Segunda Parte: Problema


Una tienda de fotografa desea informatizar su negocio. En esta primera
versin desea realizar la gestin de sus pedidos on-line. En concreto, se
podrn realizar pedidos que incluyan dos tipos de producto: impresin de fotos
y cmaras fotogrficas. Un pedido estar identificado por la fecha, el cliente, el
nmero de tarjeta de crdito y la lista de productos que se piden.
Por otro lado, cada producto est identificado por un nmero. Adems, para el
caso particular de las impresiones, se desea almacenar si sta es a color, el
ancho y el largo (en cm.) y la lista de fotos que se quieren imprimir. En cuanto a
las cmaras, estn identificadas por la marca y el modelo.
Como ya hemos dicho anteriormente, en esta primera versin se desean
gestionar los pedidos, de manera que la aplicacin permita:

aadir nuevos pedidos;


eliminar un pedido realizado por un cliente en una fecha concreta; y
mostrar por pantalla todos los pedidos realizados por un cliente.

NOTA: Para resolver el problema se har uso de una clase denominada Foto,
definida por un constructor Foto(String fichero) y un mtodo print()
que muestra los datos de una foto.

Foto
public Foto(String fichero)
public void print()

Antes de comenzar a responder, lea con atencin todos los apartados. Se pide:
1. (5 puntos) Dibujar un esquema con las clases necesarias para realizar el
diseo del problema, indicando los atributos y mtodos que tiene cada una
de ellas (slo indicarlos, sin escribir su cdigo), aplicando los principios de
la programacin orientada a objetos.

SOLUCIN
1. y 3.
Pedido
private int id
private String cliente
private String fecha
private int tarjeta
private List<Producto> productos
public void print()
/* metodos set y get de los
atributos */

GestorPedidos
private List<Pedido> pedidos
public void aadir(Pedido pedido)
public boolean eliminar(String cliente,
String fecha)
public void mostrarPedidos(String cliente)

abstract

Producto
protected int id
public abstract void print()
/* metodos set y get de los
atributos */

ImpresionFotos
Foto
public Foto(String fichero)
public void print()

private boolean color


private int ancho
private int largo
private List<Foto> fotos
public void print()
/* metodos set y get de los
atributos */

Camara
private String marca
private String modelo
public void print()
/* metodos set y get de
los atributos */


2. (4 puntos) Escribir el cdigo necesario (en las clases que sea necesario)
para mostrar por pantalla todos los pedidos realizados por un cliente. De
manera que se muestren siguiendo el siguiente formato (los datos de las
fotos de una solicitud de impresin se mostrarn utilizando el mtodo
print() de la clase Foto):
Cliente: Pepito
Pedidos:
Fecha: 19/03/2013
Tarjeta: 12345678910
Productos:
Id: 13
Impresin de fotos
Color: si
Ancho: 13 cm
Largo: 18 cm
Fotos: Foto1.jpg, Foto2.jpg
Id: 14
Cmara fotogrfica
Marca: Nikon
Modelo: d5100

SOLUCIN

GestorPedidos:
public void mostrarPedidos(String cliente) {
System.out.println("Cliente: " + cliente);
for (Pedido p : this.pedidos) {
if (p.getCliente().equals(cliente)) {
p.print();
}
}
}



Pedido:
public void print() {
System.out.println("Fecha: " + this.fecha);
System.out.println("Tarjeta: " + this.tarjeta);
System.out.println("Productos:");
for (Producto p : this.productos) {
p.print();
}
}

Producto:

public abstract void print();

ImpresinFotos:
/*
* (non-Javadoc)
* @see Producto#print()
*/
@Override
public void print() {
System.out.println("Id: " + this.id);
System.out.println("Revelado de fotos");
System.out.println("Color: " + this.color);
System.out.println("Ancho: " + this.ancho);
System.out.println("Ancho: " + this.largo);
System.out.print("Fotos: ");
for (Foto f : this.fotos) {
f.print();
System.out.print(" ");
}
}

Cmara:
/*
* (non-Javadoc)
* @see Producto#print()
*/
@Override
public void print() {
System.out.println("Id: " + this.id);
System.out.println("Camara fotogrfica");
System.out.println("Marca: " + this.marca);
System.out.println("Modelo: " + this.modelo);
}

3. (1 punto) Despus de tener en funcionamiento la aplicacin, se ha


detectado una importante limitacin. Con los requisitos especificados no se
pueden distinguir entre potenciales pedidos realizados por el mismo cliente,
con los mismos productos, en la misma fecha. Qu modificaciones se
podran realizar para distinguir estos casos?
SOLUCIN
Para realizar la solucin ms sencilla bastara con aadir un nuevo atributo
a la clase Pedido, que permita identificar a cada uno de los pedidos. En
este caso se ha aadido un atributo denominado id de tipo entero.

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para
superarlo.
Resuelva el problema en una hoja aparte (mximo 2 caras), indicando su
nombre y DNI.
-XQLR- 2 TIPO A

Primera Parte: Test


1. Si accedemos a un sitio web por medio de un PC conectado a la red y nos
encontramos con un mensaje "error de ejecucin en el servidor", esto
indicara que:
a.
b.
c.
d.

Ha habido un fallo en la red.


Nuestro navegador no es compatible.
Nuestro sistema operativo no es compatible.
El programa en la mquina remota no ha podido ejecutarse
correctamente.

2. El software de sistema:
a. Permite la manipulacin y tratamiento de fotografas.
b. Permite la edicin de videos.
c. Permite aislar al usuario de los detalles del computador particular
(caractersticas de la memoria, dispositivos, etc.).
d. Permite al usuario llevar a cabo tareas especficas, como por ej. el
uso de aplicaciones ofimticas.
3. En la prctica de este curso:
a.
b.
c.
d.

La clase Cartel tiene como atributo un objeto Tirada.


La clase Tirada tiene como atributo un objeto Cartel.
La clase Tirada tiene como atributo un conjunto de objetos Cartel.
La clase Cartel tiene como atributo una lista de objetos Tirada.

4. Qu valores imprimira el siguiente cdigo?


int[] a = { 1, 2, 3, 4 };
for (int i = 1; i < a.length; i++) {
a[i - 1] = a[i];
}
System.out.print(a[0]);

a. 1,2
b. 2
c. 1
d. 3
5. Si un campo est definido como Private:
a. Es necesario que se ejecute uno de los mtodos de su clase para
que sea modificado.
b. No se puede modificar una vez compilado el programa.
c. Requiere permisos para ser modificado.
d. Se puede acceder directamente desde cualquier subclase.
6. Indique cul de las siguientes afirmaciones es correcta en la programacin
orientada a objetos:
a.
b.
c.
d.

Los objetos definen el tipo de atributos dentro de una clase.


Las clases definen el tipo de objetos.
Las clases definen el estado actual de un objeto.
Los objetos definen el estado actual de una clase.

7. Teniendo en cuenta las siguientes definiciones de clases:


public class Persona {
}
public class Hombre extends Persona {
}
public class Mujer extends Persona {
}

Las siguientes instrucciones son correctas?


List<Persona> personas = new ArrayList<Persona>();
personas.add(new Hombre());
personas.add(new Mujer());
personas.add(new Persona());

a. No, ya que en una lista de la clase Persona no se podran aadir


objetos de la clase Hombre y Mujer.
b. No, ya que la clase Persona no se puede instanciar.
c. S, ya que las clases Hombre y Mujer heredan de la clase Persona.
d. S, si quitamos la ltima instruccin (personas.add(new Persona());) ya
que la clase Persona no se puede instanciar.

8. Cul de estas afirmaciones es falsa? El tratamiento de errores mediante


excepciones en un objeto en Java permite capturar un error e imprimir un
mensaje indicando:
a. El tipo de error.
b. La zona del cdigo donde se produjo el error.
c. En su caso, el nombre del fichero de lectura que ha producido el
error.
d. Los valores de los campos de todos los objetos instanciados en ese
momento.
9. Indique cul de las siguientes afirmaciones es FALSA. En Java:
a. Por medio de la herencia es posible reutilizar cdigo.
b. Por medio de la composicin es posible reutilizar cdigo.
c. En las clases abstractas no es posible acceder al valor de sus
campos desde objetos de otra clase.
d. No es posible instanciar objetos de una clase abstracta.
10. Un mtodo polimrfico en Java, permite:
a.
b.
c.
d.

Que dicho mtodo no devuelva ningn resultado.


Que el mtodo slo sea accesible desde la propia clase.
Java no admite polimorfismo a nivel de mtodo.
Que se puedan invocar distintos mtodos en diferentes momentos.

Apellidos.....Nombre..DNI...

Segunda Parte: Problema


De manera genrica, un sitio de opiniones est compuesto por un conjunto de
usuarios que vierten opiniones sobre distintos objetos. Un ejemplo de estos
sistemas es la famosa web TripAdvisor, donde los usuarios pueden expresar
sus opiniones sobre hoteles. En este problema se desea modelar este tipo de
sistemas.
En nuestro caso, un usuario estar caracterizado por su nombre o nick y por
las opiniones que ha realizado en el sistema. Al mismo tiempo, el sistema
estar compuesto por un conjunto de objetos sobre los que se puede opinar,
los propios usuarios y las opiniones que stos han vertido en el sistema.
Por otro lado, una opinin estar definida por la fecha en la que se realiz, el
usuario que la realiz, el objeto sobre el que se est opinando, una valoracin
representada por un nmero entero y un texto que almacena la justificacin de
la propia opinin.
Nuestro sistema, internamente, agregar todas las opiniones vertidas sobre un
objeto concreto, calculando su valoracin general. Del mismo modo, puede
devolver un ranking (una lista ordenada), de todos los objetos, en funcin de su
valoracin global, de tal manera que el primer objeto de la lista es el mejor
valorado, etc.
Queremos modelar este problema, de modo que el sistema de opinin
contenga la funcionalidad explicada, es decir:

Permita aadir nuevas opiniones expresadas por usuarios sobre objetos.


Permita consultar la valoracin global de un objeto concreto, expresada
como un nmero real.
Permita obtener un ranking de objetos, proporcionando una lista con
todos los objetos sobre los que se ha opinado, ordenados en funcin de
su valoracin global.

Antes de comenzar a responder lea con atencin todos los apartados. Se pide:
1. (4 puntos) Dibujar un esquema con las clases necesarias para realizar el
diseo del problema, indicando los atributos y mtodos que tiene cada una
de ellas (slo indicarlos, sin escribir su cdigo), aplicando los principios de
la programacin orientada a objetos.
2. (2 puntos) Supongamos que queremos utilizar el sistema de opinin
modelado en el apartado anterior, para un sitio web donde los objetos a
valorar sean libros. Los libros estarn caracterizados por un ttulo, un autor
y la editorial. Siguiendo los principios de la programacin orientada a

objetos, qu modificaciones habra que realizar en el diseo del apartado


1, para adaptar el diseo a este nuevo requisito? Razone su respuesta.
SOLUCIN
1. y 2.
SistemaOpinion
Usuario
private String nombre
private List<Opinion> opiniones
public void aadir(Opinion op)
/* metodos set y get de los
atributos */

private List<Usuario> usuarios


private List<Objetos> objectos
private List<Opinion> opiniones
public void aadir(Usuario usuario)
public void aadir(Objecto obj)
public void aadir(Opinion op)
public doble getValoracionGlobal(Objecto obj)
public List<Objeto> getRanking()

Opinion
private String fecha
private Usuario usuario
private Objeto objeto
private int valoracion
private String justificacion
/* metodos set y get de los
atributos */

Objeto
private int id
/* metodos set y get de los
atributos */

Libro
public String titulo
public String autor
public String editorial
/* metodos set y get de los
atributos */

Para resolver el apartado 2, utilizaremos herencia, creando una nueva


clase Libro que herede de la clase Objeto
3. (2 puntos) Escriba el cdigo necesario para instanciar una opinin
expresada por el usuario con nombre Pepito, sobre el libro con ttulo El
guardin entre el centeno, cuyo autor es J.D. Salinger, de la editorial
Alianza, identificado con el identificador 1, valorada con un 5, en la fecha
19/03/2013 y cuya justificacin textual dice: Libro muy entretenido. (Para
la fecha se puede utilizar el tipo de datos String). Aada la opinin al
sistema de opinin (suponga que ste ha sido previamente instanciado en
la variable sistemaOpinion) y, a continuacin, consulte la valoracin global
del mismo libro.

SOLUCIN
// Creacin del usuario
Usuario u = new Usuario(Pepito);
// Creacin del objeto libro
Libro libro1 = new Libro(1);
libro1.setTitulo(El guardin entre el centeno);
libro1.setAutor(J.D. Salinger);
libro1.setEditorial(Alianza);
// Creacin de la opinin
Opinion op1 = new Opinion();
op1.setUsuario(u);
op1.setObjeto(libro1);
op1.setValoracion(5);
op1.setFecha(19/03/2013);
op1.setTexto(Libro muy entretenido);
// Incorporacin de la opinin en el sistema de reputacin
sistemaOpinion.aadir(op1);
// Consulta de la reputacin del libro
double valoracionGlobal = sistemaOpinion.getValoracionGlobal(libro1);

4. (2 puntos) Escriba el cdigo de un nuevo mtodo del sistema, que permita


mostrar por pantalla todas las opiniones expresadas por un usuario
concreto.
SOLUCIN
public void mostrarOpiniones(Usuario u) {
// Recorremos las opiniones almacenadas
for (Opinion op : this.opiniones) {
if (op.getUsuario.getNombre().equals(u.getNombre())) {
System.out.println(Opnion expresada por el usuario: +
u.getNombre() + en la fecha: + op.getFecha() + sobre el
objeto: + op.getObjeto() + valorado con un: +
op.getValoracion() + y su justificacin es: +
op.getJustificacion() );
}
}
}

Para la nota del examen, el test vale el 30% y el Problema vale el 70%.
El test es eliminatorio y se necesitan 7 respuestas correctas para
superarlo.
Resuelva el problema en una hoja aparte (mximo 2 caras), indicando su
nombre y DNI.
TIPO A

Primera Parte: Test


1. Qu es la placa base o madre de un computador?
a. Es el componente hardware donde se integran todos los
componentes que colectivamente proporcionan la funcionalidad
del computador.
b. Es el componente hardware del computador que permite realizar
operaciones aritmticas y lgicas.
c. Es el componente hardware donde se almacena la informacin de
manera permanente.
d. Es el componente hardware donde se almacena la informacin de
manera temporal.
2. Los requisitos de un sistema incluyen disponer de 8 GigaBytes de
memoria principal. Cul es la menor de estas memorias que satisface
dicho requisito?
a.
b.
c.
d.

900 MegaBytes
109 Bytes
9*109 Kbytes
9*109 Bytes

3. Qu significa que un sistema operativo es multitarea?:


a. Que es capaz de atender las peticiones de mltiples usuarios al
mismo tiempo.
b. Que es capaz de ejecutar los programas secuencialmente.
c. Que es capaz de ejecutar varios programas a la vez.
d. Que es capaz de gestionar varios procesadores.
4. Cul es la secuencia correcta de un compilador?:
a. A partir del cdigo objeto genera el cdigo fuente, que a
continuacin es interpretado.
b. A partir del lenguaje mquina genera un cdigo fuente que es
ejecutado.
c. A partir de un cdigo fuente genera un cdigo objeto que, a
continuacin, se traduce en cdigo ejecutable.
d. Toma una instruccin del cdigo fuente, la traduce a cdigo
ejecutable, la ejecuta y repite la fase con las siguientes
instrucciones.

5. En la prctica del presente curso, cul de


funcionalidades NO es cubierta por la clase Gestora?

las

siguientes

a. Listar todas las tiradas e imgenes correspondientes, mostrando


la informacin relativa a cada tirada.
b. Devolver la ruta y acceso de un cartel dado un identificador.
c. Aadir un objeto de tipo Tirada a la lista.
d. Crear una copia de un cartel.
6. Indique qu se imprimira por pantalla tras la ejecucin del siguiente
cdigo:
public static void main(String args[]){
int numero = 4557888;
int digitos = 0;
do {
numero = numero / 10;
digitos++;
} while ( numero > 0 );
System.out.println(digitos);
}
a.
b.
c.
d.

6
7
8
Nada, porque se ejecutara un bucle infinito.

7. En un programa orientado a objetos, cada persona tiene asociado dos


progenitores de la clase Persona. Varias personas pueden tener
asociado un mismo progenitor. Si modificamos el nombre de una
persona, es necesario modificarlo en todos sus hijos?
a. Siempre es necesario.
b. No, porque hay una relacin de herencia entre progenitores e
hijos.
c. No es necesario.
d. Slo cuando no haya un campo identificador nico del progenitor.

8. Qu distingue a las diferentes instancias de una clase?


a.
b.
c.
d.

El conjunto de campos de los que dispone.


Los valores de sus campos.
La definicin de los mtodos.
La clase de la que hereda.

9. Indique cul de las siguientes afirmaciones es falsa:


a. Todos los mtodos deben devolver un tipo de valor. Si el mtodo
no devuelve ningn valor, el tipo se define como void.
b. Todos los mtodos deben de tener, al menos, un parmetro.
stos debern ir entre parntesis y separados por comas,
especificando para cada uno de ellos su tipo.
c. Todos los mtodos en java pueden generar excepciones.
d. Un mtodo puede devolver un tipo primitivo, un array o lista, un
String o un objeto.

10. Dadas las siguientes clases:


public class A {
public void escribir(String a) {
System.out.print(a);
}
}
public class B extends A {
public void escribir(String a) {
System.out.println(El valor es: + a);
}
}
Qu devolvera el siguiente cdigo?:
A a = new B();
a.escribir(Hola);
a. El valor es: Hola
b. Hola
c. No devolvera nada puesto que no podemos asignar un objeto de
clase A en una variable del tipo B.
d. No devolvera nada puesto que se producira un error ya que no
se pueden sumar dos Strings.

Apellidos.....NombreDNI..........

Segunda Parte: Problema


Una empresa de paquetera quiere implantar un sistema para gestionar las
reclamaciones que le pueden realizar sus clientes como consecuencia de
posibles problemas en el servicio que ofrecen. La empresa tiene almacenados
a sus clientes con su dni, el nombre, los apellidos y una direccin de correo
electrnico. stos podrn poner una reclamacin sobre un envo concreto,
identificado por un nmero y aadir un comentario donde explique el motivo de
su reclamacin. Las reclamaciones interpuestas por los clientes sern
identificadas por un nmero y deben de ser almacenadas, para poder
gestionarlas. En concreto el sistema debe permitir:
1. Aadir una nueva reclamacin.
2. Indicar todas las reclamaciones que un determinado cliente ha
interpuesto.
3. Eliminar una reclamacin a partir de su nmero.
4. A partir de un nmero de reclamacin y un texto que explique la solucin
dada al cliente, cerrar una reclamacin, aadiendo dicho texto como
contestacin a la reclamacin.

Lea atentamente el ejercicio completo antes de comenzar a contestar las


preguntas. Se pide:

1. (4 Puntos) Realice el esquema de clases correspondiente al sistema que


se desea implementar, indicando los atributos y mtodos que tiene cada
una de las clases (slo indicarlos, sin escribir su cdigo), aplicando los
principios de la programacin orientada a objetos.

SOLUCIN
1. y 3.
Reclamacion
private int numero
private Cliente cliente
private int num_envio
private String comentario
private boolean cerrada
private String solucion
/* metodos set y get de los
atributos */

GestorReclamaciones
private List<Reclamacion> reclamaciones
private List<Cliente> clientes
public void aadir(Reclamacion r)
public boolean eliminar(int num)
public void getReclamaciones(String
cliente)
public void cerrarReclamacion(int num,
String solucion)

Cliente

Sugerencia

private String DNI


private String nombre
private String apellidos
private String email

private String Departamento


/* metodos set y get de los
atributos */

/* metodos set y get de


los atributos */

2. (4 Puntos) Escribir el cdigo del mtodo que realice la funcionalidad


nmero 4 (cerrar una reclamacin aadiendo la solucin proporcionada a
una reclamacin).
SOLUCIN
public void cerrarReclamacion(int num, String solucion) {
for (Reclamacion r : this.reclamaciones) {
if (r.getNumero() == num) {
r.setSolucion(solucion);
r.setCerrada(true);
}
}
}

3. (2 Puntos) Ampliar el diseo del primer apartado, sin modificar las clases
ya implementadas, para permitir que el sistema pueda gestionar tambin
sugerencias. Las sugerencias se caracterizan por estar puestas por un
cliente en relacin a un envo concreto, tener un nmero identificativo, el
texto de la sugerencia y un destinatario donde se introduce el
departamento al que van referidas. Dichas sugerencias podrn ser
contestadas.
SOLUCIN
Para resolver el apartado 3 utilizaremos herencia, crearemos una nueva clase
Sugerencia, heredando de la clase Reclamacin, de manera que comparten
todos los atributos y, por tanto, slo ser necesario aadir el nuevo atributo
departamento de tipo String, que nos permita aadir el nombre del
departamento sobre el que se realiza la sugerencia.

Fundamentos de Informtica Ing. Elctrica 1 Semana 2015

Plantilla soluciones
1C, 2C, 3C, 4B, 5C, 6C, 7D, 8B, 9C, 10C

Fundamentos de Informtica Ing. Elctrica 2 Semana 2015

Fundamentos de Informtica Ing. Mecnica 1 Semana 2015

Plantilla soluciones
1C, 2B, 3B, 4C, 5B, 6A, 7D, 8C, 9D, 10A

Fundamentos de Informtica Ing. Mecnica 2 Semana 2015

You might also like