Comenzando, se creó la clase ExecutorRecorder como se pedía, que esta heredase de Executor, con el fin de mantener sus métodos y agregar todo el trabajo de archivos. Para lograr esto, se utilizó override para sobreescribir el método runGame() para agregar la funcionalidad del historial.
La funcionalidad agregada en ExecutorRecorder consiste en primera instancia, crear la línea de texto que se debe agregar al archivo (en este caso, nombre_juego jugador_1 jugador_2 índice_ganador), luego analiza si el archivo "history.txt" esta creado, de ser así solamente escribe la línea en este, de lo contrario, crea el archivo y agrega la información.
Ya explicando como se obtienen los valores como nombre del juego, participantes y el índice del ganador, este último es entregado por el mismo runGame() de la clase Executor, mientras que para los nombres se tuvieron que modificar los archivos de Game y Player, con el fin de definir los atributos del nombre en ambas clases. Luego, para poder definir estos nombres, se tuvieron que modificar las clases que heredaban de estas, para que en sus respectivos constructores tuviesen definidos sus nombres. Para finalizar, se tuvo que modificar los archivos correspondientes al Play, debido a que estos están utilizando Executor y para poder acceder a las funcionalidades agregadas, se debió reemplazar por la clase creada ExecutorRecorder.
Benjamín Sánchez Aranda 201873009-2
Comenzando, se creó la clase ExecutorRecorder como se pedía, que esta heredase de Executor, con el fin de mantener sus métodos y agregar todo el trabajo de archivos. Para lograr esto, se utilizó override para sobreescribir el método runGame() para agregar la funcionalidad del historial.
La funcionalidad agregada en ExecutorRecorder consiste en primera instancia, crear la línea de texto que se debe agregar al archivo (en este caso, nombre_juego jugador_1 jugador_2 índice_ganador), luego analiza si el archivo "history.txt" esta creado, de ser así solamente escribe la línea en este, de lo contrario, crea el archivo y agrega la información.
Ya explicando como se obtienen los valores como nombre del juego, participantes y el índice del ganador, este último es entregado por el mismo runGame() de la clase Executor, mientras que para los nombres se tuvieron que modificar los archivos de Game y Player, con el fin de definir los atributos del nombre en ambas clases. Luego, para poder definir estos nombres, se tuvieron que modificar las clases que heredaban de estas, para que en sus respectivos constructores tuviesen definidos sus nombres. Para finalizar, se tuvo que modificar los archivos correspondientes al Play, debido a que estos están utilizando Executor y para poder acceder a las funcionalidades agregadas, se debió reemplazar por la clase creada ExecutorRecorder.