sábado, 31 de octubre de 2009

Ahora son 4 preguntas.

Nota: Si deseas ver mejor la imagen puedes hacer click sobre ella.

1.- ¿Cuál es el resultado de compilar y ejecutar el siguiente código?


[A].-Error de compilación en línea 6. El constructor no puede tener valor de retorno.
[B].-El programa compila pero lanza un error en tiempo de ejecución en línea 13, ya que se intenta cambiar un valor constante.
[C].-Se imprime 35
[D].-Se imprime 55
[E].- Error de compilación en línea 13, mala llamada al constructor.
[F].-Ninguna de las anteriores

2.- ¿Cuál es el resultado de compilar y ejecutar el siguiente código?

[A].- El programa compila y ejecuta sin problemas. No se genera salida.
[B].- ClassCastException en tiempo de ejecución.
[C].- Error en la compilación.
[D].-Ninguna de las anteriores.

3.- ¿Qué resulta al compilar y ejecutar el siguiente código?. Suponga que las aserciones están ensambladas:

[A].- Error de compilación.
[B].- Sólo se imprime ABC.
[C].- Se imprime ABC y se lanza AsertionException.
[D].- Se impime ABC y se lanza AsertionError.


4.- ¿Cuál es la salida generada al ejecutar el siguiente código?


[A].- 123
000
123
[B].- 000
123
123
[C].- 123
123
000
[D].- 101202603
123
123
[E].- 000
123
[F].- 123
101202603
123

Respuestas Correctas:
1.- [F]:
Sucede un error de compilación, pero en la línea 7 debido a que en un método no constructor no puede cambiarse el valor de una constante (final) en este caso la variable final VALOR. La A es incorrecta ya que debido a que el método public int Ejecutable devuelve un entero se convierte en un método no constructor. B, C y D es incorrecta debido a que el sistema no compila.

2.- [C]:
No se puede castear dos clases que tengan el mismo padre, podría crearse una instancia de la clase padre llamado p, podriamos hacer p = (Hija2) h2; o h2 = (Padre) p; pero entre dos clases que tienen el mismo padre no puede haber un casteo.

3.- [A]:
Hay error de compilación debido a que en el método f la sentencia default del switch no tiene valor de retorno y tampoco lanza una exception. La aserción no es suficiente para el compilador.

4.- [B]:
Hagamos una traza del programa: Primero se ejecuta el método main que realiza una instancia de PruebaConstructor( ). Este constructor hace una llamanda al constructor con tres enteros pasando los valores 101, 202 y 603, a su vez este llama al método inicializar pasandole los valores recibidos. Al llegar al método inicializar se hace la primera impresión llamando a this.uno, this.dos y this.tres pero hasta este momento no han sido inicializados y por eso imprimen sus valores por defecto (tres ceros se imprimen en la línea 14). Luego en las líneas 15, 16 y 17, this.uno toma el valor 1, this.dos toma 2, y this.tres se le asigna 3, debido al operador ternario. Estos se imprimen en la línea 18, luego de esto se retorna el control a PruebaConstructor que recibe tres enteros, aquí no hay mas sentencias, se retorna a PruebaConstructor( ) que imprime 123 debido a la línea 6. Resultado respuesta B.

No hay comentarios: