Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: nosferacento en 04 de Septiembre 2011, 11:14

Título: Exámenes resueltos programación orientada objetos Java UNED Ingenier Informática
Publicado por: nosferacento en 04 de Septiembre 2011, 11:14
He revisado las preguntas con vistas al curso 2021-2022 y en principio está todo "OK". De cualquier manera si encuentras alguna errata puedes escribirme tanto públicamente en el foro como por mensaje privado.

En este post se encuentran exámenes resueltos de la asignatura "Programación orientada a objetos" de la UNED (Grado en Ingeniería Informática – Grado en Ingeniería de las Tecnologías de la Información). En general serán interesantes pero a veces te parecerán absurdas o rebuscadas. He incluido muchos enunciados correspondientes a las preguntas tipo test pero también algunos enunciados (y sus respuestas) correspondientes a problemas (parte de desarrollo del examen). Los exámenes constan de dos partes: una parte con preguntas tipo test y otra con un problema de programación.

Algunas preguntas son de exámenes reales y otras son inventadas, muchas veces por los comentarios tendrás pistas adicionales que te ayudarán a razonar la respuesta.

Otros post de interés para quienes busquen materiales:

Apuntes y recomendaciones para superar la asignatura "Fundamentos de Sistemas Digitales" del primer curso del Grado en Ingeniería Informática – Grado en Ingeniería de las Tecnologías de la Información de la UNED, que viene siendo una asignatura universitaria de introducción a la electrónica. Se pueden encontrar aquí: https://aprenderaprogramar.com/foros/index.php?topic=7066.0

Exámenes resueltos de la Asignatura "Fundamentos de sistemas digitales" del primer curso de Grado en Ingeniería Informática – Grado en Ingeniería de las Tecnologías de la Información de la UNED se puede encontrar aquí: https://www.aprenderaprogramar.com/foros/index.php?topic=6938.0

Exámenes resueltos de la Asignatura "Fundamentos de Programación" del primer curso de Grado en Ingeniería Informática – Grado en Ingeniería de las Tecnologías de la Información de la UNED (basada en lenguaje C/C++) se puede encontrar aquí: https://www.aprenderaprogramar.com/foros/index.php?topic=401.0

Exámenes resueltos de la Asignatura "Autómatas, gramáticas y lenguajes" del primer curso de Grado en Ingeniería Informática – Grado en Ingeniería de las Tecnologías de la Información de la UNED se puede encontrar aquí: https://www.aprenderaprogramar.com/foros/index.php?topic=638.0

Comenzamos con la asignatura de programación orientada a objetos:

PREGUNTA: ¿Una clase puede manejar objetos?

RESPUESTA   Sí, una clase puede manejar objetos. Aunque esta frase es bastante ambigua, apréndetela de memoria para el examen y no le des más vueltas.
Título: crear objetos sin constructor en java criterio aplicado por defecto por compiler
Publicado por: nosferacento en 04 de Septiembre 2011, 17:55
PREGUNTA: ¿Pueden crearse objetos del tipo definido por una clase sin constructor declarado?

RESPUESTA: Sí, en caso de que no haya constructor declarado, java aplica por defecto el criterio de permitir la creación de objetos como si existiera el constructor vacío (sin código).
Título: pregunta nombre clase java puede empezar con número?
Publicado por: nosferacento en 04 de Septiembre 2011, 22:28
PREGUNTA: ¿Una clase puede tener como nombre un número o su nombre empezar por un número?

RESPUESTA: No. Al igual que no es válido que el nombre de una variable empiece con un número, tampoco el nombre de una clase puede empezar con un número.
Título: preguntas examen absurdas o rebuscadas
Publicado por: patagonico en 05 de Septiembre 2011, 09:52
¿Por qué hablas de preguntas absurdas o rebuscadas? ¿Por qué dices que son tipo test si luego no son tipo test?
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 05 de Septiembre 2011, 14:31
Lo de absurdas o rebuscadas, porque cuando analizas las preguntas de examen te das cuenta de que muchas no tienen ni pies ni cabeza. Son preguntas relativas a detalles muy concretos de código que nunca en la vida se te va a plantear en la vida profesional... y cuando ves eso dices ¿y esto para qué demonios sirve? No digo que todas las preguntas sean así, pero sí muchas de ellas.
Sobre lo del tipo test, efectivamente lo que estoy posteando no incluyo las opciones del test, sino que directamente voy a la respuesta. Esto es para ahorrar espacio y no marear al personal... al final lo que te tienes que saber es la respuesta.
Título: declarar variables locales con modificadores de acceso java
Publicado por: nosferacento en 05 de Septiembre 2011, 17:21
PREGUNTA: Dado este fragmento de código, ¿cuál sería el resultado de compilarlo / ejecutarlo?

Código: [Seleccionar]
public static void main (String Args[] ) {
    int valor = 5;
    cambiarValor(valor);
    System.out.println (valor);
}

public static void cambiarValor (int valor) {
    private int valor = valor * 2;
}

RESPUESTA: Hemos de suponer que el código está dentro de una clase, porque si no no se puede compilar ni ejecutar. El resultado es error en la línea 10 porque dentro de un método no pueden declararse variables locales precedidas de modificadores de acceso (public/private/protected)
Título: clase privada java
Publicado por: nosferacento en 05 de Septiembre 2011, 19:24
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

private class MiClase1 {  }

RESPUESTA:    No, el código no compila. Solo se admite public. Podría compilar si se tratara de una clase interna dentro de otra clase, pero tal y como está no.
Título: clase protegida java
Publicado por: nosferacento en 05 de Septiembre 2011, 21:15
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

protected class MiClase1 {  }


RESPUESTA: No, el código no compila. Solo se admite public. Podría compilar si fuera una clase interna a otra clase.
Título: varias clases en una clase
Publicado por: nosferacento en 05 de Septiembre 2011, 21:18
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

Código: [Seleccionar]
class MiClase1 { }

class MiClase2 { }

class MiClase3 { }

RESPUESTA: Sí, el código compila. La clase se denomina con el nombre de la primera declaración que aparezca, es decir: MiClase1. Si hay varias clases en un mismo fichero, java sólo permite que se pueda usar una de ellas desde código que esté fuera del fichero.
MiClase1 define un tipo.
Al no declararse usando public, el compilador le da visibilidad dentro del package en que esté definida. El resto de clases que se declaran tienen consideración de clases solo accesibles por otras clases dentro del fichero.
Título: tres clases en un archivo java
Publicado por: nosferacento en 06 de Septiembre 2011, 07:56
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

class MiClase1 { }

public class MiClase2 { }

class MiClase3 { }   

RESPUESTA: Sí, el código compila. La clase (archivo) se denomina con el nombre de la clase que se declara como pública, es decir: MiClase2. Las otras clases se consideran clases privadas dentro de esta clase.
Título: dos clases declaradas public en un archivo
Publicado por: nosferacento en 06 de Septiembre 2011, 22:16
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

public class MiClase1 {  }

public class MiClase2 { }

class MiClase3 { }   


RESPUESTA: No, el código no compila. El compilador no sabe qué nombre ponerle a la clase si se declaran dos nombres como público. En un archivo se pueden definir varias clases, pero en un archivo no puede haber más que una clase public. Este archivo se llamará como la clase public que contiene con extensión *.java. Con excepciones, lo habitual es escribir una sola clase por archivo.
Título: dos clases con mismo nombre y distinto modificador
Publicado por: nosferacento en 07 de Septiembre 2011, 18:15
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

public class MiClase1 { }
class MiClase1 {}

RESPUESTA: No, el código no compila. En un fichero no puede haber dos clases con el mismo nombre.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 09 de Septiembre 2011, 10:07
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

public class MiClase1 {
    private MiClase2 prueba = new MiClase2();
    public void mostrarMiClase1 () {
        System.out.println (prueba.getContenido());
    }
}
class MiClase2 {
    String soy2 = "Hola soy 2";
    public String getContenido() { return soy2; }
}
class MiClase3 {
    MiClase1 pp;
    MiClase2 jj;
}

RESPUESTA: Sí, el código compila. El fichero lleva el nombre de la clase pública. Las otras clases dentro del fichero se conocen entre sí, pero no pueden ser usadas fuera del fichero.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: javi in the sky en 10 de Septiembre 2011, 10:53
Esto más que preguntas de examen parecen preguntas de un concurso de la tele   ::)
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: roquesomajorero en 11 de Septiembre 2011, 00:44
Concurso de la tele sí, pero tele china porque no entiendo nada
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 12 de Septiembre 2011, 08:30
No hay que preocuparse por no entender... para llegar a entenderlo hace falta un tiempo de estudio previo y Java no es un lenguaje lo que se dice sencillito.
Título: método estático no es sobreescribible en java
Publicado por: nosferacento en 12 de Septiembre 2011, 08:32
PREGUNTA: Dado este fragmento de código, ¿cuál será su salida?

class Cantante { public static String cantar() { return "la"; } }
public class Tenor extends Cantante {
    public static String cantar () { return "fa"; }
        public static void main (String [] args ) {           
        Tenor t = new Tenor ();
        Cantante s = new Tenor ();
        System.out.println (t.cantar () + " " + s.cantar() );
    }
}

RESPUESTA: Do, re, mi, fa, sol… qué simpática la pregunta. Qué derroche de imaginación y simpatía. Veamos el fondo del asunto. Primera cuestión:
El fichero lleva el nombre de la clase pública. La otra clase no es conocida fuera del fichero.
Al crear un Tenor no ocurre nada puesto que no hay constructor ni campos.
El método cantar de Tenor es estático: esto significa que es un método de clase y que se puede invocar tanto sobre un objeto como sobre el nombre de la clase. Idem para el método cantar de Cantante.
Aunque parece que hay una sobreescritura de métodos, en realidad no la hay: un método estático no es sobreescribible y no funciona la ligadura dinámica de métodos. Si el método de la superclase fuera estático y el de la subclase no, saltaría un error “overridden method is static”.
Al crear un Cantante s con tipo Tenor, el tipo estático es Cantante, y el dinámico Tenor. Al invocar el método cantar sobre t se nos devuelve fa, y al invocar cantar sobre s, dado que s dispone de un método estático de s nombre se ejecuta y devuelve la. Por tanto la salida es : fa-la
Título: objeto no inicializado solo declarado salida null
Publicado por: nosferacento en 13 de Septiembre 2011, 23:13
PREGUNTA: ¿Qué se obtiene al ejecutar el siguiente código?
public class MiClase1 {
    private MiClase2 prueba;
    public void mostrarMiClase1 () {
        System.out.println (prueba);
    }
}
class MiClase2 {
    String soy2 = "Hola soy 2";
}

RESPUESTA: Obtenemos como salida por pantalla: null.
¿Por qué? Porque el atributo prueba, que es un objeto, no está inicializado, sino solo declarado.
Si lo inicializáramos con una declaración como private MiClase2 prueba = new MiClase2(); la salida por pantalla sería del tipo MiClase2@1428ea
¿Por qué? Porque estamos pidiendo la salida por pantalla de un objeto, y lo que nos sale es la referencia de memoria de dónde se encuentra alojado el objeto. Usando System.out.println (prueba.toString()); el resultado sería el mismo. Para rescatar el contenido “Hola soy 2” necesitaríamos un método get e invocar este método. Por ejemplo: public String getContenido() { return soy2; }, y en la otra clase System.out.println (prueba.getContenido());
Título: java.lang.ClassCastException y conversiones de tipos java
Publicado por: nosferacento en 16 de Septiembre 2011, 11:53
PREGUNTA: ¿Qué se obtiene al ejecutar el siguiente código?

class Vehiculo {
    public void imprimirSonido() {
            System.out.print("Vehiculo");
        }
    }
    class Coche extends Vehiculo {
            public void imprimirSonido() {
                    System.out.print ("Bicicleta");
                }
     }
     class Bicicleta extends Vehiculo {
            public void imprimirSonido() {
                    System.out.print ("Bicicleta");
                }
            }
     public class Test {
            public static void main (String [] args) {
                Vehiculo v = new Coche();
                Bicicleta b = (Bicicleta) v;
                v.imprimirSonido();
                b.imprimirSonido();
            }
        }

RESPUESTA: El código compila, pero se produce una excepción en tiempo de ejecución. El error nos indica java.lang.ClassCastException: Coche cannot be cast to Bicicleta at Test.main(Test.java:22). Esto está relacionado con conversiones de tipo permitidas y no permitidas. Tanto coche como bicicleta heredan de vehiculo, podríamos decir que coche y bicicleta "son hermanos". El código compila porque un vehiculo podría contener una bicicleta (polimorfismo de vehiculo). Sin embargo, en tiempo de ejecución lo que realmente contiene v es un coche. El resultado, que se detecta un intento de conversión de lado a lado (entre hermanos) y nos salta el error en tiempo de ejecución.
Bueno, no sé si lo he explicado muy claro pero por lo menos lo he intentado.
Título: java.lang.ClassCastException: Padre cannot be cast to Hijo.
Publicado por: nosferacento en 18 de Septiembre 2011, 11:29
PREGUNTA: ¿Qué ocurre al ejecutar el siguiente código?

class Padre {}
class Hijo extends Padre {}
class Hijo2 extends Padre {}
public class CEx {
    public static void main (String [] args) {
        Padre p = new Padre(); 
        Hijo h = (Hijo) p;
    }
}

RESPUESTA: No sabemos si lo de (Hijo) p tiene algún doble sentido. El código compila, ya que el compilador no llega a conocer el tipo que almacena la variable p. En tiempo de ejecución, para hacer el casting Hijo h = (Hijo) p; sería necesario que p almacenara dinámicamente una variable tipo Hijo. Como no es el caso, salta un error en tiempo de ejecución tipo java.lang.ClassCastException: Padre cannot be cast to Hijo.
Este código sí compila y se ejecuta:

