RodrigoToroIcarte / IIC2113-2023-1

6 stars 0 forks source link

Atributos privados pero usando IViewable #175

Open piacabrera opened 9 months ago

piacabrera commented 9 months ago

Hola! me queda una duda aplicando el capítulo 6. Entiendo que los atributos de las clases deben ser privados para no acceder a ellos directamente, pero para aplicar la interfaz IViewableCardInfo es necesario que los atributos sean públicos, es posible compatibilizar esto con la clase Card? o es incorrecto y se debería crear otra clase que herede de IViewableCardInfo y que su instancia sea un atributo de Card? Muchas gracias :)

RodrigoToroIcarte commented 9 months ago

¡Hola!

Mira esta discusión (y sus issues asociados): https://github.com/RodrigoToroIcarte/IIC2113-2023-1/issues/170

El capítulo 6 dice que hay dos opciones. Puedes hacer que una clase sea un "objeto" o una "estructura de datos". Los objetos tienen sus atributos privados y algunos métodos públicos (de alto nivel) para interactuar con el objeto. Las estructuras de datos tienen sus atributos públicos (o getters/setters) y (casi) no tienen otros métodos.

La discusión principal del capítulo es sobre cuándo definir una clase como "objeto" o como "estructura de datos".