martes, 20 de enero de 2009

Quinto día: Sobrescritura de métodos 2

Comenzamos haciendo un repaso del día anterior y se habló de los métodos heredados del objeto "Object"
  • clone() - para clonar los objetos.
  • finalize() - últimas operaciones antes de cerrar un objeto.
  • toString() - devuelve una cadena de texto cuando se intenta imprimir un objeto.
  • equals() - compara los objetos entre sí.
Ejemplo de añadir objetos en un conjunto:
Set coleccion=new HashSet();
coleccion.add(gato1);

coleccion.add(gato2);


Tipos de colecciones: Map, List, Set.
¿Porque existen tres tipos de colecciones?, porque cada uno tiene internamente unos comportamientos diferentes.
Set-> No permite objetos repetidos. De forma transparente mira el método equals(). Recomendable sobrescribir el método equals para así ahorrarnos más código a la hora de introducir objetos en el Set.
List-> Permite duplicados.
Map-> Permite duplicados.

Ejercici0 de servlet, clases y Listas:
El objetivo del ejercicio es la de dominar la herencia, la sobreescritura de los métodos toString() y el equals(), usando como clase base "Disco", tener un servlet que sea un formulario de entrada y un último servlet que es el que guardará la información del formulario en una Lista de tipo Disco y posteriormente se mostrará.
El guión del ejercicio:
  • Comenzamos definiendo la clase Disco con las propiedades: titulo, cantante y referencia.
  • Seguimos con el formulario de nuevo disco que se enviara a la discoteca..., es decir, creamos un nuevo servlet que pintará el formulario y lo damos de alta en el web.xml para que escuche las peticiones en /disco
  • Creamos el servlet discoteca y lo damos de alta en el web.xml
  • El servlet discoteca en esta primera fase de desarrollo, lo unico que hace es comprobar que la discoteca (List ) esta en la session y en caso contrario la crea. Posteriormente la pinta en pantalla (aunque por ahora siempre estará vacía)
  • En dicho servlet accedemos al objeto session (HttpSession) a través del objeto request.getSession(), obteniendo con este objeto la capacidad de acceder a atributos session.getAttribute("clave") o incluir atributos session.setAttribute("clave", objeto).
  • Una vez que esto funciona, modificamos el codigo para que: si recibimos el formulario de /disco entonces creamos un nuevo Disco y lo metemos en la coleccion.
  • Sobreescribimos el metodo toString() de la clase Disco para que imprima el nombre y autor del disco
  • Limitamos los discos duplicados (implementamos metodo equals y hascode en la clase Disco) para poder utilizar el metodo de la clase List contains: boolean existe=coleccion.contains(object)

Otro Ejercicio del mismo tipo, pero en vez de una Lista son tres.
Esta vez consiste crear tres listados de animales, animales de tres tipos: Jirafas, Panteras y Leones, que mediante un formulario individual para cada uno (es decir, 3 servlets) le envíe la información a uno principal que distinga quién le envía la información y mostrar el contenido de las tres listas.
Los pasos que hay que hacer son:
  • Creamos en eclipse un nuevo proyecto web dinamico. Como nombre le indicamos "zoo"
  • seleccionamos la pestañita de "servers" dentro de eclipse y boton derecho ->add and remove projects... y le añadimos el recien creado
  • Los animales que tendremos que gestionar en el zoo serán: leones, jirafas, panteras. Cada animal tendra un nombre y una edad
  • Creamos un servlet que responda a la peticion "/visita" y nos pinte en pantalla la coleccion de leones, de jirafas y de panteras (en tres lineas, una debajo de la otra)
  • Creamos un servlet que pinte un formulario para introducir una nueva jirafa en la URL: '/jirafa', con los datos: nombre y edad. Dicho formulario se enviará a '/visita'
  • Creamos un servlet que pinte un formulario para introducir una nueva pantera en la URL: '/pantera', con los datos: nombre y edad. Dicho formulario se enviará a '/visita'
  • Creamos un servlet que pinte un formulario para introducir un nuevo leon en la URL: '/leon', con los datos: nombre y edad. Dicho formulario se enviará a '/visita'
  • Cuando el servlet encargado del URL: '/visita' reciba los parametros del formulario '/jirafa', entonces creará una nueva jirafa y la incluira a la coleccion de jirafas existentes
  • Cuando el servlet encargado del URL: '/visita' reciba los parametros del formulario '/pantera', entonces creará una nueva pantera y la incluira a la coleccion de panteras existentes
  • Cuando el servlet encargado del URL: '/visita' reciba los parametros del formulario '/leon', entonces creará un nuevo leon y lo incluira a la coleccion de leones existentes
  • Modificar el metodo equals de las clases correspondientes (Leon, Jirafa, Pantera) para que al incluirlas a la coleccion no existan duplicados [dos animales se consideran iguales si su nombre y edad es igual*]
  • aplicar herencia entre las diferentes clases de animales para eliminar el codigo redundante

No hay comentarios:

Publicar un comentario