class Padre {}
class Hijo extends Padre {}
class Hijo2 extends Padre {}
public class Preg8CEx {
    public static void main (String [] args) {
        Padre p = new Hijo();
        Hijo h = (Hijo) p;
    }

Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 25 de Septiembre 2011, 15:20
Hola a todos ¿el tema resulta de interés o lo dejo? Díganme algo por favor para saber si resulta de interés  :-\
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: javi in the sky en 26 de Septiembre 2011, 14:17
A mí por lo menos sí me resulta de interés y lo estoy siguiendo, no solo porque me interesa java sino porque he visto que las preguntas están muy en la línea de lo que son certificaciones java oficiales, y no descarto prepararme una certificación.

Así que por mi parte tienes todo el reconocimiento y te pediría que siguieras adelante...
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Susana83 en 27 de Septiembre 2011, 09:20
A mí también me resulta de interés, y a mucha gente más estoy segura que también, lo que pasa es que no todo el que lee las cosas escribe en el foro, pero estoy segura de que hay mucha gente interesada así que te agradecemos la tarea.
Título: notas examen uned septiembre
Publicado por: nosferacento en 01 de Octubre 2011, 11:08
Gracias chicos, creo que estoy un poco depre. Además han salido las notas del examen de septiembre y aparte de que los profesores han vuelto a tener una errata en los resultados del tipo test (al igual que ocurrió en el examen de junio), me han tumbado la asignatura. En fin, para el año que viene será. Yo para no perder el ritmo voy a seguir colgando aquí preguntas y respuestas de examen  :-\
Título: error compilación método fuera de clase
Publicado por: nosferacento en 02 de Octubre 2011, 01:36
PREGUNTA: ¿Qué ocurre al ejecutar el siguiente código?

public void goo() {
foo f = new foo();
System.out.println (f);
}
public class foo {
    String f = "22";
    public String toString() {
        return "44";
    }
    public foo() {}
}

RESPUESTA: Error de compilación: un método no puede estar fuera de una clase como algo independiente.
Título: método goo ininteligible
Publicado por: nosferacento en 03 de Octubre 2011, 13:52
PREGUNTA: ¿Cuál sería el resultado de ejecutar el método goo?

public void goo() {
foo f = new foo();
System.out.println (f);
}
public class foo {
    String f = "22";
    public String toString() {
        return "44";
    }
    public foo() {}
}

RESPUESTA: Esta pregunta es un enunciado ininteligible, ya que no queda claro dónde está el método, y sin saber dónde está… De todas formas, se considera que hay que suponer que al no preguntar por la ejecución del código, sino del método, tenemos que considerar que estuviera dentro de la clase… Si el método estuviera dentro de la clase, sí compilaría, y el resultado de ejecutar el método sería: 44. Esto es así, porque en el println lo que se ejecuta es el método toString(). Y al tener sobreescrito el método toString() para que devuelva 44, esto es lo que obtenemos. A esta pregunta hay que reconocerle mérito: ole la mente brillante a la que se le ocurrió.

Título: variable local declarada dentro de bloque try catch
Publicado por: nosferacento en 06 de Octubre 2011, 09:46
PREGUNTA: Estudia el código que se muestra a continuación. ¿Compila este código?

public class Preg15 {
    public void prueba () {
        try {
            int variableLocal = 55;
        } catch (ArithmeticException e) {
            System.out.println( variableLocal);
        }
        finally { }
    }
}

RESPUESTA: No, una variable local declarada dentro de un bloque try catch no es conocida ni en el catch ni en el finally. En resumen, si la variable está declarada fuera del bloque try, sí se puede usar en el catch o en el finally. Si está dentro del bloque try, nos saltará un error de compilación.
Título: variable local fuera de bloque try catch java
Publicado por: nosferacento en 08 de Octubre 2011, 00:02
PREGUNTA: ¿Compila este código?

public class Preg15 {
    public void prueba () {
        int variableLocal = 55;
        try {
        } catch (ArithmeticException e) {
            System.out.println( variableLocal);
        }
        finally { }
    }
}

RESPUESTA: Sí, una variable local declarada fuera de un bloque try-catch es conocida dentro del catch y también dentro del finally.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 09 de Octubre 2011, 15:11
Chicos recordar que algunas de las preguntas que estoy poniendo en este post han salido directamente de exámenes "tal cual", mientras que otras son preguntas de tipo muy similar que me las he inventado yo, comprobándolas con el compilador.
Título: declaraciones de variables java válidas
Publicado por: nosferacento en 13 de Octubre 2011, 10:36
PREGUNTA: Dadas estas declaraciones de variables, indicar cuáles son correctas y cuáles no:

float foo = -1; 
float foo1 = 1.0;
float foo2 = 42e1;
float foo3 = 2.02f;
float foo4 = 3.03d;
float foo5 = 0x0123;
double foo6 = 3.03d;
double foo7 = 0x0123;
double foo8 = 0x012345;
double foo9 = 0x012345678;
double foo10 = 0x0123456789;


RESPUESTA:

float foo = -1;  // ---> Sí compila, declaración correcta
//float foo1 = 1.0; -->No compila Error: possible lost of precission: found double required float
//float foo2 = 42e1; --> No compila:  Error: possible lost of precission: found double required float
float foo3 = 2.02f; // ---> Sí compila, declaración correcta
//float foo4 = 3.03d; --> No compila:  Error: possible lost of precission: found double required float
float foo5 = 0x0123; // ---> Sí compila, declaración correcta
double foo6 = 3.03d; // ---> Sí compila, declaración correcta
double foo7 = 0x0123; // ---> Sí compila, declaración correcta
double foo8 = 0x012345; // ---> Sí compila, declaración correcta
double foo9 = 0x012345678; // ---> Sí compila, declaración correcta
// double foo10 = 0x0123456789;  ---> No compila. Error: integer number 0123456789 too large

Nota: una referencia a una posición de memoria ha de empezar con 0x seguida de hasta 9 dígitos. No se admite otra forma de expresar una referencia a una posición de memoria.
Título: contenido variable foo java
Publicado por: nosferacento en 14 de Octubre 2011, 14:52
PREGUNTA: Dado el siguiente código ¿cuál es el contenido de la variable foo?

int index = 1;
boolean [] test = new boolean [3];
boolean foo = test [index];
System.out.println (foo);


RESPUESTA: El contenido es false. Motivo: desde que se crea un array con la instrucción new, queda relleno en todas sus posiciones con cero para valores numéricos, false para booleanos, null para objetos incluido strings, o carácter nulo para tipo char.
Título: diagrama de clases java
Publicado por: nosferacento en 19 de Octubre 2011, 10:44
PREGUNTA: ¿Qué relaciones tiene la clase Radio con las otras clases según este esquema y cómo se escribiría la signatura de esta clase? (Nota: el esquema lo pongo como archivo adjunto, archivo diagrama_de_clases.jpg; en el esquema vemos un diagrama de clases que relaciona cinco clases: Transmisor, Receptor, Radio, TV y Operador)


RESPUESTA: Radio implementa la interfaz Transmisor y hereda (extends) de la clase receptor. Además, es usada por la clase Operador.

La signatura de radio sería del tipo:

public class Radio extends Receptor implements Transmisor { }

Cuando hay varias relaciones primero se pone la herencia y luego la implementación de interfaces, es decir, primero extends y luego implements. Si implementara varias clases se pondrían separadas por comas así: extends Receptor implements Transmisor1, Transmisor2, Transmisor3 { } . No es posible el uso múltiple de extends porque la herencia múltiple de clases no está permitida en java.

Interpretación del diagrama de clases:

Flecha continua punta vacía: herencia.
Flecha discontinua punta vacía: implements.
Flecha discontínua punta normal: uso.
Título: resultado de una expresión booleana en java
Publicado por: nosferacento en 20 de Octubre 2011, 14:27
PREGUNTA: ¿Qué devuelve esta expresión en Java?

(1>1) && (1 > 1) == (1 > 1) == false

RESPUESTA: Evaluemos por partes:

false && false == false == false;
false && false = false;
false == false; --> vale true;
true == false; --> vale false;

Luego la expresión devuelve false
Título: valor expresión booleana java
Publicado por: nosferacento en 26 de Octubre 2011, 00:08
PREGUNTA: ¿Qué devuelve esta expresión en Java?

(1 ==1) | (10 > 1) == true | true == true

RESPUESTA: Evaluemos por partes:
1 == 1 devuelve true;
10 > 1 devuelve true;
true | true == true | true == true
true == true | true == true
true | true

Luego la expresión devuelve true

La diferencia entre || y | es que con || se deja de evaluar la expresión desde que es verdadero el primer caso, mientras que con | se evalua también el segundo caso.
Título: error de compilación al faltar la llamada super constructor
Publicado por: nosferacento en 29 de Octubre 2011, 07:36
PREGUNTA: Dado el siguiente código java, ¿Cuál es su resultado?

class Top {
    public Top (String s) { System.out.print ("B"); }
}

public class Bottom2 extends Top {
    public Bottom2 (String s) { System.out.print ("D"); }
    public static void mian (String [] args) {
        Bottom2 obj = new Bottom2("C");
        System.out.println (" ");
    }
}

RESPUESTA: Se obtiene un error de compilación debido a que el constructor de Bottom2 contiene instrucciones y omite la instrucción super(s), es decir, no se incluye el código necesario para que al construir un objeto de la clase Bottom2 se ejecute previamente el constructor de Top;. Si la incluyera el código devolvería BD.
Siempre es obligatorio super(parámetros) excepto cuando existe un constructor de la clase superior sin parámetros. En este caso escribiríamos super(), pero si no lo incluimos el compilador lo hará automáticamente evitando que salte un error.

Título: clases java sin constructor class hotel
Publicado por: nosferacento en 30 de Octubre 2011, 09:11
PREGUNTA: Dado el siguiente código java, ¿Cuál es su resultado?

class Hotel {
    public int reservas;
    public void reservar() { reservas++; }
   
}

public class SuperHotel extends Hotel {
    public void reservar() {reservas--;}
   
    public void reservar (int size) {
        reservar();
        super.reservar();
        reservas += size;
    }
   
    public static void main (String [] args) {
        SuperHotel hotel = new SuperHotel();
        hotel.reservar(2);
        System.out.print (hotel.reservas);
    }
}


RESPUESTA: Por carecer ambas clases de constructor no hay problema. Al crear el objeto y manipular una variable que no ha sido inicializada (mala práctica, pero compilable y ejecutable sin error), la variable opera con su valor por defecto que en el caso de un int es cero. El resultado del método reservar (int size) es que la variable reservas se incrementa en lo que indica size. Por tanto el resultado de la ejecución es 2.
Título: concepto de depuración en java
Publicado por: nosferacento en 05 de Noviembre 2011, 18:15
PREGUNTA: ¿Cuál es la definición de depuración?

RESPUESTA: "La depuración es el intento de apuntar con precisión y corregir un error en el código". Añadiremos que esto es una definición un tanto críptica y ambigua, pero no le des muchas vueltas. Apréndetela para el examen y punto.
Título: encapsulamiento cohesión y acoplamiento java
Publicado por: nosferacento en 06 de Noviembre 2011, 16:17
PREGUNTA: Diga si es cierto o falso:

a)   El encapsulamiento reduce la cohesión.
b)   El encapsulamiento reduce el acoplamiento.


RESPUESTA:

a)   Falso
b)   Verdadero
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 09 de Noviembre 2011, 18:51
¿Hay alguien ahí?
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: javi in the sky en 10 de Noviembre 2011, 08:48
Eres nuestro líder espiritual. Claro que estamos aquí, seguimos cada post con anhelo, día y noche, haga frío o calor, en la abundancia o en la adversidad; Los fieles a tí te seguimos oh nosferacento!
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 12 de Noviembre 2011, 00:09
Bueno, menos cachondeo y espero que esto esté sirviendo para algo.

PREGUNTA: ¿Son las llamadas a métodos en java polimórficas?

RESPUESTA: Sí. Decimos que sí en el sentido de que un método sobreescrito en una subclase implica que una invocación al método pueda invocar al método de la subclase o al de la superclase, dependiendo del tipo dinámico de la variable.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Alex Rodríguez en 13 de Noviembre 2011, 10:09
Hola nosferacento, yo creo que has creado un hilo bastante interesante. Quitando algunas preguntas propias de la inhalación de sustancias alucinógenas, el resto se ven bastante útiles y además de para preparar exámenes de universidad pueden servir para preparar certificaciones de programador Java. Saludos.
Título: nombre de fichero y clase java
Publicado por: nosferacento en 16 de Noviembre 2011, 07:56
Gracias Alex por ese comentario. Seguimos con el lío...

PREGUNTA: ¿Cuál es el nombre del fichero java y de la clase según este código?

class BaseClass {
    private float x = 1.0f;
    protected float getVar () { return x; }
}

class Subclass extends BaseClass {
    private float x = 2.0f; 
}


RESPUESTA: El nombre es BaseClass. A falta de especificación de una clase como public, siempre se coge como nombre el nombre de la primera clase que aparezca.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: asturinha en 17 de Noviembre 2011, 08:31
¿Qué sentido tiene definir una clase con visibilidad no public?

En la escuela siempre la indicabamos public.

¿Alguien me puede aclarar algo sobre este tema?

Gracias
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 18 de Noviembre 2011, 08:28
Hola asturinha, la forma más habitual de declarar una clase efectivamente es public. Pero en realidad public es uno de los cuatro modificadores de acceso que permite Java, y que son: public, private, protected y "no especificado".

Declarar una clase sin modificador de acceso yo creo que es poco habitual, pero Java lo admite. Además cada modificador da privilegios de acceso diferentes. Yo creo que el hecho de poner preguntas de este tipo es por un lado para liarla y por otro lado para comprobar el nivel de conocimiento sobre cuestiones poco habituales en Java.
Título: sobreescribir con modificador de acceso protected
Publicado por: nosferacento en 20 de Noviembre 2011, 15:44
Ahí vamos con otra.

PREGUNTA: ¿Qué dos formas hay de sobreescribir el método getVar() definido en el código, dentro de la subclase?

class BaseClass {
    private float x = 1.0f;
    protected float getVar () { return x; }
}

class Subclass extends BaseClass {
    private float x = 2.0f; 
}


El método lleva como modificador de acceso protected, lo que significa que es visible en la clase, el package y por las subclases. Protected podríamos decir que es cuasi-público. Para reescribirlo hemos de usar un modificador igual o que dé mayor acceso. Por tanto hay dos formas de redefinirlo:

a)   protected float getVar() {return x;}
b)    public float getVar() {return x;}

Las formas sin modificador y private son más restrictivas y por tanto no pueden usarse para sobreescribir el método.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: javi in the sky en 21 de Noviembre 2011, 08:06
nosferacento, ¿se te ocurre alguna forma de controlar la webcam desde java?

Esto no creo que sea muy complicado. La idea es crear un servidor con Java que coja la imagen de la webcam y que un cliente hecho en J2ME (Java para dispositivos Móviles) se conecte al servidor y obtenga esas imágenes, pudiendo ver lo que la cámara webcam ve.

A ver si os ocurre algo...
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 22 de Noviembre 2011, 08:35
¿Tú te has fumado alguna hierbecita rara?  :-* Aquí estamos todavía con que si las diferencias entre public y protected y de aquí a que lleguemos a una webcam puede que ya haya venido la próxima glaciación y estemos todos congeladitos. Bromas aparte, creo que mejor que abras otro hilo para esa curiosidad.
Título: Programación defensiva, extrema y por parejas
Publicado por: nosferacento en 24 de Noviembre 2011, 22:13
Vamos con otra:

PREGUNTA: ¿Cuál es la definición de programación defensiva, programación extrema y programación por parejas?


