El proyecto se estructura al rededor de las siguientes clases principales, con las siguientes responsabilidades y relaciones:
Clases:
Game:
Responsabilidades:
Iniciar el juego.
Generar y mantener el número secreto a adivinar.
Controlar el flujo del juego, alternando turnos entre jugadores.
Relaciones:
Asociación con *Player (incluyendo HumanPlayer y AIPlayer).
Player (abstracta):
Responsabilidades:
Definir una interfaz común para todos los jugadores.
Mantener el nombre y el historial de suposiciones del jugador.
Relaciones:
Superclase de HumanPlayer y AIPlayer.
HumanPlayer:
Responsabilidades:
Permitir al usuario hacer suposiciones ingresando números.
Relaciones:
Hereda de Player.
AIPlayer:
Responsabilidades:
Generar suposiciones automáticamente (simulando un IA básica).
Relaciones:
Hereda de Player.
Relaciones:
Game tiene 2 instancias de Player: una para el jugador humano y otra para la IA, demostrando una relación de (asociación/composición).
Player es una clase abstracta que define la estructura y comportamiento comunes para todos los jugadores, con HumanPlayer y AIPlayer especializando esta definición mediante herencia.
El proyecto se estructura al rededor de las siguientes clases principales, con las siguientes responsabilidades y relaciones:
Clases:
Game: Responsabilidades:
Player (abstracta): Responsabilidades:
HumanPlayer: Responsabilidades:
AIPlayer: Responsabilidades:
Relaciones: