salluzziluca / TP1-Algo3

1er TP de la materia Algoritmos y Programacion III de la Facultad de de Ingeniería de la Universidad de Buenos Aires
0 stars 0 forks source link

Duda sobre clases #13

Closed salluzziluca closed 2 years ago

salluzziluca commented 2 years ago

Seria correcto que la carta pueda acceder a informacion del jugador tales como el maná o la mano actual? Es decir, que la carta pueda interactuar con atributos de la clase que la contiene

dessaya commented 2 years ago

Si el Jugador tiene una lista de Cartas y a su vez cada Carta tiene una referencia a un Jugador, entonces habría una agregación cíclica entre ambas clases. No sería del todo incorrecto, pero al menos violaría un principio de diseño.

Una consecuencia sería que eso agrega un invariante: si el jugador j tiene la carta c, entonces la carta c tiene que tener una referencia al jugador j (si fuera otro jugador sería un bug). Eso agrega complejidad en el código porque tendrías que asegurar que esa invariante se cumpla siempre.

Una alternativa sería que la carta no sepa cuál es el jugador (es decir que la agregación vaya en un único sentido Jugador <>---- Carta), pero que todos los métodos de Carta que necesiten el Jugador, que lo reciban por parámetro: carta.hacerAlgo(jugador). Ahí la dependencia sería siendo cíclica, pero sería una dependencia más débil.

salluzziluca commented 2 years ago

Lo entendimos, gracias!