RESPUESTA: yo en pareja prefiero hacer otras cosas que no son programar. Bueno, vamos con las definiciones verdaderas.

 Programación defensiva: técnica de programación basada en maximizar las verificaciones suponiendo que las peticiones de clientes o entradas de usuario no tienen por qué responder a lógica alguna. Busca mejorar la calidad del software evitando errores, pero supone más código y uso de recursos en verificaciones.

Programación extrema: considerar que los cambios de requisitos sobre la marcha son un aspecto natural, inevitable e incluso deseable del desarrollo de proyectos. Según esta técnica, ser capaces de adaptarnos a los cambios de requisitos en cualquier punto de la vida del proyecto es una aproximación mejor y más realista que intentar definir todos los requisitos al comienzo del proyecto. Una técnica dentro de la programación extrema es la programación por parejas.

Programación por parejas: técnica que se basa en que la implementación de una clase no la realiza una persona sola para después pasar a revisión por otra, sino que el desarrollo de la clase se hace entre dos personas con comunicación constante desde el primer momento.
Título: interceptar evento cierre ventana en Java
Publicado por: nosferacento en 25 de Noviembre 2011, 10:21
PREGUNTA: ¿Qué interface y clase hemos de usar para interceptar el evento de cierre de una ventana?

RESPUESTA: Interface WindowListener, clase WindowAdapter. Mucha gente piensa que se usaría un ActionListener, pero JFrame no tiene disponible el método addActionListener, sí en cambio el método addWindowListener. Lo mejor es hacer un pequeño código y verlo con nuestros propios ojos, porque si no lo hacemos memorizarlo sin más es un poco difícil. Queda dicho.
Título: forma en que se pasan los parámetros a métodos y constructores java
Publicado por: nosferacento en 26 de Noviembre 2011, 00:14
PREGUNTA: ¿Qué resultado se obtiene al ejecutar este código Java?

public class test {
    public static void add3 (Integer i) {
        int val = i.intValue();
        val += 3;
        i = new Integer (val);
    }

    public static void main (String args[]) {
        Integer i = new Integer (0);
        add3 (i);
        System.out.println (i.intValue ( ) );
    }
}


RESPUESTA:

Esta pregunta tiene su interés, ya que en el fondo está la forma en que se pasan los parámetros a los métodos y constructores: ¿por valor o por variable? Por pantalla se imprime un 0. i = new Integer (val) es una modificación de la referencia a objeto que es la variable. Como la referencia a objeto se pasa por valor (una copia), esta modificación no es conocida luego en el main. Resultado, se imprime un cero.
Título: por valor o referencia java
Publicado por: nosferacento en 27 de Noviembre 2011, 18:18
Por si no ha quedado claro: los parámetros en Java se pasan por valor. Lo que pasa es que en java al tratarse de programación orientada a objetos sacar conclusiones de esta afirmación no es igual de fácil que en otros lenguajes. Este es uno de los motivos por los que se dice que la programación orientada a objetos es un poco más complicada.
Título: sobrecarga de métodos en java
Publicado por: nosferacento en 28 de Noviembre 2011, 00:20
PREGUNTA: Dado el siguiente código, indicar si el método private void setVar (int a, float c, int b) { } constituiría una sobrecarga válida del método setVar.

public class Preg15testJunio {
public void setVar (int a, int b, float c) { }
// Nuevo código
}

RESPUESTA: Sí, este método sería una sobrecarga válida desde el momento en que los tipos de los parámetros no coinciden con los tipos del método ya escrito. En concreto en el ya escrito tenemos int, int, float y en el nuevo tenemos int, float, int. Sobrecargar implica que constituyan métodos distintos, y esto se produce. Sobreescribir sería otra cosa: que coincidan el nombre del método, de los parámetros y el tipo de los parámetros.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: carlinhomendez en 28 de Noviembre 2011, 18:31
Este hilo sobrecarga hasta el cortocircuito  :P
Título: sobrecarga válida de un método java
Publicado por: nosferacento en 29 de Noviembre 2011, 12:03
Eres un crack carlinho. Continuamos con el hilo cortocircuitador.

PREGUNTA: Dado el siguiente código, indicar si el método protected void setVar (int a, int b, float c) { } constituiría una sobrecarga válida del método setVar.

public class Preg15testJunio {
public void setVar (int a, int b, float c) { }
// Nuevo código
}

RESPUESTA: No, este método no sería una sobrecarga válida desde el momento en que coincide el nombre y los tipos de los parámetros.

Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Susana83 en 30 de Noviembre 2011, 10:17
Jijijiji, los programadores tienen una mente robótica!!, por eso ellos entenderán estas cosas...
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: javi in the sky en 01 de Diciembre 2011, 11:07
No mujer, tampoco es eso. No tenemos la mente robótica :D Es más parecido a sólo saber español e intentar hablar otro idioma con otra persona. Así con los lenguajes de programación es como 'hablamos' con los ordenadores, indicándoles que deben hacer.
Título: sobrecargar un método java
Publicado por: nosferacento en 12 de Diciembre 2011, 22:19
PREGUNTA: Dado el siguiente código, indicar si el método protected void setVar (int flin, int flan, float flon) { } constituiría una sobrecarga válida del método setVar.

public class Preg15testJunio {
public void setVar (int a, int b, float c) { }
// Nuevo código
}

RESPUESTA: No, este método no sería una sobrecarga válida desde el momento en que coinciden los tipos de los parámetros y el nombre del método. Que el nombre de los parámetros no coincida es irrelevante, ya que esto no permite diferenciar un método de otro a la hora de invocarlo.
Título: sobrecarga válida según tipos de parámetros java
Publicado por: nosferacento en 17 de Diciembre 2011, 00:39
Aquí sigue el rayo que no cesa del Java, también llamado el tío de la vara del Java o el cansino histórico del Java, ofreciendo suculentas preguntas y respuestas.

PREGUNTA: Dado el siguiente código, indicar si el método public int setVar (float a, int b, int c) {return b;} constituiría una sobrecarga válida del método setVar.

public class Preg15testJunio {
public void setVar (int a, int b, float c) { }
// Nuevo código
}

RESPUESTA: Sí, sería una sobrecarga válida desde el momento en que coincide el nombre pero los tipos de los parámetros son distintos. No sería válida si los tipos fueran coincidentes.
Título: condición que puede evaluarse en un if java
Publicado por: nosferacento en 18 de Diciembre 2011, 17:24
PREGUNTA: ¿Cuál es el resultado de ejecutar este código?

int i=0;
        if (i) {
            System.out.println ("Hello");
        }


RESPUESTA: Error de compilación: en el if se espera un tipo boolean y se encuentra un tipo int. Tampoco sería válido i || i por el mismo motivo. Sí sería válido i ==i (imprimiría Hello) ó i!=i (no imprimiría nada por pantalla).
Título: ausencia de llaves en el if en el código java
Publicado por: nosferacento en 19 de Diciembre 2011, 00:09
PREGUNTA: ¿Cuál es el resultado de ejecutar este código?

   int i=1;
   int j=2;
   if(i==1 || j==2)
   System.out.println ("OK");


RESPUESTA: Se muestra por pantalla OK. La ausencia de llaves en el if se admite, ejecutándose como consecuencia la primera instrucción a continuación del if.
Título: variables estáticas o de clase en java
Publicado por: nosferacento en 27 de Diciembre 2011, 12:52
PREGUNTA: ¿Cuál es el resultado de ejecutar este código?

public class Preg3Pass {
    static int j=20;
    public static void main (String[] Args) {
        int i=10;
        Preg3Pass p = new Preg3Pass();
        p.ametodo(i);
        System.out.println(i);
        System.out.println(j);
    }

    public void ametodo (int x) {
        x=x*2;
        j=j*2;
    }
}


RESPUESTA: Se muestra por pantalla 10 y 40. Razonamiento: la variable j es una variable de clase pero una variable: no es una constante porque para serlo debería llevar la palabra clave final. Por tanto es conocida en toda la clase (constructor y métodos).  En el main la variable i se pasa como parámetro al método por valor (una copia) con lo cual la modificación del parámetro no es conocida fuera del método. Sin embargo, la modificación de una variable de clase sí es conocida si se realiza la manipulación directamente.
Título: uso de constructor java y forma de paso de variables a métodos por valor
Publicado por: nosferacento en 09 de Enero 2012, 11:40
PREGUNTA: ¿Cuál es el resultado de ejecutar este código?

public class Probando {
    boolean prueba = false;   

    public Probando() {trocar(prueba);
        System.out.println (prueba);}

    public static void main (String[] Args) {
        Probando p = new Probando ();   
    }

    public boolean trocar (boolean v) {
        v = !v;
        return v;
    }
}

RESPUESTA: Se muestra por pantalla false. Razonamiento: al crear un objeto se invoca el constructor. La ejecución del método devuelve true, pero esto no tiene efectos sobre la variable porque la variable se pasa por valor. 
Título: al crear un objeto se invoca al constructor
Publicado por: nosferacento en 25 de Enero 2012, 00:13
PREGUNTA: ¿Cuál es el resultado de ejecutar este código?

public class Probando {
    boolean prueba = false;   

    public Probando() {trocar(prueba);
        System.out.println (prueba);}

    public static void main (String[] Args) {
        Probando p = new Probando ();   
    }

    public boolean trocar (boolean v) {
        prueba = !prueba;
        return prueba;
    }
}


RESPUESTA: Se muestra por pantalla true. Razonamiento: al crear un objeto se invoca el constructor. En el método se manipula la variable prueba directamente, no el parámetro que realmente no tiene funcionalidad tal y como está definido. 
Título: variable estática no puede usarse en contexto no estático java
Publicado por: nosferacento en 29 de Enero 2012, 16:57
PREGUNTA: ¿Cuál es el resultado de ejecutar este código?

public class Probando {
    boolean prueba = false;   
    public Probando() { System.out.println (prueba);}
    public static void main (String[] Args) {
        Probando p = new Probando ();   
        System.out.println (!prueba);
    } 
}


RESPUESTA: Error de compilación: una variable no estática no puede ser utilizada en un contexto estático.  Un método estático solo podrá trabajar con atributos estáticos, ya que un método de clase se invoca bajo el nombre de la clase, no bajo el nombre de un objeto. No tendría sentido manipular directamente atributos de objeto dentro de un método estático. En el contexto estático sí podremos crear y manipular objetos a través de los métodos propios de dichos objetos.

Título: operador % u operador mod en java
Publicado por: nosferacento en 30 de Enero 2012, 00:46
PREGUNTA: ¿Cuál es el resultado de n%6 para cualquier entero?

RESPUESTA: % es el operador mod, o resto de una división. 0%6 =6; 1%6=5; 2%6=4; 3%6=3; 4%6=2; 5%6=1; 6%6 =0; 7%6 = 1 y seguimos igual con 2, 3, 4…Tenemos enteros de 0 a 6, pero ¿qué ocurre con los números negativos? -1%6 =-1; -2%6= -2 …hasta -6%6=0. Por tanto el resultado de n%6 para cualquier entero es -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 ó 5.
Título: diálogos que posee la clase de Swing JOptionPane java
Publicado por: nosferacento en 07 de Febrero 2012, 11:23
PREGUNTA: ¿Cuáles son los tres tipos estándar de diálogos que posee la clase de Swing JOptionPane?

RESPUESTA: Diálogo de mensaje, diálogo de entrada y diálogo de confirmación. Así de breve  :o
Título: concepto de excepción java
Publicado por: nosferacento en 12 de Febrero 2012, 07:53
PREGUNTA: ¿Qué es una excepción?


RESPUESTA: Una excepción es un objeto que contiene información relativa a los detalles de un error en la ejecución de un programa.
Título: clases y subclases java
Publicado por: nosferacento en 15 de Febrero 2012, 08:16
PREGUNTA: Si la clase Y es una subclase de la clase X. ¿Cuál de los siguientes códigos no compilará?

a. X objeto=new X();
b. Y objeto=new X();
c. Y objeto= new Y();
d. X objeto=new Y();

RESPUESTA: La opción a compila sin problemas. La opción c también.  X objeto = new Y (); compila puesto que las superclases son polimórficas y admiten tipos de las subclases. Un vehículo puede crearse definiéndolo como un coche.
No compilará la opción b: un coche no puede crearse definiéndolo como un vehículo.  ;)
Título: variable calificada como final java
Publicado por: nosferacento en 18 de Febrero 2012, 08:27
PREGUNTA: Si una variable calificada como final referencia a un objeto, ¿es posible modificar el objeto al que apunta dicha variable mientras el programa se está ejecutando?



RESPUESTA: No, no es posible. Al estar declarado como constante no es posible modificación alguna.
Título: tipo de retorno método add interfaces set y list
Publicado por: nosferacento en 20 de Febrero 2012, 17:25
PREGUNTA: ¿Cuál es el tipo de retorno para los métodos add (E e) de las interfaces Set y List?


RESPUESTA: Podríamos pensar que el tipo es void, porque es una operación en la que usualmente no esperamos un retorno. Sin embargo, el tipo de retorno es boolean, y nos sirve para comprobar si la inserción efectivamente se hizo o no se hizo en el caso de que queramos hacerlo. Por ejemplo, el retorno será false si intentamos insertar un elemento duplicado en un set.
Título: contar el número de objetos o instancias de una clase
Publicado por: nosferacento en 23 de Febrero 2012, 17:51
PREGUNTA: ¿Puede una clase contar cuántas instancias han sido creadas de dicha clase?

RESPUESTA: Sí, bastaría con incluir una variable estática (de clase) que en el constructor se incrementara unitariamente cada vez que se crea una instancia de dicha clase.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 25 de Febrero 2012, 10:25
¿Hay alguien ahí?
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: jospitalito en 04 de Marzo 2012, 16:23
Creo que aunque habrá personas a las que les sirva y otras no el esfuerzo y aportación que están haciendo es de agradecer  ;)
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: javi in the sky en 05 de Marzo 2012, 00:14
Te seguimos desde los inicios -- > muy buena aportación -- > adelante y gracias
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: manuromero73 en 14 de Marzo 2012, 00:01
He estado ojeando este hilo y me parece de lo más interesante
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 17 de Marzo 2012, 16:06
ok chicos gracias por los comentarios, continuaré hasta que se me acaben las fuerzas (o hasta que no me queden más preguntas  :-\)
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 24 de Marzo 2012, 00:03
... no me he ido, sólo estoy cogiendo fuerzas  :o  ;D
Título: crear instancia directamente de una interface java
Publicado por: nosferacento en 26 de Marzo 2012, 00:08
Esta pregunta tiene interés comprenderla bien.

PREGUNTA: ¿Cuál será el resultado de ejecutar este código?

List <String> list = Arrays.asList ("a", "b", "c");
System.out.println (list);


