Hola! El programa funciona bien y has hecho un buen diseño orientado a objetos, separando tareas en varias clases, buen trabajo
Solo comentar una cosa, en este método hay algo que un programador avanzado diría que no está bien:
public void generarNumeroAletorio(){
numeroAleatorio = new Random();
numero = numero.valueOf (numeroAleatorio.nextInt(101));
System.out.println("Se ha creado un número aleatorio entre 1 y 100, intente adivinarlo :)");
}
Lo que se ve raro es tener un System.out.println en un método cuya función es generar un número aleatorio. Un método debe hacer algo lo más concreto posible. Si el método sirve para generar un número aleatorio, debe hacer exactamente eso, y no mostrar un mensaje por consola. Imagina que esa clase y método quieres utilizarla para otro programa que ya no es sobre adivinar números. En ese caso el método ya no te serviría por haber introducido ese mensaje. En resumen, como buena práctica de programación hay que intentar que cada método se encargue de cosas específicas evitando mezclar métodos que se encargan de calcular algo con mensajes de consola, etc. porque eso dificulta la reutilización, que es un objetivo habitual en la programación.
Saludos!