IIC2233-2016-02 / Syllabus

Repositorio principal del curso
29 stars 25 forks source link

Duda sobre simulacion #352

Closed abannura closed 7 years ago

abannura commented 7 years ago

Hola! Estaba leyendo los apuntes sobre simulacion y la ayudantia y sale que recomiendan usar properties para modelar algunos atributos. La verdad no entiendo porque hay una ventaja sobre usar un metodo o un atributo normal. Muchas gracias!

jtagle2 commented 7 years ago

@abannura, si bien las 3 opciones puedes llegar a la misma solución (que tu simulación funcione), el consejo es por su bien.

¿Por qué no un atributo?

Para verlo en una situación concreta. veamos el caso del taller de autos en el material de clase. Posee una property ocupado, que retorna un valor Booleano que depende de otro atributo de la clase (Tenemos un estado A, que depende del atributo B). Entonces, hay 3 formas de implementarlo,

Ahora, ¿Por qué no un método?

Veamos otro ejemplo concreto, supongamos que en tu simulación, tienes varios elementos, los cuales todos influyen en el próximo evento a ocurrir (el próximo evento de la simulación, será el mínimo de todos los eventos que ocurrirán en el futuro). Ahora, hay 2 tipos de elementos: un elemento A1, que solo hará una intervención en tu simulación (es decir, solo tendrá 1 próximo evento, y después desaparece). Luego, A1 es lógico que tenga un atributo proximo_evento. Por otro lado, tienes A2 que el próximo evento a ocurrir, dependerá de varios otras variables dentro de la misma clase, es decir, en esta clase tendremos que hacer o una property o un método que le avise a la simulación, cuándo será el próximo evento. Hasta el momento, no sale ningún problema, pero ahora veamos que pasa en ambos casos, cuando la simulación intenta obtener el próximo evento que ocurrirá.

Es verdad que cualquiera de los caminos que se implementen, puede funcionar sin ningún problema. El problema es que sin el uso de las properties, a medida que se va complejizando la simulación, el programarlo se irá haciendo más tedioso y complejo. (Qué es más fácil, recorrer todos los elementos y chequear elemento.proximo_evento, o recorrer todos los elementos, chequear isinstance(elemento, Clase) y según eso chequear un método o atributo). Espero se entienda la idea, y obviamente esto eran 2 ejemplos puntuales, pero que ayudan a responder por qué es mejor una opción por sobre la otra. Durante la ayudantía se discutió con más profundidad, siempre es recomendable asistir (y ojalá con el material de clases previamente leído). Saludos!

abannura commented 7 years ago

Primero que todo, disculpa si en la ayudantia ya lo habian discutido, no pude ir esta vez. Segundo, muchisimas gracias por tu explicacion! Muy completa y clara. Nunca se me hubiesen ocurrido a mi estos detalles, pero los entendi perfect y me hicieron mucho sentido. Gracias!