RESPUESTA: Este es un caso curioso, porque List es una interface, y por lo tanto no es instanciable. Podría parecer que por ello nos saltaría un error de compilación, pero no es así. El tipo devuelto por Arrays.asList es simplemente List, lo cual tampoco nos aclara mucho. No obstante, el resultado de ejecución es que se muestra por pantalla [a, b, c], lo cual muestra que se ha creado un objeto. ¿De qué tipo? Si nos ponemos a investigar…

if (list instanceof AbstractList) {System.out.println ("Es una instancia de AbstracList");}

        if (list instanceof ArrayList) {System.out.println ("Es una instancia de ArrayList");}

        if (list instanceof AbstractSequentialList) {System.out.println ("Es una instancia de AbstractSequentialList");}

 El resultado es que por defecto Java, al menos en Java 6, le asigna por defecto el tipo AbstractList.

List <Integer> miListaEnteros = Arrays.asList (1, 5, 7, 13, 21); también es válido.

No obstante, el uso de esta sintaxis da lugar a comportamientos extraños. Por ejemplo, se permite la modificación de la lista con el método set pero no se permite su ampliación con el método add.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 08 de Abril 2012, 12:21
Si está todo bien comprendido continúo...  8)
Título: clase ArrayList y forma de crear objetos
Publicado por: nosferacento en 23 de Abril 2012, 00:03
PREGUNTA:

¿Cuál es el resultado de ejecutar este código?

List <String> list = new ArrayList<String> (Arrays.asList ("a", "b", "c")) ;
    List <Integer> miListaEnteros = new ArrayList<Integer> ( Arrays.asList (1, 5, 7, 13, 21)) ;


RESPUESTA: El código compila y se crean los ArrayList correctamente.
Título: obligatoriedad sentencia return función java
Publicado por: nosferacento en 24 de Abril 2012, 00:11
PREGUNTA: ¿Qué faltaría en el siguiente código para que sea válido?

public String getNombre () {
   if (nombre==null) {trhow new NullPointerException(); } else {
return this.nombre; }   

RESPUESTA: Podría parecer que falta una sentencia return en la primera parte del condicional, pero en realidad no es así. El lanzamiento de una excepción con throw interrumpe la ejecución del método, por lo que no es necesaria sentencia return en estos casos. Por tanto no falta nada. Pregunta con truco!!!
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ana en 24 de Abril 2012, 15:39
Buenas tardes, nosferacento

El día 22 de mayo tengo examen en la uned de esta asignatura y me está valiendo de mucho, me sirve de apoyo para estudiar. Es lo mejor que he encontrado. Todos los días, desde que lo descrubi, entro para prepararme la asignatura
Gracias, como apruebe, será por ti
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 24 de Abril 2012, 15:49
Hola Ana, gracias por esas palabras de ánimo  ;D ;D ;D ;D

Aunque aprobar, si apruebas, será por tus méritos, no por los de otros (y también porque los profesores no se decidan por poner un examen "extremo-duro", cosa que también ha pasado en alguna que otra ocasión).

De cualquier manera te recomiendo que en la parte de problemas intentes responder a todos los apartados, lo hagas bien o mal.

Supongo que irás sobrada de material de estudio, pero estos apuntes también van muy bien: https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188 .No está el temario completo, pero lo que está va sobre ruedas.

Suerte!!!
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ana en 24 de Abril 2012, 16:34
la parte de problemas?
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 24 de Abril 2012, 16:52
Si estamos hablando de la misma asignatura (Programación Orientada a Objetos del Grado en Ingeniería Informática o del grado en Tecnologías de la Información de la UNED), el año pasado los exámenes consistieron en 15 preguntas tipo test ("parte teórica") y un problema o "parte práctica" dividido en varios apartados.

La parte teórica se corresponde más o menos con las preguntas que hay en este foro. La parte práctica es distinta... pueden pedir cosas variadas. El año pasado la parte práctica fue distinta según la convocatoria... y lo que piden es variado. Por ejemplo, implementar un método para el problema que ellos definen, o dibujar un esquema de organización de clases... o alguna pregunta sobre qué modificaciones serían necesarias para hacer algo...

Supongo que conoces que en la UNED Catalayud hay una recopilación de exámenes de todas las asignaturas de todas las carreras. De todas formas si no los has visto, aquí tienes el enlace: http://www.calatayud.unedaragon.org/examenes/examenes_auth.asp

Es importante mirar los exámenes de años anteriores para tener mejor orientación!!!
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ana en 24 de Abril 2012, 16:56
Si, si conozco, crei que te estabas refiendo a algún apartado de este foro sobre más examenes practicos aunque no sean de la Uned, para practicar.
Las preguntas y respuestas que has colgado aqui, sé que muchas son de la uned, pero me vienen muy bien las explicaciones.
Título: alcance sentencia throw en constructor java
Publicado por: nosferacento en 25 de Abril 2012, 07:55
Continuamos...

PREGUNTA: Durante la ejecución de un constructor, ejecutada la mitad del código del mismo, se alcanza una sentencia throw. ¿Llega a crearse el objeto?

RESPUESTA: No, si se alcanza una sentencia throw durante la ejecución del constructor no llega a crearse el objeto.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: mani en 29 de Abril 2012, 11:34
Hola,
¿Podrías decirme cuál es la respuesta correcta a la siguiente pregunta de examen, y en que parte del libro de texto se puede encontrar?

Cuando varios componentes de un software colaboran para completar una misma tarea se dice que entre ellos hay...
a.- una clase clara y bien definida.
b.- una instancia clara y bien definida.
c.- una interfaz clara y bien definida.
d.- un proceso claro y bien definida.

Gracias.

Un saludo.
Título: varios componentes de un software colaboran
Publicado por: nosferacento en 29 de Abril 2012, 11:50
Hola mani, esta pregunta que planteas se puede encuadrar dentro de las preguntas "discutibles". Vamos a plantearla y después te comento algo al respecto:

PREGUNTA: Cuando varios componentes de un software colaboran para completar una misma tarea se dice que entre ellos hay ¿el qué?

RESPUESTA: 1.   Cuando varios componentes de un software colaboran para completar una misma tarea se dice que entre ellos hay una interfaz clara y bien definida. Esta pregunta es bastante discutible, porque realmente las respuestas pueden ser múltiples. Sin embargo, aquí de lo que se trata es de aprender Java por un lado y de aprobar el examen por otro, así que apréndete la respuesta de memoria para el examen y listo.

En el libro "Programación orientada a objetos con Java" lo tienes en el apartado 6.5 "Modularización e interfaces"(Capítulo 6, pg 187, 2º párrafo, aunque puede variar con la edición).

Como te digo esta pregunta puede considerarse poco afortunada, o quizás malintencionada, no lo sé; el caso es que yo no le daría mayor trascendencia, aprendérsela de memoria y listo.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: mani en 29 de Abril 2012, 20:28
Gracias,
Otra pregunta:
Un metodo de la clase static. ¿se podría llamar sin instanciar un objeto de la clase?.
a.- No, siempre hay que declarar el objeto y luego llamar al metodo.
b.- No, siempre hay que hay que declarar el objeto, crearlo y a continuación llamar al metodo.
c.- Sí, se podría llamar al metodo desde la misma clase.
d.- Sí, se podría llamar al metodo pero sólo si la clase es abstracta.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 29 de Abril 2012, 20:56
No estoy muy seguro de que tengas bien copiado el enunciado de esa pregunta. Al menos no veo claro qué quiere decir "Un método de la clase static..." Quizás fuera entendible si el enunciado fuera: "Un método estático de una clase ¿se podría llamar sin instanciar un objeto de la clase?
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: mani en 29 de Abril 2012, 20:59
El enunciado dice un método de clase static...
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 29 de Abril 2012, 21:31
No es lo mismo "un método de la clase static" que "un método de clase static".

Te doy mi opinión: creamos una clase denominada prueba con este contenido

import java.util.Scanner;

public class prueba {
    public static void miMetodo () {
                System.out.println ("Introduzca el primer número (entero):");
        Scanner ent1 = new Scanner(System.in);
        int num1 = ent1.nextInt();

        System.out.println ("Introduzca el segundo número (real)");
        Scanner ent2 = new Scanner(System.in);
        double num2 = ent2.nextDouble();

        System.out.println ("El producto de los dos números es " + (num1 * num2) );
    }
}

A continuación creamos una clase denominada sumaDosNumeros con este contenido:


public class sumaDosNumeros {
    public static void main (String[] Args) {
        prueba.miMetodo();
    }

}

Resultado: ejecutamos el main y el programa se ejecuta correctamente.

Conclusión:

Se puede llamar al método sin instanciar un objeto de la clase.

Yo no veo ninguna de las respuestas clara, si tuviera que responder respondería la c) por eliminación.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: mani en 30 de Abril 2012, 11:01
Hola,
Otra pregunta del examen de septiembre.

¿Cuáles de las siguientes declaraciones nunca podrían generar dos objetos de la misma clase con los mismos valores?.
a.- Triangulo objCir1 = new Triangulo(5,8);
     Triangulo objCir2 = new Triangulo(objCir1);
b.- Triangulo objCir1 = new Triangulo(5,8);
     Triangulo objCir2 = objCir1;
c.- Triangulo objCir1 = new Triangulo(5,8);
     Triangulo objCir2 = new Triangulo(5,8);
d.- Triangulo objCir1 = new Triangulo(5);
     Triangulo objCir2 = new Triangulo(5);

Un saludo.

 
Título: objetos y variables que apuntan a objetos java
Publicado por: nosferacento en 30 de Abril 2012, 11:56
Veamos las opciones que sí pueden generar dos objetos de la misma clase con los mismos valores:

a) La clase Triangulo podría tener dos constructores, uno que reciba dos parámetros y otro que reciba un objeto de la clase. El constructor que recibe el objeto de la clase podría servir para crear otro objeto con los mismos valores.

c) Estamos generando dos objetos de la misma clase en principio con los mismos valores porque le pasamos los mismos parámetros

d) Estamos generando dos objetos de la misma clase en principio con los mismos valores porque le pasamos los mismos parámetros

Ahora nos queda la opción b) ¿Qué es lo que hace?

Declara una variable apuntadora objCir1 y crea un objeto (espacio de memoria) al que apunta la variable.

Luego declara una variable apuntadora objCir2 y dice que esa variable apuntadora apunta al mismo objeto al que está apuntando la otra variable.

Por tanto de esta manera nunca creamos dos objetos ya que lo que hacemos es crear un objeto y tener dos variables que apuntan a él.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: mani en 01 de Mayo 2012, 14:16
¿Se podría encontrar en algún sitio las partes prácticas de los examenes del año pasado resueltas?.

Un saludo.
Título: exámenes de programación orientada a objetos
Publicado por: nosferacento en 02 de Mayo 2012, 08:05
Hola mani, yo no tengo las partes prácticas resueltas... podría mirarlo pero me llevaría bastante tiempo  ::).

La alternativa más rápida -> Los exámenes de la UNED se recopilan en la web de la UNED Catalayud que supongo conoces, donde hay una recopilación de exámenes de todas las asignaturas de todas las carreras.

Ahí se pueden consultar los exámenes de Programación Orientada a Objetos del año pasado. No sé si están con soluciones, a veces publican las soluciones y a veces no. De cualquier manera, también podrías mirarte los exámenes de asignaturas similares donde se diera Java de otras carreras como Ingeniería Técnica Informática de Gestión, ya que suelen ser similares al menos en parte a los de las nuevas carreras.

De todas formas si no los has visto, aquí tienes el enlace: http://www.calatayud.unedaragon.org/examenes/examenes_auth.asp

También te animo a después de hacer el examen dejar alguno de esos ejercicios resueltos o preguntas resueltas por aquí. Saludos !
Título: usar throws para propagar una excepción no comprobada java
Publicado por: nosferacento en 05 de Mayo 2012, 14:14
PREGUNTA: ¿Es necesario usar throws para propagar una excepción no comprobada?

RESPUESTA: No, no resulta necesario pues las excepciones no controladas se propagan solas sin necesidad del throws.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: jurtos en 06 de Mayo 2012, 14:34
Hola Nosferacento!
Enhorabuena por el foro!
Hay mucha gente que te sigue, pero quería preguntarte
 ¿Sabes algún enlace de la UNED con soluciones a preguntas de exámenes de POO?
Nada más, muchas gracias por todo!
Sigue así.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: jurtos en 06 de Mayo 2012, 14:39
Ya miré en el depósito de exámenes de UNED/Calatayud y no hay soluciones
Título: examen resuelto Programación Orientada a Objetos UNED junio 2011
Publicado por: nosferacento en 06 de Mayo 2012, 15:37
Hola jurtos, gracias por insuflar ánimos  ;D

Ya se había comentado el tema, y el caso es que algo tenía por ahí pero claro, he tenido que estar buscando en cd´s donde tenía miles de archivos un poco desordenados   :-\

El caso es que voy a tratar de recuperar lo que vaya encontrando de utilidad. Aquí va una primera aportación, espero que la gente se anime y vaya subiendo cosas, de esta manera podremos hacer una buena recopilación... (y a la gente que está matriculada este año, a ver si suben las soluciones de los exámenes de este año).

