Professional Documents
Culture Documents
I NFORMTICA
71901072 P ROGRAMACIN O RIENTADA A O BJETOS ( G RADO EN I NGENIERA I NFORMTICA / T ECNOLOGAS DE
LA I NFORMACIN )
J UNIO 201 1 M ODELO B N O EST PERMITIDO EL US O DE MATERIAL ADICIO NAL
Pregunta
9:
Segn
el
texto
de
la
bibliografa
bsica
de
la
asignatura,
indique
cul
de
las
siguientes
opciones
declarar
un
mtodo
en
una
clase
que
fuerza
a
una
subclase
a
implementarlo:
a.
static void methoda (double d1) {}
b.
public native double methoda();
c.
abstract public void methoda();(Respuesta
correcta)
d.
protected void methoda (double d1){}
Pregunta
10:
Dado
el
siguiente
fragmento
de
cdigo
que
pretende
mostrar
un
ejemplo
de
sobrescritura,
indique
cul
de
las
siguientes
opciones
completara
el
cdigo
para
dar
lugar
a
un
ejemplo
correcto
de
sobrescritura:
Nmero
de
Lnea
Cdigo
class BaseClass {
4
private float x = 1.0f ;
5
protected float getVar () {return x;}
6
}
7
class Subclass extends BaseClass {
8
private float x = 2.0f;
9
//Insertar cdigo aqu
10
}
11
a.
float getVar ( ) { return x;}
b.
public float getVar ( ) { return x;} (Respuesta
correcta)
c.
float double getVar ( ) { return x;}
d.
public float getVar (float f ) { return f;}
Pregunta
11:
Segn
el
texto
de
la
bibliografa
bsica
de
la
asignatura,
indique
cul
de
las
siguientes
afirmaciones
es
correcta
en
relacin
a
la
programacin
por
parejas:
a. Consiste
en
programar
una
clase
por
duplicado
con
el
objetivo
de
depurar
los
errores
ms
fcilmente.
b.
Es
una
manera
de
producir
cdigo,
opuesta
a
la
programacin
extrema
en
la
que
un
solo
programador
desarrolla
las
clases
asignadas.
c.
Era
una
tcnica
de
programacin
tradicional
que
las
empresas
eliminaron
para
reducir
costes.
d.
Es
uno
de
los
elementos
de
una
tcnica
que
se
conoce
como
programacin
extrema.
(Respuesta
correcta)
Pregunta
12:
La
ejecucin
del
siguiente
fragmento
de
cdigo
Nmero
de
Lnea
Cdigo
import javax.swing.*;
4
class PrimerFrame extends JFrame
5
{
6
public PrimerFrame()
7
{
8
setTitle(Mi primer programa grfico);
9
setSize(400,100);
10
}
11
}
12
public class FrameTest
13
{
14
public static void main (String[] args)
15
{
16
JFrame frame = new PrimerFrame();
17
frame.setVisible (true);
18
}
19
}
20
Da
lugar
al
siguiente
programa:
Pero
este
ltimo
programa
tiene
el
problema
de
que
cuando
se
cierra
la
ventana,
a
pesar
de
que
dejamos
de
verla,
el
programa
no
finaliza
su
ejecucin.
De
esta
forma,
para
que
el
programa
funcione
correctamente,
hemos
de
interceptar
el
evento
que
se
produce
cuando
cerramos
la
ventana
y
hacer
que
el
programa
termine
su
ejecucin
en
ese
momento.
Indique
qu
clase
hemos
de
definir
en
este
caso
y
asocirselo
al
JFrame
del
ejemplo:
a.
ActionListener
b.
ComponentListener
c.
WindowListener (Respuesta
correcta)
d.
ItemListener
Pregunta
13:
En
el
siguiente
fragmento
de
cdigo
hemos
definido
la
ejecucin
de
cinco
bloques.
Estos
bloques
se
ejecutarn
dependiendo
de
las
excepciones
que
se
produzcan
en
cada
caso.
Indique
cul
de
las
siguientes
afirmaciones
es
correcta:
Nmero
de
Lnea
Cdigo
// Bloque1
4
try{
5
// Bloque2
6
}catch (ArithmeticException e) {
7
// Bloque3
8
}finally{
9
// Bloque4
10
}
11
// Bloque5
12
a. El
Bloque4
no
se
ejecutar
si
se
produce
una
excepcin
de
tipo
aritmtico
en
el
Bloque2
b.
El
Bloque4
no
se
ejecutar
si
se
produce
un
acceso
a
un
objeto
nulo
(null)
en
el
Bloque2
c.
El
Bloque4
se
ejecutar
antes
que
el
Bloque3
si
se
produce
una
excepcin
de
tipo
aritmtico
en
el
Bloque2
d.
El
Bloque4
se
ejecutar
antes
de
que
la
excepcin
producida
por
un
acceso
a
un
objeto
nulo
(null)
en
el
Bloque2
se
propague
hacia
arriba
(Respuesta
correcta)
Pregunta
14:
Indique
el
resultado
de
ejecutar
el
siguiente
cdigo
que
se
muestra
a
continuacin:
Nmero
de
Lnea
Cdigo
public class test {
4
public static void add3 (Integer i) {
5
int val = i.intValue();
6
val += 3;
7
i = new Integer (val);
8
}
9
public static void main (String args[]) {
10
Integer i = new Integer (0);
11
add3 (i);
12
System.out.println (i.intValue ( ) );
13
}
14
}
15
a.
El
programa
indicar
un
fallo
en
tiempo
de
compilacin.
b.
El
programa
imprime
por
pantalla
el
valor
0.
(Respuesta
correcta)
c.
El
programa
imprime
por
pantalla
el
valor
3.
d.
El
programa
lanzar
una
excepcin
en
la
lnea
6
(int val = i.intValue();).
b) [1,5
puntos]
Implemente
un
mtodo
que
defina
el
funcionamiento
del
ordenador,
teniendo
en
cuenta
que
todos
sus
procesos
tienen
que
hacerse
automticamente
sin
la
intervencin
del
usuario.
public
void
descartar(){
ArrayList<ArrayList<Carta>>
columnas
=
new
ArrayList<ArrayList<Carta>>();
columnas
=
juego.getCartas();
Carta
cartaMenor
=
null;
Carta
cartaMayor
=
null;
boolean
descarte
=
false;
if(esPosibleDescarte(columnas)){
for
(ArrayList<Carta>
columna
:
columnas)
{
if(columna.size()>0){
String
palo
=
columna.get(0).getPalo();
cartaMayor
=
columna.get(0);
cartaMayor
=
columna.get(columna.size());
for
(Carta
carta
:
super.getCartas())
{
if(carta.getPalo().equals(palo)){
if(carta.getValor()+1==cartaMenor.getValor()){
descartar(carta);
descarte
=
true;
break;
}else
if(carta.getValor()-1==cartaMayor.getValor()){
descartar(carta);
descarte
=
true;
break;
}
}
}
if(descarte){
break;
}
}
}
if(!descarte){
for
(Carta
carta
:
super.getCartas())
{
if(carta.getValor()==5){
descartar(carta);
}
}
}
}else{
super.pasar();
}
}
c) [1,5
puntos]
Proporcione
un
mtodo
que
muestre
la
lgica
del
juego,
definiendo
la
informacin
necesaria
para
establecer
el
uso
de
clases,
interacciones
entre
elementos,
declaracin
y
uso
de
variables
y
mtodos
necesarios,
etc.
public void iniciarJuego(){
boolean cartasPendientes = true;
Jugador jugadorHumano = new Jugador();
Jugador jugadorOrdenador = new Jugador();
asignarCartas(jugadorHumano);
asignarCartas(jugadorOrdenador);
while(cartasPendientes){
if(jugadorHumano.iniciarTurno()){
System.out.println("Jugador Humano Ganador");
break;
}else if(jugadorOrdenador.iniciarTurno()){
System.out.println("Ordenador Ganador");
break;
}
}
d) [2,0
puntos]
Indiqu
qu
modificaciones
son
necesarias
introducir
en
la
aplicacin
para
permitir
la
participacin
de
varios
jugadores
humanos
(hasta
4).
Para
ello
el
juego
en
lugar
de
constar
de
partidas
individuales
en
las
cuales
gana
el
jugador
que
antes
se
descarta,
para
a
ser
una
partida
formada
por
un
conjunto
de
rondas.
El
ordenador
deber
llevar
un
registro
de
los
puntos
que
cada
jugador
ha
conseguido
en
cada
ronda.
El
jugador
que
consigue
descartarse
primero
lograr
3
puntos,
el
jugador
o
jugadores
que
se
quede
con
un
mayor
nmero
de
cartas
al
finalizar
la
ronda
obtendr
0
puntos.
El
resto
obtendr
1
punto.
La
partida
finaliza
cuando
un
jugador
consiga
llegar
al
menos
a
los
10
puntos,
ganando
el
que
ms
puntos
tenga
en
caso
de
superar
esta
puntuacin
varios
jugadores.
En
caso
de
empate
se
jugar
una
ronda
extra
para
decidir
el
ganador.
Para
la
participacin
de
varios
jugadores,
tan
solo
es
necesario
tener
una
instancia
de
cada
jugador
y
asignar
los
turnos
en
un
orden
lgico.
En
lugar
de
tener
una
variable
con
la
instancia
del
jugador,
sera
necesaria
una
lista
de
jugadores.
Para
que
el
juego
pueda
anotar
el
tanteo
de
las
partidas,
se
debera
crear
una
clase
Tanteo
que
almacene
por
cada
una
de
las
rondas
de
la
partida,
los
puntos
conseguidos
por
cada
jugador.
Tambin
sera
necesario
que
almacenara
los
puntos
que
cada
jugador
ha
conseguido
de
manera
global.
Adems,
para
implementar
la
asignacin
de
puntos,
habra
que
crear
un
mtodo
que
al
final
de
cada
partida
analice
las
cartas
que
los
jugadores
no
han
conseguido
descartar.
Este
mtodo
actualizara
la
informacin
de
los
puntos
de
cada
jugador
y
debe
dar
por
finalizada
la
partida
en
caso
de
que
un
jugador
llegase
a
la
puntuacin
mxima.
La
ronda
extra
tambin
sera
responsabilidad
de
este
mtodo
y
de
la
informacin
almacenada
en
la
clase
Tanteo.