Poo Examen2p1t 2007

5
ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA EN ELECTRICIDAD Y COMPUTACION PROGRAMACION ORIENTADA A OBJETOS EXAMEN FINAL I TERMINO 2007 Nombre: Paralelo: 1. (60 puntos) Implemente el Juego Tres en Raya en AWT o SWING: El jugador que inicia (jugador 1) inicia con X el segundo jugador (jugador 2) sigue con la O, alternándose la colocación de letras en un tablero cuadriculado de tres filas por tres columnas (9 celdas – 9 botones). Gana aquel jugador que pueda llenar una fila o columna o alguna de las diagonales con su letra. Cada vez que se encuentra un ganador (Jugador 1, Jugador 2, o Desconocido), se guarda en archivos o base de datos, quien gano y cuantos pasos dió el ganador hasta completar la fila, columna o diagonal (en el caso de ser desconocido, el numero de pasos es 0). El botón Reiniciar el Juego permite jugar nuevamente. El botón Ver Resultados abre una segunda ventana que contiene un TextArea con la información de los resultados de juegos anteriores, almacenados bien en archivos o bases de datos. No olvide implementar el cerrar de la ventana. Ud. puede hacer uso de las siguientes clases para su implementación: Para archivos Para bases de datos Para las ventanas FileReader, FileWriter DriverManager Frame, JFrame DataInputStream, FileInputStream Connnection, PreparedStatement Label, JLabel DataOutputStream, FileOutputStream ResultSet Button, JButton, TextArea, JTextArea 2. (40 puntos) Seleccione la opción valida y/o responda. 2.1 ¿Qué pasaría si trata de correr y compilar el siguiente código Java? (4 puntos) interface A{ public void innerMeth(); }

description

examen

Transcript of Poo Examen2p1t 2007

Page 1: Poo Examen2p1t 2007

ESCUELA SUPERIOR POLITECNICA DEL LITORALFACULTAD DE INGENIERIA EN ELECTRICIDAD Y COMPUTACION

PROGRAMACION ORIENTADA A OBJETOSEXAMEN FINAL I TERMINO 2007

Nombre: Paralelo:

1. (60 puntos) Implemente el Juego Tres en Raya en AWT o SWING:

El jugador que inicia (jugador 1) inicia con X el segundo jugador (jugador 2) sigue con la O, alternándose la colocación de letras en un tablero cuadriculado de tres filas por tres columnas (9 celdas – 9 botones). Gana aquel jugador que pueda llenar una fila o columna o alguna de las diagonales con su letra.

Cada vez que se encuentra un ganador (Jugador 1, Jugador 2, o Desconocido), se guarda en archivos o base de datos, quien gano y cuantos pasos dió el ganador hasta completar la fila, columna o diagonal (en el caso de ser desconocido, el numero de pasos es 0).

El botón Reiniciar el Juego permite jugar nuevamente. El botón Ver Resultados abre una segunda ventana que contiene un TextArea con la información de los resultados de juegos anteriores, almacenados bien en archivos o bases de datos. No olvide implementar el cerrar de la ventana.

Ud. puede hacer uso de las siguientes clases para su implementación:Para archivos Para bases de datos Para las ventanas

FileReader, FileWriter DriverManager Frame, JFrameDataInputStream, FileInputStream Connnection, PreparedStatement Label, JLabelDataOutputStream, FileOutputStream

ResultSet Button, JButton, TextArea, JTextArea

2. (40 puntos) Seleccione la opción valida y/o responda.

2.1 ¿Qué pasaría si trata de correr y compilar el siguiente código Java? (4 puntos)

interface A{public void innerMeth();

}class B implements A{

public void innerMeth(int memVar){System.out.println(memVar);

}}public class Test {

A a;int memVar = 1;void aMethod(){

a = new B();}public static void main(String[] args){

Test t = new Test();t.a.innerMeth();

} }

Page 2: Poo Examen2p1t 2007

a) Error de compilación.b) Se lanza la excepción NoSuchMethodException en tiempo de ejecución.c) Compila, corre e imprime 1d) Se lanza una excepción NullPointerException en tiempo de ejecución.

2.2 Se tiene la siguiente porción de código HTML de la página TestEjercicio.html: (5 puntos)

<APPLET CODE="Ejercicio.class" WIDTH=750 HEIGHT=100><PARAM NAME=param1 VALUE=”Ejercicio de Applets”>

</APPLET>

Y el siguiente código del applet Ejercicio.java:

import java.awt.Graphics;import java.awt.Font;import java.awt.Color;import java.applet.*;

public class Ejercicio extends Applet { Font f = new Font("TimesRoman", Font.BOLD+Font.ITALIC, 24); String param1, param2; public void init() { param1 = getParameter("param1"); param2 = getParameter("param2"); if (param2 == null) param2=""; }

public void paint(Graphics screen) { screen.setFont(f); screen.setColor(Color.red); screen.drawString(param1, 5, 50); screen.drawString(param2, 5, 100); } }

Si se intenta compilar este applet y luego abrir la página HTML, qué resultado obtendrá?a) Se produce un error al tratar de compilar el applet.b) Se muestra en la página HTML: “Ejercicio de Applets”c) Se produce la excepción NullPointerException y no se podrá cargar el applet.d) El applet es cargado en la página HTML, pero no muestra nada.

2.3 Dado el siguiente programa: (9 puntos)

import java.io.*;

class MyException extends Exception{int value;MyException(int val){

value = val;}public int getValue(){

return(value);}

}class TestClass{

public static void foo(int x) throws MyException,IOException{if(x < 0){

System.out.println("X too low");throw(new MyException(x));

}if(x > 100){

System.out.println("X too high");throw(new IOException("Mike"));

}System.out.println("X OK");

}

Page 3: Poo Examen2p1t 2007

public static void main(String[] args){try{

// convert first argument to foo(x);int x = Integer.parseInt(args[0]); System.out.println("Mike");

}catch(NumberFormatException e){

System.out.println("Bad Number");}catch(IOException e){

System.out.println("Rusty");}catch(MyException e){

System.out.println("Dimitri");System.out.println(e.getValue());

}}

} Qué imprime el programa cuando es invocado de la siguiente forma:

java TestClass 2 java TestClass 200 java TestClass -200

2.4 Dado el siguiente programa: (18 puntos)

class MyFrame extends JFrame{public MyFrame(){

setTitle("WidgetTest");setSize(300,300); // size in pixelssetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}}class MyPanel extends JPanel{

Color current = Color.red;JButton button = new JButton("Button");

class ButtonHandler implements ActionListener{public void actionPerformed(ActionEvent e){

current = Color.green;System.out.println("Mike");repaint();

}}class MouseHandler extends MouseAdapter{

public void mouseClicked(MouseEvent ev){if(ev.getX() <= 100) System.out.println("Rusty");if(ev.getY() >= 100) current = Color.blue;System.out.println("Dimitri");repaint();

}}MyPanel(){

button.addActionListener(new ButtonHandler());addMouseListener(new MouseHandler());add(button);System.out.println("Alan");

}public void paintComponent(Graphics g){

super.paintComponent(g);Graphics2D g2 = (Graphics2D)g;g.setColor(current);g2.fill(new Rectangle2D.Float(0,100,100,100));

}}

Page 4: Poo Examen2p1t 2007

public class WidgetTest{public static void main(String[] args){

MyFrame myframe = new MyFrame();Container contentpane = myframe.getContentPane();contentpane.add(new MyPanel());myframe.show();

}}

1. ¿Cuál de las siguientes DEBE ser una clase interna? (En otras palabras, cuál de las siguientes no trabajará si su implementación es movida fuera de la clase MyPanel) (3 puntos)

a) ButtonHandlerb) MouseHandlerc) Ambas ButtonHandler y MouseHandlerd) Ni ButtonHandler ni MouseHandler

2. ¿Qué es Color.red ? (3 puntos)a) una variable estática públicab) una instancia pública de una variablec) un método público estáticod) un método público de instancia

3. ¿Qué es paintComponent (en MyPanel)? (3 puntos)a) una clase internab) un método estático públicoc) un manejador de eventos (listener)d) un método público de instancia

4. ¿Qué imprime el programa cuando se da click con el ratón en el rectángulo lleno creado en paintComponent? (3 puntos)

5. ¿De qué color se pinta el rectángulo lleno del programa una vez que se da click con el ratón dentro del área del rectángulo? (3 puntos)

6. Si la línea button.addActionListener(new ButtonHandler()); se borra del programa y el programa es recompilado. ¿Qué se imprimirá cuando se dé click en el botón? (3 puntos)

2.5 El resultado de compilar y ejecutar el siguiente código es: (4 puntos)

class Greebo implements Runnable { public void run (String message) { System.out.println("Examen del Segundo Parcial"); } } class GreeboTest { public static void main (String args[]) { Greebo g = new Greebo(); Thread t = new Thread(g); t.start(); } }

a) Sale un error de compilación, puesto que no existe la interfase Runnableb) Compila y ejecuta, se muestra: Examen del Segundo parcialc) Compila, pero al ejecutar no muestra nada en pantalla.d) Sale un error de compilación, puesto que GreeboTest, debe ser declarada abstracta.e) Ninguna de las anteriores