Como decía, aquí va una pequeña aportación: un examen de junio de 2011, segunda semana, tipo B, resuelto. Yo creo que la solución que como digo dejo como adjunto a este post (fichero Solucion_Examen_Programacion_Objetos_2a_Sem_Junio_2011_B.pdf, pinchar sobre el nombre del fichero estando logeado y cuando pregunte "¿Desea abrir o descargar? elegir descargar) fue aportada por el equipo docente el año pasado. Por eso me extraña que no esté publicada en la web de UNED Catalayud. En este post va el test y en el próximo la parte práctica.

Una apreciación para que la gente no se desanime: hay exámenes de POO que son "muy duros, de altísimo nivel" y otros que son "normales". Este examen que he puesto como adjunto es "muy duro". Tan duro, que el índice de aprobados tuvo que estar por los suelos ya que tanto el tipo test como la parte práctica eran de alta complejidad.

Repito: no tomar este examen pensando que es el nivel que se va a exigir y no desanimarse.

Trataré de buscar algún otro examen, ya vereis que en otros exámenes no se exigió tanto como en este.

¿Qué hacer si te toca un examen "matador" como este? Pues nada, intentar hacerlo lo mejor posible. Y si no sale bien, pues para septiembre  :'(



Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 06 de Mayo 2012, 15:41
En este post va como adjunto la solución de la parte práctica del examen de junio de 2011, segunda semana, tipo B, resuelto (pulsar sobre el nombre del fichero estando logeado y cuando pregunte ¿Desea abrir o descargar? elegir descargar).

A estudiar !!!
Título: sentencias protegidas
Publicado por: nosferacento en 12 de Mayo 2012, 00:23
PREGUNTA: ¿Cómo se denominan las sentencias dentro de un bloque try - catch?

a.   Sentencias probadas
b.   Sentencias cacheadas
c.   Sentencias protectoras
d.   Sentencias protegidas


RESPUESTA: Sentencias protegidas.

Observaciones: esta pregunta no tiene mucho sentido... vamos, pura memoria. Aprendérselo de memoria y a correr.
Título: @throws NullPointerException comentario java
Publicado por: nosferacento en 14 de Mayo 2012, 00:19
PREGUNTA: ¿Qué significado tiene @throws NullPointerException?


RESPUESTA: Es un comentario javadoc. No afecta a nivel de código.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ana en 14 de Mayo 2012, 17:39
Hola nosferacento
No tendrás la práctica del examen de Septiembre-2011 Modelo A, hecha verdad?
Igual es mucho pedir, pero no la consigo y a mí me está constando hacerla y no sé si voy por buen camino.
Gracias de antemano
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 15 de Mayo 2012, 13:50
Hola Ana, voy a tratar de mirarlo a ver si la tengo o si no si la puedo sacar... ::)
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ana en 15 de Mayo 2012, 14:37
GRACIAS, estoy en la recta final y toda información es buena.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Aniiita en 16 de Mayo 2012, 00:31
Muchísimas gracias nosferacento por el aporte que estás haciendo. He descubierto hoy este foro y ya me he leído todos los posts. Me han servido para aclarar muchas dudas que tenia.

Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 16 de Mayo 2012, 09:04
Gracias a todos y todas los que dan ánimos (http://www.radiomiami.us/img/emoticon/corazon.gif) (http://www.radiomiami.us/img/emoticon/corazon.gif) (http://www.radiomiami.us/img/emoticon/corazon.gif) (http://www.radiomiami.us/img/emoticon/corazon.gif) (http://www.radiomiami.us/img/emoticon/corazon.gif)
Título: parte práctica examen ingeniería informática uned sept 2011
Publicado por: nosferacento en 16 de Mayo 2012, 09:09
Voy a tratar de "meterle mano" a la parte práctica del examen que comentaba Ana.

ENUNCIADO DE LA PARTE PRÁCTICA EXAMEN SEPTIEMBRE 2011 TIPO A GRADO INGENIERÍA INFORMÁTICA – TECNOLOGÍAS DE LA INFORMACIÓN UNED

Un banco desea enviar a sus clientes una carta, mensaje de correo electrónico o mensaje al móvil (según los datos y preferencias de cada cliente) de agradecimiento por cada uno de los productos financieros que ha contratado el cliente. Cada cliente puede haber contratado varios productos (tarjetas de crédito, débito, plan de pensiones, seguro, fondos de inversión, etc.) y cada tipo de producto requiere una carta/mensaje diferente. Se quiere usar una jerarquía de clases para representar los diferentes tipos de producto y otra para los diferentes tipos de mensajes. Para el programa hay que usar un ArrayUst del tipo más adecuado más un iterador para gestionar el envío de mensajes conjuntamente.

a) [2 puntos] Identificar la estructura y las relaciones de herencia y de uso de las clases necesarias para la aplicación que realice el trabajo descrito.

b) [2 puntos] Dibujar un esquema de la organización de estas clases en el diseño global.

c) [2 puntos] Implementar el método "main" del programa mostrando cómo se gestiona el envío de los mensajes.

d) [0,5 puntos] ¿Qué cambios serían necesarios en el diseño y programa para mandar otro tipo de mensaje, algo de publicidad sobre nuevos productos, conjuntamente con el mensaje de agradecimiento?
Título: respuesta parte práctica a) examen uned septiembre 2011 A
Publicado por: nosferacento en 16 de Mayo 2012, 09:29
POSIBLE RESPUESTA PARA EL APARTADO a) PARTE PRÁCTICA EXAMEN SEPTIEMBRE 2011 TIPO A

Ojo: esto es la respuesta que daría yo. No quiere decir que sea la respuesta correcta. Se puede tener en cuenta a modo de orientación, pero no es “la respuesta exacta”.

a)   Definiremos una clase abstracta denominada Mensaje de la cual heredarán las clases Carta, Email y MovilMsg.

Mensaje la declaramos abstracta porque no vamos a instanciarla.

Definiremos otra clase denominada ProductoF, también abstracta porque no vamos a instanciarla tampoco, de la cual heredarán las clases que representarán a los distintos tipos de productos financieros: TarjetaCredito, TarjetaDebito, PlanPensiones, Seguro, FondoInversiones.

Usar una clase abstracta nos permite:

a)   Unificar los campos y métodos que van a tener en común todos los productos financieros.

b)   Obligar a que todos los productos financieros implementen los métodos abstractos que podamos definir en la clase ProductoF

c)   Valernos del polimorfismo que alcanzamos al declarar variables de tipo ProductoF.

Por ejemplo: ProductoF prod1 = new TarjetaCredito();

ProductoF prod2 = new PlanPensiones();

… etc… etc…


El tipo dinámico puede variar, pero al tener un mismo tipo estático podemos agrupar variables de tipo ProductoF en colecciones como ArrayList y realizar un tratamiento conjunto.

Los productos en sí estarán materializados en clases concretas, instanciables.

Definiremos otra clase Cliente entre cuyos campos tendremos un campo que represente la colección de productos contratados por el cliente (por tanto la clase Cliente mantiene una relación de uso con la clase ProductoF).

Otra clase será Preferencia. La definiremos como tipo enumerado y servirá para identificar los posibles tipos de preferencias de los clientes.

Finalmente la clase GestorBanco será la encargada de recibir los datos del cliente y gestionar el envío del agradecimiento a cada cliente.



Esto es más o menos una respuesta... repito que es orientativa, no la "solución oficial".
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ana en 16 de Mayo 2012, 11:04
Gracias, muchas gracias por tu esfuerzo.
Me voy a poner a desarrollarlo
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ana en 16 de Mayo 2012, 11:22
Una cosita más, por favor, ¿Como implementarias el metodo "main"?
Título: parte práctica examen programación orientada a objetos
Publicado por: nosferacento en 17 de Mayo 2012, 09:09
POSIBLE RESPUESTA PARA EL APARTADO b) PARTE PRÁCTICA EXAMEN SEPTIEMBRE 2011 TIPO A

Aquí dejo el fichero adjunto que responde a la pregunta b) de la parte práctica del examen de septiembre de 2011 tipo A (pulsar sobre el nombre del archivo estando logeado y cuando pregunte ¿Desea abrir o descargar? elegir descargar)

b) [2 puntos] Dibujar un esquema de la organización de estas clases en el diseño global.


Esto es más o menos una respuesta... repito que es orientativa, no la "solución oficial".

Este esquema vendría a corresponderse con la organización de clases que habíamos dado como respuesta a la pregunta a).

Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: bartvander en 17 de Mayo 2012, 15:33
Nosferacento gracias a ti los foros tienen sentido, eres un crack muchas gracias por hacernos la vida más fácil. Con gente como tu la vida sería mucho mejor. Sigue poniendo ejemplo y preguntas con sus respuestas, ya que creo que es la mejor manera de ayudar a personas ceporrinas como yo jajaja.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: bartvander en 17 de Mayo 2012, 15:50
Otra duda que me corroe es esta. No entiendo yo lo que es un float. En mi mente esta grabado que un float es de esta forma:

numero.mas números ejemplo 3.5, 1.0...
numero.mas numeros y letras ejemplo 3.43F

Ahora bien:


float foo = -1;  No entiendo por que es un float si no tiene el punto no es decimal.
float foo1 = 1.0; No entiendo por no es float si es decimal.
float foo2 = 42e1; Correcto no es float por que no es decimal
float foo3 = 2.02f; no se porque no es float
float foo4 = 3.03d; no se porque no es float
float foo5 = 0x0123; No se porque es float
double foo6 = 3.03d; no se porque no es float
double foo7 = 0x0123; No se porque es float
double foo8 = 0x012345; No se porque es float
double foo9 = 0x012345678; No se porque es float
double foo10 = 0x0123456789; No se porque es float
Título: conversión automática de tipos java
Publicado por: nosferacento en 17 de Mayo 2012, 18:04
ufff!

¿los foros tienen sentido? Reflexión demasiado trascendental para poder procesarla ---> nosferacento.java.lang Index out of Memory  :o

Y sobre lo de ceporrinos, igual podíamos formar un club... el mundo está lleno de gente como nosotros.

Veamos las cuestiones que planteas, por lo menos para tratar de ir digiriendo algunas:

float foo = -1;  No entiendo por que es un float si no tiene el punto no es decimal.


RESPUESTA: partamos de repasar los conceptos de autoboxing y unboxing en Java. Cada tipo primitivo en Java tiene su tipo equivalente objeto. Por ejemplo el primitivo int, el objeto Integer. Estos tipos objeto se denominan "tipos envoltorio".

Hay clases java como ArrayList que solo admiten objetos. ¿Se complica entonces el trabajar con ArrayList de números simples que sean int? Los creadores de Java previeron este problema y para ello crearon lo que se denomina "Autoboxing y unboxing" o "Conversión automática de tipos". El compilador de Java realiza un proceso en segundo plano por el cual cuando se espera un tipo envoltorio y se le pasa un primitivo realiza una conversión para adaptarlo (autoboxing), o al revés, cuando se espera un primitivo y se le pasa un envoltorio, transforma automáticamente el envoltorio evitando que salte un error.

Entonces, el compilador de Java en algunas ocasiones es muy exigente y nos obliga a hacer cosas de forma estricta, y en otros casos nos ayuda realizando conversiones automáticas similares a lo que hemos comentado.

¿Qué pasa cuando ejecutas esto?

public class PerezosoTest {
    public static void main (String[] Args){
        float foo = -1;     
        System.out.println ("Probando" +foo);
        }
}


Por arte de birlibirloque tú habías escrito -1 y en pantalla te sale Probando -1.0

¿Qué te está devolviendo? Un float

¿Por qué te devuelve un float? Porque el compilador de Java cuando recibe un número entero asignado a una variable float, lo transforma automáticamente.

¿Y cómo se entera uno de estas cosas? Pues haciendo pruebas como esta que te he puesto aquí arriba y dedicándole tiempo. Si los creadores de Java hubieran decidido que en vez de hacer esta conversión automática saltara un error, pues saltaría un error. Quienes no hemos sido los creadores tenemos que averiguarlo.
Título: forma obligatoria para declarar float en java
Publicado por: nosferacento en 17 de Mayo 2012, 18:09
Una más:

float foo1 = 1.0; No entiendo por no es float si es decimal.

Efectivamente es un decimal, pero los creadores de Java decidieron que para declarar un float había que poner la f detrás, y si no se consideraría un double. ¿Lógico? Pues quizás sí, quizás no, pero so it is "así es". Siempre te queda la opción de buscar una oficina de Oracle y pedir el libro de reclamaciones  :-[

Yo sí le veo una lógica, y es obligar al que quiera usar un float a decirlo "alto y clarito". Y si no lo dice alto y clarito, deberá usar double que quizás puede considerarse más universal de cara a compatibilidades y cosas por el estilo.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Aniiita en 17 de Mayo 2012, 22:23
PREGUNTA: ¿Cuál es el resultado del siguiente programa?

public class ComparadorRaro {
   private Integer x;

   public boolean compare(int y){
      return x==y;
   }
   
   public static void main(String[] args) {
      ComparadorRaro u = new ComparadorRaro();
      if(u.compare(21)){
         System.out.println("true");
      }else{
         System.out.println("false");
      }
   }
}

a)true
b)false
c)Error de compilación en la línea 5
d)La línea 5 lanza una excepción NullPointerException


RESPUESTA: La respuesta correcta es la d) porque al no haber inicializado la variable x, Java por defecto al tratarse de un Integer la deja como null. Si en vez de un Integer tuviéramos un int, el programa devolvería "false" y la variable x tendría valor 0.

Espero que nadie caiga como yo en estas chorradas... jejeje
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 17 de Mayo 2012, 23:17
Aniita... me estás subiendo el nivel!!!. Esta última pregunta no la veo una chorrada porque elegir entre la c) y la d) no es tan obvio... hay algunas preguntas que tengo que mirar con calma porque me mareo con solo leerlas  ;)
Título: posible codigo metodo main examen septiembre 2011 a Uned
Publicado por: nosferacento en 18 de Mayo 2012, 14:28
Ana, no me he olvidado de tí

POSIBLE RESPUESTA PARA EL APARTADO c) PARTE PRÁCTICA EXAMEN SEPTIEMBRE 2011 TIPO A

Aquí dejo un posible código que respondería a la pregunta c) de la parte práctica del examen de septiembre de 2011 tipo A.

El enunciado decía: Un banco desea enviar a sus clientes una carta, mensaje de correo electrónico o mensaje al móvil (según los datos y preferencias de cada cliente) de agradecimiento por cada uno de los productos financieros que ha contratado el cliente. Cada cliente puede haber contratado varios productos (tarjetas de crédito, débito, plan de pensiones, seguro, fondos de inversión, etc.) y cada tipo de producto requiere una carta/mensaje diferente. Se quiere usar una jerarquía de clases para representar los diferentes tipos de producto y otra para los diferentes tipos de mensajes. Para el programa hay que usar un ArrayUst del tipo más adecuado más un iterador para gestionar el envío de mensajes conjuntamente.

c) [2 puntos] Implementar el método "main" del programa mostrando cómo se gestiona el envío de los mensajes.

Cosas a tener en cuenta

Cuando nos piden implementar código en un examen tenemos que tener en cuenta varias cosas:

- No hay tiempo suficiente para escribir todo el código necesario. Tendremos que indicar qué supuestos tomamos de partida.

- Tendremos que dedicarle cuatro o cinco minutos a pensar y empezar a escribir, porque el tiempo se nos irá volando.

- Convendrá escribir comentarios en el código que le den a entender a los profesores que sabemos lo que hacemos. Por ejemplo, tendremos que hacer llamadas a métodos pero no tendremos tiempo para escribir el código de los métodos a que llamamos. Deberemos al menos escribir un comentario indicando qué es lo que hace el método.



POSIBLE RESPUESTA A DAR EN EL EXAMEN

Lo que sigue es una posible respuesta, ojo, no es una respuesta oficial, tan solo una posible respuesta...

Tomaremos en consideración estas declaraciones previas:

List <Cliente> listaClientes = new ArrayList <Cliente> ();
//En listaClientes vamos a considerar que están almacenados todos los clientes del banco.

public enum PreferenciaCliente {PREF1, PREF2, PREF3};


Cada cliente tiene varios campos como:

private String nombre;
private String apellido1;
private String apellido2;
private PreferenciaCliente prefCliente;
private List<ProductoF> productosContratados;


Partiendo de estas consideraciones de partida, el código del método main sería:

