Anda di halaman 1dari 8

ADSLZone necesita gestionar de una manera diferente a la que ahora utiliza, toda la base de datos de la web.

Teniendo en cuenta que desean gestionar todos los usuarios de la web (tanto zoneros, como miembros del staff) los Gurs de la pgina se reunieron para decidir como deba hacerse esta gestin y llegaron todos al siguiente consenso: - Todos los miembros son usuarios - Los usuarios tendrn los siguientes atributos privados ->Un entero que indica cuantos mensajes lleva. ->Un string que contiene el correo electronico. ->Un string que contiene el nombre(nick) en el foro. - Los usuarios tienen los siguientes mtodos: ->Incrementa en 1 el nmero de mensajes. ->Decrementa en 1 el nmero de mensajes. ->Modifica el correo electronico. Los Gurs de AdslZone, que son muy exigentes, quieren que haya dentro de los usuarios dos clases: moderadores, administradores. Los moderadores tienen los siguientes atributos privados ->Un entero que indica cuantos mensajes lleva. ->Un string que contiene el correo electrnico. ->Un string que contiene el nombre(nick) en el foro. ->Un entero que indique el nmero post que han mandado a la papalera. -Los moderadores tienen los siguientes mtodos: ->Incrementa en 1 el nmero de mensajes ->Decrementa en 1 el nmero de mensajes ->Modifica el correo electrnico ->Incrementa en 1 el nmero de mensajes que ha mandado a la papelera por incumplir las normas Los administradores tienen los siguientes atributos privados: ->Un entero que indica cuantos mensajes lleva. ->Un string que contiene el correo electrnico. ->Un string que contiene el nombre(nick) en el foro. ->Un entero que indique el nmero post que han mandado a la papalera. ->un entero que indique el nmero de baneos que ha realizado. Y tienen los siguientes mtodos.

->Incrementa en 1 el nmero de mensajes. ->Decrementa en 1 el nmero de mensajes. ->Modifica el correo electrnico. ->Cambia su propio nombre de usuario. ->Incrementa en 1 el nmero de mensajes que ha mandado a la papelera por incumplir las normas. ->Incrementa en 1 el nmero de baneos de usuarios por ser spammers. De aqu deducimos que tenemos una superclase clara, los usuarios, y despues dos subclases, los moderadores y los administradores. El siguiente esquema aclara como se requiere la implementacin de las tres clases:

Se nos pide, implementar las tres clases con sus respectivos mtodos. Darse cuenta que hay atributos y mtodos repetidos en las subclases. Esto a la hora implementarlo no es necesario porque ya sabis que tenemos extends. Ya sabis que si tenis alguna duda nos lo podis consultar tanto a Sergio, como a m. En la siguiente entrega pondremos la solucin con explicaciones detallada para que los conceptos queden ms claros.

Polimorfismo La palabra polimorfismo viene de mltiples formas. Las operaciones polimrficas son aquellas que hacen funciones similares con objetos diferentes. Ejemplo: suponer que existe la clase Figura y sus subclases

- Crculo - Cuadrado - Polgono

Todas ellas con las operaciones: - dibuja - borra

Nos gustara poder hacer la operacin polimrfica mueveFigura que opere correctamente con cualquier clase de figura: mueveFigura borra dibuja en la nueva posicin Esta operacin polimrfica debera:

llamar a la operacin borra del Crculo cuando la figura seaun crculo llamar a la operacin borra del Cuadrado cuando la figura seaun cuadrado etc.

El polimorfismo en Java consiste en dos propiedades: 1. Una referencia a una superclase puede apuntar a un objeto de cualquiera de sus subclases.

2. La operacin se selecciona en base a la clase del objeto, no a la de la referencia.

Gracias a esas dos propiedades, el mtodo moverFigura sera:

Y podra invocarse de la forma siguiente:

Gracias a la primera propiedad el parmetro f puede referirse a cualquier subclase de Figura. Gracias a la segunda propiedad en mueveFigura se llama a las operaciones borra y dibuja apropiadas.

El lenguaje permite que una referencia a una superclase pueda apuntar a un objeto de cualquiera de sus subclases pero no al revs

Justificacin: un coche es un vehculo - Cualquier operacin de la clase Vehculo existe (sobrescrita o no) en la clase Coche.

Un vehculo no es un coche - Sera un error tratar de invocar la operacin:

- Por esa razn el lenguaje lo prohbe. Hasta aqu el volumen de hoy, slo nos falta un volumen para acabar todo lo relacionado con la herencia. En el siguiente volumen como indicbamos anteriormente vamos a tratar los modificadores de acceso en Java y la conversin de referencias y os daremos un breve resumen con los aspectos ms importantes del polimorfismo y de la herencia. Podra decirse que es la base para programar utilizando estas tcnicas.

Lo primero de todo vamos a hacer la clase principal, es decir la clase de la cual dependen las otras dos, la clase Usuario.

Como observis, esta clase no tiene ningn tipo de complejidad y como va a ser la clase que jerrquicamente est por encima de las otras dos y no va a haber ninguna ms por encima de ella de la cual haya que heredar mtodos o atributos, el constructor es simple. Ahora vamos con las clases hijas, primero con la clase Moderadores.

Pensaris que faltan muchos mtodos y que la clase esta incompleta, pero no es as. Todos los mtodos que necesita, as como los atributos los puede coger de la clase de la cual extiende, es decir, Usuario. Nota: como pongo en un comentario, es importante que la llamada a la superclase sea la primera en el constructor, ya que si no, no compilar. Vamos ahora con el cgido de la clase de los Administradores.

Como estis viendo, en las clases hijas nicamente se declaran y se crean los mtodos que no posean la subclase. Pero os voy a dejar en el aire una cuestin, como podis ver, falta un mtodo en los administradores, el que cambia el nombre de usuario. Si os paris a pensar es que lo ms lgico hasta ahora es crearle en la clase Administradores, pero creis que funcionara? La respuesta es no, por una sencilla razn, el atributo nick de la clase Usuario es privado y no tenemos visibilidad sobre l. Podemos hacer varias cosas pero la ms correcta es incluir el mtodo en la clase Usuario.