franciscogazitua / IIC2113-2024

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

Duda sobre implementación IUnit a la GUI #129

Open rmezaa opened 3 months ago

rmezaa commented 3 months ago

Hola! Tengo un par de dudas con respecto a IUnit y como se aplica en la interfaz gráfica. Empecé a implementarla, y lo que había hecho era implementar la Interfaz IUnit en mis modelos, para poder pasárselos a la GUI. Al intentar usar los métodos de FireEmblemWindow, me decía que ya existía IUnit en la librería de Fire_Emblem_Gui, y la FireEmblemWindow solo aceptaba ese tipo de IUnit.

Captura de pantalla 2024-06-25 a la(s) 8 46 55 p m

Al final se espera que la clase auxiliar que se muestra en el ejemplo del enunciado y código, MyUnit que hereda de IUnit, sean solamente parte de la vista, que se creen ahí y solo sea para mostrar información?

RodrigoToroIcarte commented 3 months ago

No tienes que crear una interfaz IUnit propia. Eso no funciona porque IUnit ya está implementado dentro de la librería Fire_Emplem_GUI. Y los métodos de la librería reciben cualquier objeto que implemente el IUnit de Fire_Emplem_GUI. No funcionará con un IUnit creado por ti.

Lo que hay que hacer es tener alguna clase que implemente IUnit y pasar ese objeto a la librería. Ese objeto, llamémoslo GuiUnit, puede estar en el proyecto vista y ser construido a partir de un Unit o podría estar en el modelo y que tu Unit implemente el IUnit directo. Esto es válido. No genera dependencias circulares porque no requiere importar el proyecto FireEmblemView. Lo que requiere es que el modelo también tenga una referencia a la librería Fire_Emplem_GUI.

¿Qué es más fácil? No sé. Yo encuentro más fácil tener un GuiUnit dentro de la vista. Pero puede que a ti te salga más fácil importar Fire_Emplem_GUI en el modelo y que tu Unit de siempre implemente el Fire_Emplem_GUI.IUnit. Para hacer eso, también tienes que seguir estos pasos (aunque la carpeta GuiLib basta con que esté en el proyecto FireEmblemView... no es necesario copiar y pegarla en los otros proyectos):

Screenshot from 2024-06-25 22-14-05

rmezaa commented 3 months ago

Perfect! Gracias profe