public static void main (String [] Args) {

   //Suponemos que tenemos acceso a las variables que usamos

   Iterator <Cliente> it1 = listaClientes.iterator();

   while (it1.hasNext()) {

      Cliente tmpCliente = it1.next();
      Iterator <ProductoF> it2 = tmpCliente.getProductosContratados().iterator(); //Ya corregido faltaba iterator() gracias Aniiita
      PreferenciaCliente tmpPreferencia = tmpCliente.getPreferenciasCliente();

   // Con it1.next() vamos obteniendo cada uno de los clientes de la colección

   // El método getProductosContratados nos devuelve la colección de productos contratados por un cliente

   // El método getPreferenciaCliente nos devuelve el tipo de preferencia del cliente

   while (it2.hasNext()) {
      it2.next().gestionarEnvioAgradecimiento (tmpPreferencia, tmpCliente.getDatos());

   // Para cada producto invocamos un método denominado gestionarEnvioAgradecimiento que requiere como parámetro
   // una variable de tipo PreferenciaCliente que es la que informa al método cómo ha de gestionar el envío: por carta, por
   // mensaje de correo electrónico o por mensaje al móvil. Además le pasamos los datos del cliente usnado otro método.
      } //Cierre del while interno
   } // Cierre del while externo
} // Cierre del método main


El tratamiento que hemos previsto se resume de la siguiente manera: recorreremos la colección de clientes con un iterador, y para cada cliente usamos otro iterador para recorrer la colección de productos que tiene en cartera. Cada producto es remitido a un método para la gestión del envío del agradecimiento.


Título: dudas declaraciones de variables que admite el compilador
Publicado por: nosferacento en 19 de Mayo 2012, 12:35
Hola bartvander, trato de completar las respuestas sobre tipos de un post anterior. Viendo las preguntas, me da la impresión de que no has hecho pruebas con el compilador. Y si no haces pruebas y no escribes código, el estudio de la asignatura se te complica, porque muchas de los problemas de programación (incluso a nivel profesional) se resuelven a base de prueba y error, delante del ordenador. Está bien compaginar el estudio sobre "papel" o "libros" con estudio con el ordenador, no dedicarle todo el tiempo ni una cosa ni a otra. Pero te repito que si te pones delante del ordenador, tú mismo deberías ser capaz de resolver muchas de las dudas que te surgen.


YA RESPONDIDAS EN ANTERIOR POST

float foo = -1;  No entiendo por que es un float si no tiene el punto no es decimal.
float foo1 = 1.0; No entiendo por no es float si es decimal.


PENDIENTES DE RESPONDER

float foo2 = 42e1; Correcto no es float por que no es decimal

Yo diría que no es float porque el compilador java no admite la notación exponencial en la declaración de variables de tipo float. En realidad, si declaras foo2 como double verás que sí funciona y si lo imprimes por pantalla obtienes 420.0. Es decir, sí es decimal, lo que pasa es que el compilador no admite tratar de construir un float de esa manera (lo restringe para tipos double). No obstante, puedes forzar la construcción de foo2 a float escribiendo float foo2 = (float)42e1;
En este caso lo que hacemos es declarar que el double 42e1 debe transformarse a float, y así lo hace el compilador sin problemas.


float foo3 = 2.02f; no se porque no es float

¿Por qué dices o piensas que no es un float? Si lo pruebas en un pequeño programa verás que sí es un float. Tienes que trabajar haciendo pruebas con el ordenador delante, porque hay cosas que estudiarlas como se estudiaría otra materia es imposible.



float foo4 = 3.03d; no se porque no es float

Pues no es un float porque estás escribiendo 3.03d donde la d final significa que ese número es un double. Y si dices que es un double, no es un float. Si quieres puedes forzar la conversión a float escribiendo: float foo4 = (float)3.03d;
Pero esto es un poco enrevesado, aunque no está de más saber que poderse se puede.


float foo5 = 0x0123; No se porque es float

Vamos a ver, yo esto me lo aprendería de memoria. "Cualquier dirección de memoria escrita como 0xN, donde N representan a un valor dentro del rango de los enteros (pueden ser 1, 2, 3 ... hasta 8 dígitos), puede ser asignada a cualquier tipo numérico, sea tipo primitivo o tipo objeto. ¿Por qué? Porque el compilador en esas direcciones de memoria encuentra valores numéricos y las asimila a cualquier cosa que tú le digas (int, double, float, Integer, etc.). ¿Y por qué el compilador responde así? Pues porque los creadores de Java han querido que sea así. No le daría más vueltas. Si quieres, haz pruebas con el compilador.


double foo6 = 3.03d; no se porque no es float

Caso idéntico a uno ya explicado anteriormente.


double foo7 = 0x0123; No se porque es float

Lo que no sé yo es por qué opinas o crees que es un float, cuando estás declarando que es un double es que es un double. Si ejecutas este código en el compilador verás que te salta un error:

double foo7 = 0x0123;
float flinflanflin = foo7;

¿Por qué? Pues porque foo7 no es un float.



double foo8 = 0x012345; No se porque es float

Caso idéntico a uno ya explicado anteriormente. foo8 es un double, no un float


double foo9 = 0x012345678; No se porque es float

Caso idéntico a uno ya explicado anteriormente. foo8 es un double, no un float


double foo10 = 0x0123456789; No se porque es float

foo10 no es un float. Si fuera algo, sería un double. De cualquier manera, a mí al probarlo me da error porque me dice que 0123456789 es un número fuera del rango de los enteros.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 19 de Mayo 2012, 12:40
Aniita ... gracias por comunicar una errata que ya he corregido en un post anterior.

Lo corrijo sobre el post añadiéndole la observación //Ya corregido gracias Aniiita

Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: bartvander en 19 de Mayo 2012, 12:43
Ok nosfe.Me di cuenta de los últimos casos que declaraba como double. La verdad que tus post me están sirviendo para fijarme en cosas que antes no me fijaba y sobre todo para tener las cosas mucho más claras. En cuanto al tema que comentas del ordenador y libro, empezaré a estudiar así a ver si soy capaz y voy asimilando esa forma de estudiar. Como has visto tengo otras dudas que he ido poniendo según me surgían y que buscando en el libro no me quedan claras.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ogramar en 19 de Mayo 2012, 16:15
Con permiso de nosferacento trato de dar respuesta a estas preguntas de Aniiita:

1. En el siguiente fragmento de código hemos definido la ejecución de cinco bloques. Estos bloques se ejecutarán dependiendo de las excepciones que se produzcan en cada caso.

//Bloque 1
try{
   //Bloque 2
} catch (Exception error) {
   //Bloque 3
} catch (ArithmeticException ae) {
   //Bloque 4
}
//Bloque 5

Indique en que caso se ejecutaría el bloque 4:
a)Si se produce un acceso a un objeto nulo (null)
b)En ninguno de los casos anteriores
c)Si no se produce ninguna excepción
d)Si se produce una excepción de tipo aritmético

Justificación: antes del catch del bloque 4, que está controlado por una excepción aritmética, hay un catch que está controlado por una excepción. Desde el momento en que Exception engloba a ArithmeticException, resulta imposible acceder al bloque 4. Es decir, si se produce una excepción aritmética, será tratada en el bloque 3, por lo que nunca se alcanzará el bloque 4.


2.Si una variable calificada como final es una referencia a un objeto. ¿Cuál de las siguientes afirmaciones es falsa?

a)Es posible modificar los miembros del objeto mientras el programa se está ejecutando
b)Es posible modificar el objeto al que apunta dicha variable mientras el programa se está ejecutando
c)No es posible modificar el objeto al que apunta dicha variable mientras el programa se está ejecutando
d)Al contrario de lo que ocurre con las constantes, el valor de una variable final no tiene porque conocerse en tiempo de compilación

Desde mi punto de vista esta pregunta es confusa. No sería la primera vez que anulan una pregunta ya pasado un examen, por ser confusa.

Justificación: una variable declarada como final no admite cambios después de su declaración inicial y asignación de valor inicial, que tiene que conocerse en tiempo de compilación. Es decir, esa variable funcionará como una constante. Esa variable apunta a un objeto que sí es posible modificar (igual que cuando pasamos un objeto como parámetro a un método no podemos modificar la variable apuntadora pero sí el objeto).
Apartado a) - > Verdadero
Apartado b) - > desde el punto de vista que no se puede hacer que la variable apunte a otro objeto, falso.
Apartado c) - > desde el punto de vista que no se puede hacer que la variable apunte a otro objeto, Verdadero.
Apartado d) Yo diría que es falso.

ji,ji,ji... hay preguntas que mejor no darle muchas vueltas

(http://www.chicadelatele.com/myfiles/chicadelatele/romper-ordenador.png)
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 19 de Mayo 2012, 20:23
Esta pregunta ha sido revisada gracias a Array, aportación de junio de 2013. Gracias!  ;)

Si ponemos el enunciado completo creo que mejor.

Pregunta 9 ¿Qué tipo de acceso se puede emplear para sobrecargar los métodos que implementan una interfaz?

a) Pueden ser métodos con acceso public y private, pero no protected
b) Sólo pueden ser con acceso public
c) Sólo pueden ser con acceso private
d) Pueden emplear cualquier tipo de acceso de Java

RESPUESTA CORRECTA: la d)

Si revisamos las definiciones formales de sobrecarga y sobreescritura tendríamos:

Sobrecarga: Cuando más de un constructor o método tienen el mismo nombre pero distintos parámetros decimos que el constructor o método está sobrecargado. La sobrecarga de constructores o métodos permite llevar a cabo una tarea de distintas maneras (por ejemplo crear un objeto Persona con un nombre ya establecido o crearlo sin nombre establecido).

Sobreescritura: Decimos que un método está sobreescrito cuando está presente, exactamente con la misma signatura, en una subclase y en una superclase.

Inicialmente pensábamos que la respuesta era la b), pero por confusión entre sobrecarga y sobreescritura. Ahí estaba "el desliz": solo se puede sobreescribir con acceso public, en cambio la sobrecarga (mismo método con distintos parámetros) se puede hacer usando cualquier tipo de acceso.

Usando este código:

Código: [Seleccionar]
interface A {
    public void C();
}

public class B implements A{
    public void C(){}
    private void C(int b){}
}

Comprobamos que el método definido en la interfaz se puede sobrecargar con cualquier tipo de acceso.

En cambio solo se puede sobreescribir con acceso public: si usamos este código de prueba

public class PerezosoTest implements Comparable{
    public static void main (String[] Args){
        System.out.println ("Probando");
    }

    public int compareTo(Object o) {
        //Prueba
        return 1;
    } 
}

Comprobaremos que el intentar sobreescribir el método con protected o private no es permitido.

Recordar una cosa: en una interface todo método es abstracto y público sin necesidad de declararlo.

Un método de una interface no se puede sobreescribir basándonos en un tipo de acceso menos amplio que aquel que se tiene en la interfaz, que es public.

Sin embargo, sí se puede sobrecargar usando otros tipos de acceso.


Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ana en 20 de Mayo 2012, 18:46
Por favor, nosfercento, un último favor, podrías poner el método main del examen practico que hiciste el otro día? el de enviar una carta a los clientes de un banco. No se muy bien como plasmarlo.
Gracias.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 20 de Mayo 2012, 21:09
Yo juraría que ya lo había puesto... de hecho juraría que si miras en los mensajes anteriores lo vas a encontrar. Así que o bien estamos hablando de cosas distintas o bien es que con tanto mensaje no te has dado cuenta de que está un poco más arriba!!!

(http://notengomiedoalapaginaenblanco.files.wordpress.com/2011/09/sorpresa2.jpg)
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ana en 21 de Mayo 2012, 00:21
Si, si, perdon (la imagen es justo la cara que he puesto...jajajaja)
...pero me da error en la linea
Iterator<ProductoF> it2 = tmpCliente.getProductos().iterator()
me dice que "cannot find symbol - method iterator"
Por que?
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ogramar en 21 de Mayo 2012, 16:39
Hola Ana. Dices:

"...pero me da error en la linea
Iterator<ProductoF> it2 = tmpCliente.getProductos().iterator()
me dice que "cannot find symbol - method iterator"
Por que?"

¿Qué tipo de objeto te devuelve el método getProductos() aplicado sobre tmpCliente?

Comprueba qué es lo que estás obteniendo. Para poder usar el método iterator() debes estar obteniendo una colección, si no es así te fallará.

Por otro lado, si pones en un fichero txt el código de todas las clases igual puedo tratar de mirar a ver qué es lo que puede estar pasando.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ana en 21 de Mayo 2012, 17:08
Si, gracias, lo envio. De todas maneras no está del todo terminado, faltas la clase abstracta Mensajes ... Lo estoy utilizando como base para el examen de mañana y tengo un cacao en la cabeza que ya no se lo que pongo.
Gracias, de verdad.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 21 de Mayo 2012, 18:49
MUCHA SUERTE A TODOS LOS QUE SE EXAMINAN MAÑANA!!!!!!

Espero que después del examen se acuerden y dejen alguna pregunta y respuesta por aquí para ir completando la colección.

Y alguna recomendación... para quien quiera tomarlas en cuenta.  Mantengan la calma. Conocer todo Java es imposible, no pretendan abarcarlo todo en unas pocas horas que quedan. Y en la parte práctica, traten de responder todos los apartados calculando el tiempo disponible, no se enrollen con un apartado y dejen los demás sin responder.

Pregunta planteada por bartvander:

Pongamos el enunciado completo:

Pregunta 6

Sea "c1" una clase con 6 atributos, y sea "c2" otra clase con 3 atributos, 3 de los atributos de "c1" son los de la clase "c2". Tienen los mismos métodos aunque algunos se comportan de manera diferente. ¿Qué relación de herencia es la correcta y por qué?

a) No se puede establecer herencia dado que los mismos métodos se comportan de manera diferente
b) No se puede establecer herencia dado que los atributos no son exactamente los mismos
c) "c2" es hija de "c1" dado que todos sus atributos están incluidos en "c2"
d) "c1" es hija de "c2" dado que incluye sus atributos y añade nuevos

a No es correcta porque puede haber herencia con sobreescritura de métodos.
b No es correcta. En herencia los atributos no tienen que ser exactamente los mismos
c No es correcta porque una clase hija debe tener al menos los mismos atributos que la superclase
d Puede ser ser herencia (respuesta a marcar)

bartvander: recuerda una cosa --- > Las subclases pueden sobreescribir los métodos de las superclases haciendo que el comportamiento sea distinto según se invoque sobre un objeto de la superclase o de la subclase.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Aniiita en 21 de Mayo 2012, 21:36
Muchísimas gracias y mucha suerte a todosss!!!! Intentaré añadir más preguntas y respuestas cuando vuelva del examen.

