Hola.
Ruleta no debería heredar de Numero.
Ruleta
ha de incluir a Numero, pero
no heredar.
Una clase hereda de otra cuando la clase "Padre" es una versión más generalizada, menos concreta, que la clase "Hija".
Esto se entiende mejor si pensamos en Hombre, Mujer y Persona.
Mujer y Hombre son clases distintas, pero ambas heredan de la clase Persona.
Personas sería la clase "Padre" porque representa un concepto más general. Mujer y Hombre, ambos son Personas, pero representan un concepto mucho más concreto, porque incluirían atributos únicos que no son compartidos entre Hombre y Mujer.
Persona tendría atributos comunes: nombre, edad, peso, estado civil....
Hombre y Mujer heredarían esos atributos, pero añadirían otros que son específicos de cada uno. Por ejemplo, el atributo boolean estaEmbarazada -> true/false, sería único para la clase Mujer.
Dicho esto, pensemos ahora en otra asociación: Persona y Equipo.
¿Tiene sentido decir que Equipo hereda de Persona? ¿Un Equipo es una versión más concreta y específica de una Persona?
No, no tiene sentido.
Un Equipo contiene a varias Persona, pero eso no implica una relación de herencia "Padre" -> "Hija".
Pues esto mismo ocurre con Numero y Ruleta.
Una Ruleta va a incluir a varios Numero, pero no es una asociación de herencia, sino una
asociación de inclusión.
¿Cómo modelamos esta asociación?
Pues Ruleta tendrá un atributo asociado a la clase Numero.
Sabemos que una ruleta del mundo real tiene 37 números, que van del 0 al 36.
Pues nuestra clase Ruleta ha de tener 37 objetos Numero. Para poder gestionarlos cómodamente, los agruparemos juntos en algún tipo de colección. Para este caso, nos bastaría con un array simple.
Mira, el enunciado del ejercicio no es muy específico, así que eso nos da un poco de libertad para resolverlo como mejor nos parezca, por tanto, hay varias formas de solucionarlo y te voy a mostrar la que yo he escogido.
Primero te pongo la clase Numero. Finalmente me ha parecido mejor que sea el propio Numero quien informe de a que docena pertenece.
No nos dicen como hacer esto. Se podría hacer que muestre un mensaje en pantalla o que devuelva un String tipo
"Pertenece a 1ª Docena"
Yo he pensado que lo ideal sería un método que devuelva un valor int.
Si es de la primera docena (1-12) que devuelva 1, si es de la segunda docena(13-24) que devuelva un 2 y si es de la tercera docena (25-36) que devuelva un 3.
Si es un 0, según la reglas de la ruleta el 0 no pertenece a ninguna docena, así que entonces retornará un 0.
La ventaja de hacer que devuelva un int es que si quisiéramos hacer un juego más completo, con apuestas y todo, es más fácil evaluar un valor int para valorar si ha perdido ganado la apuesta que no un String.
Esta sería la clase Numero
La clase Ruleta, como hemos dicho, tendrá un array de 37 objetos Numero.
Su constructor no recibirá ningún parámetro, pero ha de encargarse de inicializar ese array y darle los valores del 0 al 36 a los 37 Numero.
Yo le he puesto un único método, que se encarga de devolver un Numero al azar, es decir, simula el lanzamiento de una bola a la Ruleta.
Luego he hecho otra clase con método main(), simplemente para probar.
Le pido a la Ruleta que "tire una bola" (que me de un Numero al azar) y analizo este Numero para informar en pantalla de si es par/impar y a que docena pertenece.
Si recibo un 0, informo de que en este caso, no se considera par/impar ni pertenece a ninguna docena.
Resultado en pantalla:
Como digo, esto es una forma de resolverlo. Hay otras formas, como que por ejemplo sea la propia Ruleta quien analice el Numero obtenido y no el main().
Es cuestión de gustos.
Pregunta cualquier duda que tengas y perdón si me he extendido demasiado con explicaciones.