franciscogazitua / IIC2113-2024

Consultas sobre el proyecto en las Issues
4 stars 0 forks source link

Sobre modificar la clase AbstractView #171

Open TomasRiquelme opened 1 month ago

TomasRiquelme commented 1 month ago

Buenos dias! Estaba en proceso de limpiar el código, y pensando en lo visto en clases sobre modelo-vista-controlador; se me ocurrió pasarle al _view de Game todos los metodos relacionados a "mostrar" y "recibir input".

Sabiendo que abstract view es el de los metodos WriteLine y Readline ¿debería modificar esa clase para que tenga esos metodos o deberia modificar View, por ejemplo? Muchas gracias :D

RodrigoToroIcarte commented 1 month ago

¡Buenas!

No es necesario cambiar el AbstractView para hacer lo que quieres. Basta con agregar los métodos extra a la clase View porque desde Game tienes acceso a una instancia de View (que tiene como atributo un objeto que hereda de AbstractView). Si agregaras los métodos al AbstractView tendrías que agregar alguna forma de acceder desde Game al AbstractView dentro de View -- que es innecesariamente complicado :P

Igual, yo no recomiendo modificar ni View ni AbstractView. Esas son clases que tienen una responsabilidad bien definida (que es recordar el input/output para ser comparado con los test cases... por eso View tiene el método GetScript()).

Mi recomendación es definir otras clases de tipo vista que reciban el View y tengan los métodos que quieres. Por ejemplo, un TeamSelectionView que tenga los métodos relacionados al input/output para seleccionar a los equipos. O un NeutralizerView que tenga los métodos para el input/output de los neutralizadores.

En todo caso, mientras separes los métodos de la vista del controlador/modelo vas a estar bien. Más adelante puede que descubras que era mejor tener varias vistas (como lo que te estoy recomendando). Pero hacer ese cambio te resultará fácil si ya tienes todos los métodos asociados a la vista en View. Será cosa de mover código no más :)

TomasRiquelme commented 1 month ago

Muchisimas gracias :D! Ahora tengo una mejor idea de como hacerlo PD: muchas gracias por responder en semana de receso uwu