Curso Java. Volumen XX: Ejercicio de herencia y polimorfismo

Escrito por Adrián Crespo
Java
2

Otro Lunes más, estamos aquí con otra entrega del curso Java de RedesZone.

Ya hemos acabado el tema de la herencia y todo lo relacionado con ella. Hemos hablado del polimorfismo, de como debe realizarse la llamada al constructor de la super clase, y de cómo deben crearse los objetos.

También hemos hablado de los modificadores de acceso variables, clases y métodos. Vimos de donde provienen algunos métodos que hemos utilizado y seguiremos utilizado, como el equals o toString. También cabe mencionar que hemos hablado sobre la conversión de referencias de los objetos. Tenéis todos los artículos disponibles en el Índice del curso de Java.

Como ya adelantamos en el volumen anterior, en esta entrega os vamos a proponer un problema relacionado con la herencia, no muy complicado, pero donde podréis practicar todo lo relacionado ella.

Vamos entonces con el enunciado.

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 Gurús de la página se reunieron para decidir como debía hacerse esta gestión y llegaron todos al siguiente consenso:

  • Todos los miembros son usuarios
  • Los usuarios tendrán los siguientes atributos privados
  1. Un entero que indica cuantos mensajes lleva.
  2. Un string que contiene el correo electronico.
  3. Un string que contiene el nombre(nick) en el foro.
  • Los usuarios tienen los siguientes métodos:
  • Incrementa en 1 el número de mensajes.
  • Decrementa en 1 el número de mensajes.
  • Modifica el correo electrónico.

Los Gurús de AdslZone, que son muy exigentes, quieren que haya dentro de los usuarios dos clases: moderadores, administradores.

Los moderadores tienen los siguientes atributos privados

  1. Un entero que indica cuantos mensajes lleva.
  2. Un string que contiene el correo electrónico.
  3. Un string que contiene el nombre(nick) en el foro.
  4. Un entero que indique el número post que han mandado a la papalera.
  • Los moderadores tienen los siguientes métodos:
  1. Incrementa en 1 el número de mensajes
  2. Decrementa en 1 el número de mensajes
  3. Modifica el correo electrónico
  4. Incrementa en 1 el número de mensajes que ha mandado a la papelera por incumplir las normas

Los administradores tienen los siguientes atributos privados:

  1. Un entero que indica cuantos mensajes lleva.
  2. Un string que contiene el correo electrónico.
  3. Un string que contiene el nombre(nick) en el foro.
  4. Un entero que indique el número post que han mandado a la papalera.
  5. un entero que indique el número de baneos que ha realizado.

Y tienen los siguientes métodos.

  • Incrementa en 1 el número de mensajes.
  • Decrementa en 1 el número de mensajes.
  • Modifica el correo electrónico.
  • Cambia su propio nombre de usuario.
  • Incrementa en 1 el número de mensajes que ha mandado a la papelera por incumplir las normas.
  • Incrementa en 1 el número de baneos de usuarios por ser spammers.

De aquí deducimos que tenemos una superclase clara, los usuarios, y después dos subclases, los moderadores y los administradores.

El siguiente esquema aclara como se requiere la implementación de las tres clases:

Se nos pide, implementar las tres clases con sus respectivos métodos. Darse cuenta que hay atributos y métodos repetidos en las subclases. Esto a la hora implementarlo no es necesario porque ya sabéis que tenemos extends.

Ya sabéis que si tenéis alguna duda nos lo podéis consultar tanto a Sergio, como a mí.

En la siguiente entrega pondremos la solución con explicaciones detallada para que los conceptos queden más claros.