Por si a alguien le sirve de ayuda, he encontrado esta web para hacer tests, http://www.javaranch.com/game/game2.jsp, son preguntas de examen de la certificación de Java para programmer. A mi me está sirviendo de mucho.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: mlopezfu en 22 de Mayo 2012, 21:41
Buenas. Muchas gracias por vuestra ayuda. He hecho el examen de hoy. Ahora me estoy tomando una cervecita, pero a ver si luego puedo escánear el examen y lo subo.
La practica ha sido sobre el space invaders. Espero que haya suerte.

Un saludo
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 22 de Mayo 2012, 22:54
¿Space invaders? Eso suena a marcianitos... Por lo menos parece más interesante que el cinquillo, una de las partes prácticas del año pasado que se las traía en lata.

(http://th00.deviantart.net/fs71/150/f/2012/045/e/2/space_invaders_in_pixel_by_supersaiyancrypto-d4ps08p.png)
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: mlopezfu en 23 de Mayo 2012, 09:33
Hola

Os adjunto mi examen.

Ayer estaba optimista, hoy creo que la he cagado con la pregunta numero 2.

Conclusión para el proximo examen, contestar todas las preguntas del test.

Yo solo respondi 9, por lo que si fallo una estoy dentro, pero con dos estoy fuera.

Si hubiera respondido 10, con dos estoy dentro.

Si hubiera respondido 15, con 6 fallos estoy dentro, podria haber respondido las dudosas, que finalmente eran menos dudosas que las que contesté.

En definitiva, que con las 6 que contesté, si hubieran estado bien, hubiera podido fallar todo el resto.

Las cosas del directo, tenedlo en cuenta.

El resto del examen creo que me salio bien,pero es una lastima que no me lo vayan ni a mirar.

https://www.dropbox.com/sh/ur3r1kvsuwkvv24/fuU1tO4YsC/ExamenJunio2012-PrimeraSemana.pdf (https://www.dropbox.com/sh/ur3r1kvsuwkvv24/fuU1tO4YsC/ExamenJunio2012-PrimeraSemana.pdf)

Un saludo.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Ana en 23 de Mayo 2012, 16:38
Yo me he quedado a las puertas
8 bien 3 sin contestar y 4 mal;(total 4,67).Todavia hay 2 preguntas que está la gente en duda y tengo una minima esperanza, Son las 10 y la 13.
Snifffff
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 23 de Mayo 2012, 16:43
Animo a todos. Por si sirve de consuelo, tener en cuenta que los conocimientos que se han adquirido no se perderán de aquí a septiembre si es que toca volver. Y tener en cuenta que a veces las notas pueden variar incluso después de publicadas si se detectan erratas en los enunciados o solucionarios del examen, cosa que no es la primera vez que pasaría.  ;)
Título: concepto de método estático java
Publicado por: nosferacento en 27 de Mayo 2012, 21:24
Para algunos ya han pasado los exámenes  :-* Otros siguen en ello  :'( Y ¿qué toca? Pues... para algunos irse a la playa, para otros no.

PREGUNTA:

¿Qué métodos se cargan en memoria en tiempo de compilación o interpretación, antes de la ejecución?
a.   Métodos heurísticos
b.   Métodos protegidos
c.   Métodos heredados
d.   Métodos estáticos

RESPUESTA:

Los métodos estáticos.  Todo lo que es estático o static final (constantes) se cargan en tiempo de compilación. En realidad un método estático podría decirse que es algo "constante".
Título: sentencia try sin catch java
Publicado por: nosferacento en 28 de Mayo 2012, 00:44
PREGUNTA: ¿Una sentencia try puede carecer de catch?


RESPUESTA: Sí, si el error se va a propagar puede existir un try sin catch.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: e-gnacky en 28 de Mayo 2012, 08:37
Impresionante nosfarecento.
Me he registrado para felicitarte y para que hacerte saber que nos ayudas una barbaridad.
Gracias.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 28 de Mayo 2012, 10:53
Gracias e-gnacky!!! Voy haciendo lo que puedo... y agradezco un montón que lleguen mensajes como el tuyo y a todos los que están participando y ayudando con más o con menos.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 29 de Mayo 2012, 00:10
Ya veo bartvander que pones rumbo a septiembre... aunque yo me esperaría a que salgan las calificaciones, siempre puede haber alguna sorpresa. Para quien sueñe con septiembre

PREGUNTA: ¿Esta expresión podría formar parte del código de un programa?
assert this.isEmpty() == true;

RESPUESTA: Sí, corresponde a una aserción y puede formar parte del código Java. Una aserción puede verse como un formalismo lógico para la verificación de la corrección de un programa.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: bartvander en 29 de Mayo 2012, 00:24
Todavia tengo una esperanza. A ver si hay suerte
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: montse.urquijo en 03 de Junio 2012, 11:22
Muchas gracias por todo nosferacento.
La verdad es que me ha venido muy bien tu aportación para estudiar.
A ver que tal se nos da el examen del martes.

Un saludo
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 03 de Junio 2012, 12:20
Hola Montse. El año pasado el examen de la primera semana fue "normal", mientras que el examen de la segunda semana era bastante más complicado, podría decirse que con un poquito (o mucho) de mala leche. Esperemos que este año se porten mejor. De cualquier manera, sea cual sea el nivel de dificultad que traiga el examen, la recomendación es no dejar que eso te descentre. Sea cual sea el nivel, conviene controlar bien los tiempos y tratar de responder lo máximo posible. Por ejemplo, si el tipo test es muy complicado, hay quien tiende a dedicarle 1 hora y media al test y luego no tiene tiempo para responder nada de la parte práctica. Es mejor hacer una primera pasada al test respondiendo por ejemplo un 75 % de las preguntas dejando las más complicadas y seguir a la parte práctica antes que enfrascarse con el test y no hacer nada de la práctica.
Título: asertos y java.lang.AssertionError en java
Publicado por: nosferacento en 20 de Junio 2012, 18:18
PREGUNTA: ¿Qué ocurrirá si durante la ejecución de un programa se verifica que en la línea expuesta this.isEmpty() ==false?

Contenido de la línea:

assert this.isEmpty() == true;


RESPUESTA: Se produce una excepción de tipo java.lang.AssertionError. El uso de aserciones es útil para poder ir desarrollando un código más depurado pero no se mantienen en los programas finales o comerciales.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 21 de Junio 2012, 00:14
Algunos ya han pasado los exámenes y para otros empieza ahora la preparación. Aquí seguimos!
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 30 de Junio 2012, 12:13
PREGUNTA: Si usted va a hacer una entrega comercial de software, ¿qué intentará, que contenga el mayor número de aserciones posibles o que no contenga aserciones?


RESPUESTA: Que no contenga aserciones. Las aserciones están pensadas para la fase de desarrollo y pruebas del programa.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: bartvander en 03 de Julio 2012, 09:29
Bueno pues ayer salieron las notas de Poo. Quiero dar mil gracias a nosferacento, ya que tiene su parte de culpa en  mi aprobado.


!!!GRACIAS, GRACIAS y GRACIAS!!!
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 04 de Julio 2012, 16:42
Enhorabuena bartvander! Y gracias a tí por tu apoyo... Hay mucha gente a la que le ha servido todo el trabajo aquí volcado pero no todo el mundo lo expresa públicamente. Por otro lado, dado que has aprobado y tienes las preguntas y respuestas del examen te animaría a que colabores y cuelgues las preguntas y respuestas de tu examen, que seguro le servirán a la gente que tenga que estudiar para septiembre o para próximos años... Suerte!
Título: instanciar una clase vacía en java
Publicado por: nosferacento en 23 de Julio 2012, 15:05
PREGUNTA: ¿Se puede instanciar una clase vacía?

RESPUESTA: Sí, aunque pueda parecer que tener una clase vacía no tenga utilidad, su utilidad puede estar diferida en el tiempo durante el desarrollo o pruebas de un programa. Es decir, que necesitemos que exista la clase para poder hacer otras cosas aunque de momento no tenga utilidad.
Título: clase abstracta que implementa interface java
Publicado por: nosferacento en 25 de Julio 2012, 15:14
PREGUNTA: Una clase abstracta que implementa una interface ¿Está obligada a sobreescribir todos los métodos de la interface?

RESPUESTA: No, esta obligación solo afecta si la clase es concreta. Mientras se vayan declarando descendentemente clases abstractas, no hay obligación de sobreescribir los métodos abstractos hasta que no se implemente una clase concreta.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 27 de Julio 2012, 00:09
PREGUNTA: Dado este código:

public abstract interface Frobnicate { public void twiddle(String s); }

¿Qué signaturas de las siguientes son correctas y cuáles no?

A. public abstract class Frob implements Frobnicate {
public abstract void twiddle(String s) { }
}

B. public abstract class Frob implements Frobnicate { }

C. public class Frob extends Frobnicate {
public void twiddle(Integer i) { }
}

D. public class Frob implements Frobnicate {
public void twiddle(Integer i) { }
}

E. public class Frob implements Frobnicate {
public void twiddle(String i) { }
public void twiddle(Integer s) { }
}

RESPUESTA: Esto del frobnicate suena un poco raro, no sé si tendrá doble intención o no. Desde luego es para darles una palmadita en la espalda...

A.   Incorrecta. Implementa un método abstracto.
B.   Correcta. No sobreescribe el método abstracto, pero al ser la clase abstracta, no tiene la obligación de hacerlo.
C.   Incorrecta: no se puede usar extends aplicado sobre una interface.
D.   Incorrecta: no sobreescribe correctamente el método.
E.   Correcta: sobreescribe el método. Además lo sobrecarga correctamente.

¿Puede darse la situación en un examen de que dos respuestas sean correctas? En teoría no, pero en la práctica sí (porque en los propios exámenes a veces se cuelan erratas; no es frecuente, pero ocasionalmente sucede).
Título: uso de final al declarar una clase java
Publicado por: nosferacento en 11 de Agosto 2012, 00:08
Los que estén preparando el examen... ¡A ponerse las pilas!


PREGUNTA: ¿Qué efecto tiene la afección de una clase por final como en esta declaración?:
final class B extends A { }


RESPUESTA: La clase B no puede ser derivada, no puede tener herencia. Sería erróneo escribir public class C extends B porque al usar la declaración final la herencia queda cerrada.
Título: uso de final al declarar un método java
Publicado por: nosferacento en 12 de Agosto 2012, 00:24
PREGUNTA: ¿Qué efecto tiene la afección de un método por final como en esta signatura?:

final void Move(int dx, int dy)
{ x+= dx; y+= dy; }


RESPUESTA: El método B no podrá ser sobreescrito por clases que hereden de la clase donde se ha definido el método con final.


Título: sobreescribir un método private final java
Publicado por: nosferacento en 13 de Agosto 2012, 00:39
PREGUNTA: ¿Qué resultado produce este código?:

class Clidder {
private final void flipper() { System.out.println("Clidder"); }
}

public class Clidlet extends Clidder {
public final void flipper() { System.out.println("Clidlet"); }

public static void main(String [] args) {
new Clidlet().flipper();
}

}


RESPUESTA: esto de cliper clider recuerda a bebidas gaseosas  8) . En fin, vamos al asunto. Podría dar la impresión de que nos lanzaría un error al sobreescribir un método declarado como final, que no puede ser sobreescrito. Pero en realidad todo método declarado como privado no es conocido por las subclases. Por lo tanto una subclase puede sobreescribir un método que haya sido declarado como private y final. Final aplicado sobre private no tiene efectos. En cambio, sí tiene efectos cuando se combina con public o con protected. Resultado de ejecución: Clidlet.
Título: class chrome pregunta examen programacion
Publicado por: nosferacento en 16 de Agosto 2012, 09:13
PREGUNTA: Indicar qué se puede insertar en el lugar indicado para que el código compile, eligiendo la respuesta de entre las opciones que se dan más abajo:

class X { void do1() { } }
class Y extends X { void do2() { } }

class Chrome {
    public static void main(String [] args) {
        X x1 = new X();
        X x2 = new Y();
        Y y1 = new Y();
        //Código a insertar
    } }


Opciones que se dan como respuesta:

A. x2.do2();
B. (Y)x2.do2();
C. ((Y)x2).do2();
D. Ninguna de estas formas compila


RESPUESTA: La forma A no compila porque el compilador no conoce los tipos dinámicos. La forma B no compila porque el compilador ve ambigüedad en el casting. La forma C sí compila, al menos en Java 6. Un poco enrevesado, pero así es. Una pregunta de este tipo diríamos que tiene un poco (o un mucho) de mala intención, así que no le des demasiadas vueltas.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Susana83 en 18 de Agosto 2012, 17:14
Eres incansable? De todas formas te agradezco mucho este hilo porque he ido aprendiendo muchas cosas nuevas ;)
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 21 de Agosto 2012, 09:18
Gracias Susana. Me canso como todo el mundo  :o, la cosa es ir poquito a poco  :)

Para ser más precisos -- > solo parar para coger carrerilla  ;D
Título: ¿cómo se puede invocar un método estático en java?
Publicado por: nosferacento en 22 de Agosto 2012, 00:16
PREGUNTA: Un método estático puede invocarse:

a) De una manera, sobre un objeto.
b) De una manera, sobre la clase.
c) De dos maneras, sobre un objeto o sobre la clase
d) De ninguna manera por su carácter estático.



RESPUESTA: de dos maneras: sobre un objeto, o sobre la clase. Se admiten las dos formas.
Título: conocer numero de elementos de un array en java
Publicado por: nosferacento en 26 de Agosto 2012, 01:40
PREGUNTA: Para conocer el número de elementos en un array en java se usa la invocación

a) array.length, invocamos un campo de la variable que referencia al objeto.
b) array.length(), invocamos un método de la clase.
c) array.size, invocamos un campo del objeto.
d) array.size(), invocamos un método del objeto.


RESPUESTA: este es un caso un poco singular, igual que los arrays son objetos especiales en java. La respuesta correcta es la a), usamos el campo length de los objetos de la clase, campo que "singularmente" tiene acceso público. ¡Esto hay que aprendérselo!
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: Enrique González Gutiérrez en 27 de Agosto 2012, 11:18
Muchas gracias por tus aportaciones nosferacento.

Un saludo.
Título: Re:preguntas examen programación orientada a objetos uned
Publicado por: nosferacento en 28 de Agosto 2012, 09:19
Gracias a vosotros por proporcionar este espacio!
Título: campos que conoce una subclase java
Publicado por: nosferacento en 09 de Septiembre 2012, 11:19
PREGUNTA: ¿Una subclase conoce un campo público de su superclase?


RESPUESTA: Sí debe conocerlo, pues si con protected basta, con public basta más todavía.
Título: caracter nulo en java
Publicado por: nosferacento en 14 de Septiembre 2012, 12:14
PREGUNTA: Dado el siguiente código ¿cuál es el contenido de la variable c?

char c = '\0';
System.out.println (c);



