Professional Documents
Culture Documents
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.
a.
b.
c.
d.
12234
1223
12233445
122
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)
Libro
Artista
private String nombre;
private int aoNacimiento;
Artista(String, int)
int getAoNacimiento()
void setAoNacimiento(int)
String getNombre()
void setNombre(String)
Disco
Pelicula
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.
ENERO/FEBRERO 2005
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.
ENERO/FEBRERO 2005
ENERO/FEBRERO 2005
Mensaje
private Usuario emisor;
private Usuario receptor;
private String texto;
void enviar()
Sms
Chat
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());
}
}
SEPTIEMBRE 2005
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.
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.
SEPTIEMBRE 2005
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.
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?
SEPTIEMBRE 2005
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.
SEPTIEMBRE 2005
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)
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;
}
Venta
private Vector obras_vendidas = new Vector();
public Venta ()
public Venta (Vector obras_vendidas)
public void addObra(Obra obra)
public double importeVenta()
Comic
Revista
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.
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;
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)
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);
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
Comentarios al esquema:
-
public SesionNoNumerada(String
pelcula, int sala, int dia, int hora)
public void comprarEntrada();
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;
}
}
}
Reserva
Reserva
1. Diseo de clase
CARTERA
DEUDA (Abstract)
LETRA
BONO
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
7.
3
4
3
3
6
6
5
6
7
8
7
8
10
10
9
10
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 ()
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
7.
3
4
3
3
6
6
5
6
7
8
7
8
10
10
9
10
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)
ZonaTalaEsporadica
ZonaTalaAnual
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
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
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?
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
Solucintestseptiembre2007,tipoA:
1d),2c),3c),4d),5c),6b),7a),8c),9c),10c)
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
public Revisn();
public int calculaCosteTotal()
public void aadirPieza(Pieza p)
Pieza_Imp_Nacional
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();
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();
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.
}
}
}
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
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 ..
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
public CitaEspecialista(
String hora,
String da,
String nombrePaciente,
String nombreEspecialista,
String especialidad);
public CitaPrueba(
String hora,
String da,
String nombrePaciente,
String nombrePrueba);
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.
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
}
}
}
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.
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 ..
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.
EJERCICIO 1:
abstract Motor
GestionMotores
Cita
MotorGasolina
Cita
MotorDiesel
Cita
MotorElec
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
Cita
MotorGasolinaCarb
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);
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);
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.
Apellidos..Nombre..DNI...
Centro asociado ..
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.
EJERCICIO 1:
GestionCuentas
private List <Cuenta> listaCuentas;
Cuenta
private String Cliente;
private List<Pieza> pedido;
public
public
public
public
public
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();
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.
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.
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.
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.
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.
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.
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
a)
b)
c)
d)
3,6,9,12
1,3,6,10,15
0,1,3,6
1,2,4,8
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.
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
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...
GestorPedidos
private int id
private Fecha fecha
private List<Producto> productos
/* metodos set y get de los
atributos */
Producto
AceitunasNegras
enumeration
AceitunasVerdes
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
Producto
enumeration
TipoEnvase
100gr
500gr
1kg
AceitunasVerdes
AceitunasNegras
Encurtido
private boolean picante
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());
}
}
}
IE_2s
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);
}
}
Apellidos.....Nombre..DNI...
GestorInmuebles
Inmueble
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
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.
IE_1s
a.
b.
c.
d.
345
357
3457
345456
Apellidos.....Nombre..DNI...
Cliente
Gasto
private Cliente cliente
private int importe
/* 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.
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
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...
PistaAterrizaje
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
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 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
Militar
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.
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.
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;
}
GestorPiscinas
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
GestorPiscinas
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
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
int n = 1;
for (int i=0; i<4; i++) {
System.out.print(i+n);
n++;
}
a. 0135
b. 1357
c. 1235
d. 1347
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
envia
abstract
Mensaje
Fichero
private String nombre
private int tamao
private int id
private int emisor
private int receptor
contiene
Piece
Request
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
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).
Apellidos.....NombreDNI..........
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()
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:
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);
}
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
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.
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.
Apellidos.....Nombre..DNI...
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
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 */
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);
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
900 MegaBytes
109 Bytes
9*109 Kbytes
9*109 Bytes
las
siguientes
6
7
8
Nada, porque se ejecutara un bucle infinito.
Apellidos.....NombreDNI..........
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
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.
Plantilla soluciones
1C, 2C, 3C, 4B, 5C, 6C, 7D, 8B, 9C, 10C
Plantilla soluciones
1C, 2B, 3B, 4C, 5B, 6A, 7D, 8C, 9D, 10A