franciscogazitua / IIC2113-2024

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

Dudas capítulo boundaries #68

Open danilarco opened 5 months ago

danilarco commented 5 months ago

Hola, tengo unas dudas respecto al capítulo de boundaries. Al no poder pasar como argumento ni retornar listas en funciones, debemos crear nuestras clases a la medida. Yo actualmente le estoy pasando a un método un argumento de tipo List. Sería válido crear una clase ListaALaMedida que tuviera un atributo List y en vez de pasarle List como argumento a ese método, le pasara como argumento ListaALaMedida para poder acceder dentro del método a su atributo List? Y si no es válido, cuál sería una buena forma de hacerlo? Además, mi otra duda es si es que podemos pasar como argumento a funciones arreglos del tipo string[], ya que creo que estos no son de librerías externas, al contrario de LIst. Lo último, tampoco se puede pasar listas a los constructores de clases? Gracias de antemano!

franciscogazitua commented 5 months ago

Hola

Efectivamente puedes usar una clase ListaALaMedida (con otro nombre) que tenga como atributo privado una lista y que tenga métodos que accedan a los métodos de la lista. Esto es una solución valida porque respeta el punto central del capítulo, que es la encapsulación para protegerse de cambios. Más que List sea una librería externa (que también es un punto central del porque la queremos encapsular), una buena razón para encapsularlas es que el cambio de colección es un cambio muy frecuente. Es muy probable que en tu experiencia programando hayas tenido que hacer cambios de List a Queue o de List a Set u algún otro cambio de colección. La razón para encapsular estas colecciones es que si no la haces y usas una lista en tu código y luego quieres cambiarla por un Queue, tendrías que cambiar todas las veces que usas dicha lista y adaptar todos esos pedazos de código para que ahora funciones con Queues. Sin embargo, si encapsulas tus listas en, como mencionabas, una clase como ListaALaMedida, cuando hagas el cambio de List a Queue solo debes actualizar los métodos de de ListaALaMedida y ningún método que usaba la clase antes del cambio. De todas maneras, esta sección del libro apoya una implementación similar a la que propones Captura

Saludos