Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - nosferacento

Páginas: 1 ... 16 17 18 19 20 [21] 22 23
401
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.

402
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.

403
¿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.

404
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.

405
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.

406
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.

407
Comunidad / Re:sobre el artículo del libro cocina para estudiantes
« en: 12 de Noviembre 2011, 00:10 »
Yo tampoco desvelaré el nombre de mi peluquero  :o

408
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.

410
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

411
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.

412
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.

413
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.


414
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.

415
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

416
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.

417
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.

418
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.

419
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.

420
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.

Páginas: 1 ... 16 17 18 19 20 [21] 22 23

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".