lunes, 19 de enero de 2009

Cuarto dia: Herencia y sobrescritura

Repaso
Empezamos el día con un repaso del día anterior sobre el html y durante media hora (en realidad fue algo más) terminar el último ejercicio expuesto.
Después de recordarnos que en java todo son objetos, que las clases se colocan dentro de la carpeta "src" y que tienen que ser dentro de un paquete, empezamos con unos ejercicios de herencia y sobreescritura de métodos.

Herencia y sobreescritura
Primeramente creamos 3 clases. Una clase Persona, otra clase Futbolista y la clase principal.
Hicimos una serie de modificaciones por cada ejemplo que tuvieramos que aprender así que lo he enumerado para cada clase, primeramente se lee los 1 de todas las clases, despues todos los 2, y así.

Clase Persona
  1. Crearemos un método que se llame saludo que haremos un System.out.println("Hola soy una persona");
    Añadir que si escribimos "syso" y pulsamos control+intro, el Eclipse directamente nos escribirá todo el System...
  2. Como todo objeto hereda de la clase Objetc procedemos a sobreescribir el método que tiene la clase Objetct "toString()" que lo que hace es devolver una cadena de texto con la dirección de memoria en donde está guardado el objeto. Lo sobreescribiremos para que aparezca el nombre de la persona usando una variable global de la clase llamado "nombre".
  3. Botón secundario en el texto, "source", "Generate HashCode and equals()" y se sobrescribirán los métodos hashCode() y equals(), pero antes de que aparezcan los métodos nos preguntará qué propiedad de la Clase Persona es la clave identificativa (mmm, me suena al primary key de las BB.DD).
Clase Futbolista
  1. Esta clase heredará de Persona (...extends Persona)
    En esta clase sobreescribiremos el método saludo de Persona, para ello hacemos click con el botón secundario del ratón en el texto vacío, seleccionamos "source" y pulsamos "Override/Implement" y seleccionamos "saludo()" de la clase Persona.
    Borramos su contenido y volvemos a escribir el "println" con la diferencia que en vez de decir "soy una persona", diga que es un futbolista.
  2. Hacemos igual que en Persona pero simplemente hacer un return con la cadena "futbolista".

Clase principal
  1. Aquí simplemente creamos 2 objetos, 1 de tipo persona y otro de tipo futbolista y llamar de cada uno su método "saludo()".
    Evidentemente aparecerá "Hola soy una persona" y "Hola soy un futbolista".
  2. Aquí lo que haremos sera asignar a la variable global de la clase que hayamos creado de tipo persona "nombre" con un nombre cualquiera y hacer un println con el objeto (si, a pelo) e igualmente con futbolista (recordemos que está heredando y tambien tiene una propiedad "nombre")
    Después crearemos un HashMap
    que introduciremos como key un "1" y un "2" y los objetos serán personas. El resultado será que nos aparecerá el texto que hicimos en el toString()
    Map mapa=new HashMap();
    mapa.put("1", p1);
    mapa.put("2", p2);
    System.out.println(mapa);

  3. Crearemos un nuevo archivo que se llame prueba2, o podemos usar éste mismo si queremos.
    Crearemos 3 objetos de tipo persona, dos de ellos se inicializará la propiedad "nombre" con un mismo String y el 3º con uno distinto.

    Al final del código, mediante booleanos y haciendoles println, igualaremos los objetos tal que:

    boolean identicos=objetoPersona1==x;
    boolean iguales=
    objetoPersona1.equals(objetoPersona1-bis);
    boolean diferentes=
    objetoPersona1.equals(objetoPersona2);
    System.out.println("Identicos: "+identicos); //saldrá true
    System.out.println("Iguales: "+iguales); //Saldra true
    System.out.println("Diferentes: "+diferentes); //Saldra false (false, que son diferentes)

    Con esta última modificación veremos la diferencia entre los tipos de "igualdades" que podemos hacer y cuando usar cada una en su respectivo contexto.
Y por último tuvimos que adaptar este mismo ejercicio, la clase principal, en un servlet, fue fácil, simplemente sustituir el "System.out" por el PrintWriter y dar de alta el servlet en el web.xml.

No hay comentarios:

Publicar un comentario