RESPUESTA: El contenido es el carácter nulo. No tiene representación por pantalla, al igual que el string nulo “” no tiene representación por pantalla.
Título: diferencias entre Vector y ArrayList java
Publicado por: nosferacento en 02 de Octubre 2012, 13:35
PREGUNTA: Indicar si la siguiente afirmación es verdadera o falsa:

"Los vectores u objetos de la clase Vector son bastante similares a los ArrayList. Las diferencias hay que buscarlas a nivel interno."




RESPUESTA: es verdadera. Tener en cuenta que en general la clase ArrayList es más usada y recomendada que la clase Vector precisamente por esas diferencias que presenta a nivel interno.
Título: clase vector coleccion y lista
Publicado por: nosferacento en 05 de Noviembre 2012, 08:50
PREGUNTA: Indicar si la siguiente afirmación es verdadera o falsa:

"La clase Vector de Java define un tipo de colección y un tipo de lista. "


RESPUESTA:

Es verdadera, hemos dicho que la clase vector tiene gran similitud con ArrayList, y al igual que ArrayList es una colección y un tipo de lista.
Título: valor o contenido de elementos de array al crearlos con new en java
Publicado por: nosferacento en 31 de Diciembre 2012, 10:09
PREGUNTA: ¿Los elementos de un array tienen algún contenido si solamente hemos declarado y creado el array con una instrucción new, o se generará un error en tiempo de ejecución si tratamos de usar algún elemento sin haberlo inicializado con un contenido?



RESPUESTA: Los elementos de un array se inicializan al valor por defecto del tipo correspondiente (cero para valores numéricos, el carácter nulo para char, false para boolean, null para Strings y para referencias). Por tanto, un array tiene contenido certero desde el momento en que es creado con la instrucción new.
Título: paso por valor o por variable de arrays en Java
Publicado por: nosferacento en 04 de Enero 2013, 09:07
PREGUNTA: Un array que es parámetro de un método en Java:

a) Se pasa por valor, de ahí que no sea modificable dentro del método

b) Se pasa por referencia, de ahí que sea modificable dentro del método

c) Se pasa por valor y es modificable dentro del método

d) Se pasa por referencia pero no es modificable dentro del método



RESPUESTA: La opción correcta es la c). Como todos los objetos, los arrays se pasan como argumentos a los métodos por valor. No obstante, el array es modificable dentro de un método debido a que lo que se pasa por valor es la referencia al objeto (referencia que no podemos modificar), pero si manipulamos el objeto en lo que es su contenido o atributos, manipulado queda.
Título: operador de disyunción en cortocircuito o evaluación perezosa java
Publicado por: nosferacento en 08 de Enero 2013, 00:13
PREGUNTA: Dada la expresión:   op1 || op2 podemos afirmar que:


a) op2 se evaluará siempre
b) op2 no se evaluará nunca
c) op2 se evaluará a veces
d) El operador no es válido en java



RESPUESTA: la opción correcta es la c). op2 se evaluará en algunos casos, pero no en todos. Con este operador se obtiene true si op1 o op2 son verdaderos; si op1 es verdadero no se evalúa op2 y se devuelve verdadero. Si op1 es falso se evalúa op2 y se devuelve el valor de verdad de op2. Esta forma de operación se denomina evaluación en cortocircuito o evaluación perezosa. No se evalúa op2 excepto cuando resulta necesario. Tener en cuenta que op1 y op2 pueden representar llamadas a funciones complejas o procesos complejos, por tanto no procesar algo que no es necesario supone ganar en eficiencia.
Título: Re:preguntas examen programación orientada a objetos Ingeniería Informática UNED
Publicado por: nosferacento en 22 de Febrero 2013, 14:30
PREGUNTA:   ¿Los parámetros en Java se pasan por valor o por referencia?



RESPUESTA:

A veces se piensa erróneamente que los tipos primitivos pasan por valor y los objetos por referencia, pero esto no es así. Todo parámetro pasa por valor.

La confusión radica en que cuando pasamos un tipo primitivo, este no es modificable dentro del método. En cambio, al pasar un objeto, sí se pueden producir modificaciones dentro del método. Pero la realidad es que cuando pasamos el parámetro no pasamos el objeto en sí, sino una referencia al objeto, y esta referencia es la que pasa por valor y funciona como una copia dentro del método, resultando que los cambios dentro del método no son conocidos luego fuera de él.

Título: Re:preguntas examen programación orientada a objetos Ingeniería Informática UNED
Publicado por: Array en 20 de Mayo 2013, 21:51
Hola, ante todo quería decirte que me he registrado sólo para darte las gracias por tus preguntas y respuestas. No puedes imaginarte lo que nos ayudan a los que andamos perdidos con los exámenes de POO.
Así que mil gracias!
Y ya que estoy aquí me gustaría aportar mis soluciones al examen de POO uned informática de septiembre 2012, que adjunto. Son estas:
ABBBBDBAADCDABC
Por si a alguien le sirven o quieren discutirlas.
Un saludo.
Título: precedencia de operadores ++ y -- en operaciones complejas java
Publicado por: nosferacento en 20 de Mayo 2013, 23:31
¿Qué tal? Supongo que sacas el examen de septiembre de 2012 porque estás estudiando para la convocatoria de junio de 2013, así que suerte. Voy a ver si puedo revisar las respuestas para ver si coincidimos.

Para empezar con la pregunta 7 (revisada, gracias a Array):

Dada la siguiente instrucción: x = y--;
¿Cuál de las siguientes afirmaciones es verdadera después de ejecutarse la instrucción?

a) La instrucción da un error de compilación
b) x > y
c) x == y
d) x < y

RESPUESTA:

Parece una pregunta tonta pero si ejecutamos este código seguramente deje de parecerlo:

int x=1;
int y = 3;
x = y--;
System.out.println ("x vale " + x);
System.out.println ("y vale " + y);

El resultado es x vale 3, y vale 2.

En cambio si ejecutamos:

int x=1;
int y = 3;
x = --y;
System.out.println ("x vale " + x);
System.out.println ("y vale " + y);

El resultado es x vale 2, y vale 2.

La respuesta correcta es por tanto (una vez revisada, gracias a Array) la b), es decir, x > y.

La justificación la dan en los Java tutorials así:

The increment/decrement operators can be applied before (prefix) or after (postfix) the operand. The code result++; and ++result; will both end in result being incremented by one. The only difference is that the prefix version (++result) evaluates to the incremented value, whereas the postfix version (result++) evaluates to the original value. If you are just performing a simple increment/decrement, it doesn't really matter which version you choose. But if you use this operator in part of a larger expression, the one that you choose may make a significant difference.

Lo cual viene a decir que en una asignación tipo k = t++; primero se ejecuta k = t y luego se ejecuta t++, quedando k y t con distintos valores.

En cambio en una asignación tipo k = ++t; primero se ejecuta ++t y luego k = t quedando k y t con iguales valores.

El caso es que si yo estoy programando escribo k = t+1; y me quedo tranquilo. Pero para el examen habrá que tener esto en cuenta por si acaso.

Título: Re:preguntas examen programación orientada a objetos Ingeniería Informática UNED
Publicado por: Array en 21 de Mayo 2013, 12:59
Recopilando preguntas de este foro, por si a alguien le interesa, estas serían las respuestas a los exámenes de POO Uned informática:
Junio 2011 A:
CCBAACBCCCBCBDD
Junio 2011 B:
CCBDDDABCBDCDBB
Septiembre 2011:
BCBCACBCDDAADCC
Junio 2012 A:
ABCDBCACBBCCACB
Junio 2012 B:
ACBDBBBDBCACDDA
Septiembre 2012:
ABBBBDBAADCDABC

No son oficiales, salvo Junio 2012 A, publicado en este foro. Así que son discutibles.
Título: diferencia entre sobrecarga y sobreescritura
Publicado por: nosferacento en 04 de Junio 2013, 10:59
Gracias a Array por sus aportaciones para el foro.

PREGUNTA: ¿Cuál es la diferencia entre sobrecarga y sobreescritura?


RESPUESTA:

Si revisamos las definiciones formales de sobrecarga y sobreescritura tendríamos:

Sobrecarga: Cuando más de un constructor o método tienen el mismo nombre pero distintos parámetros decimos que el constructor o método está sobrecargado. La sobrecarga de constructores o métodos permite llevar a cabo una tarea de distintas maneras (por ejemplo crear un objeto Persona con un nombre ya establecido o crearlo sin nombre establecido).

Sobreescritura: Decimos que un método está sobreescrito cuando está presente, exactamente con la misma signatura, en una subclase y en una superclase.
Título: operadores lógicos de comparación en Java
Publicado por: nosferacento en 28 de Septiembre 2013, 18:23
PREGUNTA: Dada la expresión:   op1 | op2 podemos afirmar que:

a) op2 se evaluará siempre
b) op2 no se evaluará nunca
c) op2 se evaluará a veces
d) El operador no es válido en java




RESPUESTA: la opción correcta es la a). Con este operador se obtiene true si op1 o op2 son verdaderos, y siempre evalúa op1 y op2. ¿Si el resultado va a ser igual que op1 || op2 qué efecto práctico puede tener este operador? A veces no habrá "efecto práctico". Pero en otras ocasiones op2 podría ser el nombre de una función que devuelve un valor booleano. En este caso, al ejecutarse op2 podría haber algún tipo de efecto como cambio de valor de alguna variable, un mensaje en pantalla o cualquier otro derivado de la ejecución de esa función.

Nota: si la expresión fuera op1 || op2 entonces op2 se evaluará en algunos casos, pero no en todos. Con este operador se obtiene true si op1 o op2 son verdaderos; si op1 es verdadero no se evalúa op2 y se devuelve verdadero. Si op1 es falso se evalúa op2 y se devuelve el valor de verdad de op2. Esta forma de operación se denomina evaluación en cortocircuito o evaluación perezosa.
Título: conversión de tipos con herencia en java
Publicado por: nosferacento en 17 de Enero 2014, 10:04
PREGUNTA:  ¿Qué ocurrirá al compilar y ejecutar el siguiente código?

class Padre {}
class ClaseHija extends Padre {}
class ClaseHija2 extends Padre {}
public class Test{
public static void main(String argv[]) {
Padre b=new Padre ();
ClaseHija s=(ClaseHija) b;
System.out.print("Ejecutando Aplicación");
}
}

a. Compilará y se ejecutará sin problemas
b. Error de Compilación
c. Excepción en tiempo de ejecución
d. Excepción en tiempo de ejecución y luego mostrará el mensaje "Ejecutando Aplicación"


RESPUESTA: la opción correcta es la c)

Estas preguntas no son fáciles de responder (lo serían si tuviéramos un ordenador delante). Tratamos de analizar lo que hará el código.

Se declara una clase Padre, vacía. Se declara dos clases que herendan de Padre, ClaseHija y ClaseHija2. Estas clases se declaran sin modificador de acceso: esto es legal (se aplica un tratamiento por defecto previsto por Java). A continuación se declara la clase pública Test que contiene el método main.

Nos puede llamar la atención public static void main(String argv[]) ya que no se suele usar argv sino args, pero esto es igualmente legal, es el nombre de un parámetro para el método. Se declara un objeto de la clase Padre al que se denomina b. Se crea un objeto de la clase hija que es el objeto de la clase Padre convertido en hija (casting de padre a hija). ç

Aquí nos tenemos que plantear: ¿es legal convertir un objeto de un nivel jerárquico superior a un objeto de nivel jerárquico inferior? La respuesta es que esto sólo es posible si el objeto de nivel superior contiene un objeto del tipo del nivel inferior. Es decir, en este caso si el objeto b contuviera un objeto del tipo ClaseHija. Si no lo contiene, como es este caso, salta un error del tipo java.lang.ClassCastException en tiempo de ejecución. java.lang.ClassCastException: Padre cannot be cast to ClaseHija

En resumen, si hiciéramos ClaseHija s= b; obtendríamos un error en tiempo de compilación

Si hacemos ClaseHija s=(ClaseHija) b; la compilación es correcta pero salta un error ClassCastException en tiempo de ejecución.

Si hiciéramos Padre b=new ClaseHija (); el programa se ejecutaría sin error, ya que la clase padre contiene un objeto de la clase hija (legal, en eso consiste el polimorfismo).

Pregunta nada sencilla de responder en un examen   :(
Título: Re:preguntas examen programación orientada a objetos Ingeniería Informática UNED
Publicado por: Gallaecio en 08 de Febrero 2014, 11:52
Muchas gracias por este tema, ¡me será de mucha ayuda para repasar!
Título: Re:preguntas examen programación orientada a objetos Ingeniería Informática UNED
Publicado por: nosferacento en 10 de Febrero 2014, 08:36
Gracias a todos los que hacéis llegar comentarios y sugerencias, así al menos puedo saber que todo esto está sirviendo para algo  ;)
Título: Re:preguntas examen programación orientada a objetos Ingeniería Informática UNED
Publicado por: xtremejavi en 01 de Junio 2014, 23:33
Increible trabajo, ¡¡me sumo al club de los registrados para agradecerte!!

Gracias por todo tu esfuerzo :D
Título: Re:preguntas examen programación orientada a objetos Ingeniería Informática UNED
Publicado por: nosferacento en 03 de Junio 2014, 18:54
Gracias a tí, como ya he comentado estos comentarios son de agradecer... Trato de ir ampliando y mejorando el material de esta y otras asignaturas, pero requiere su esfuerzo. Suerte a todos los que han hecho o van a hacer próximamente exámenes...
Título: Re:preguntas examen programación orientada a objetos Ingeniería Informática UNED
Publicado por: elasfaltoesgris en 05 de Diciembre 2014, 19:12
Me he matriculado en POO este año y me he llevado una alegría enorme al comprobar que tenías un foro para la asignatura. Me ayudaste muchísimo con Fundamentos de Programación. Muchas gracias.
Título: Re:preguntas examen programación orientada a objetos Ingeniería Informática UNED
Publicado por: nosferacento en 06 de Diciembre 2014, 20:29
Pues mucho ánimo, yo diría que POO es más bonita que fundamentos, aunque lo de bonito siempre hay que ponerlo entre comillas. POO también es bastante trabajosa en extensión y por la práctica, así que supongo que ya te imaginas que te voy a decir que ya deberías estar dándole duro si quieres llegar en condiciones  :D
Título: Re:preguntas examen programación orientada a objetos Ingeniería Informática UNED
Publicado por: Ilwe en 02 de Julio 2015, 12:19
Me he registrado sólo para darte las gracias.
He aprendido mucho y me ha sido fundamental para entender algunos conceptos y gracias a eso he pasado el test de POO de sobra, así que una menos.

Gracias ;)
Título: Re:preguntas examen programación orientada a objetos Ingeniería Informática UNED
Publicado por: marinalch en 11 de Abril 2016, 07:38
Gracias por ayudar con tantas preguntas sobre Java. Estoy preparando unas oposiciones y me está sirviendo de mucha ayuda.
Gracias!