Eventos que se repiten #509
-
Buenas, estoy con la resolución del TPI3, y estancado hace bastante tiempo en como plantear los eventos que se repiten. Primero pensé en hacerlos polimórficos con los normales, pero esto no haría posible aparezcan varias veces en el calendarío, sino que simplemente aparecerían en distintos lugares del mismo según como se le pregunte. Con esta resolución, además, se complica el comparar si están superpuestos, ya que esta operación en verdad no es polimórifca, y requiere chequear de una forma distinta según si se trata de reptitivo vs repetitvo, único vs único o único vs repetitivo. |
Beta Was this translation helpful? Give feedback.
Replies: 4 comments 1 reply
-
En el contexto de mi solución, el test unEventoRecurrenteSabeCuantoFaltaParaSuProximaRepeticion no tendría sentido, ya que no hay evento recurrente, solo muchos eventitios. Esto es una señal de que voy mal, o puedo borrarlo sin mayor consecuencia? |
Beta Was this translation helpful? Give feedback.
-
¡Buenas, @JuanManuelRama!
Esto tiene sentido. En algún punto te va a convenir que los distintos tipos de eventos tengan comportamiento polimórfico.
¿Pero esto evitaría que el comportamiento sea polimorfico? Tené en cuenta que un evento sólo tiene sentido dentro de un calendario, por lo que para encontrar una representación polimórfica vas a tener que pensar en cómo interactúa con éste. Por ejemplo, si tu calendario es tan sólo una lista (finita) de eventos y todo se reduce a filtrar esos eventos en cierto rango de fechas, estoy de acuerdo en que pensarlo polimórficamente será difícil. Pero quizás puedas delegar en los eventos que lo componen el obtener sus propias ocurrencias (que en general, serán únicas, pero en en los repetitivos seguirán un cierto patrón de formación) en un cierto rango. O quizás puedas hacer que los mismos sepan decir cual es su próxima "copia", o que de alguna forma la interacción entre calendarios y eventos produzca listas potencialmente infinitas (streams), o quizás simplemente puedas hacer que sean polimórficos para la mayor parte de las interacciones, pero que los repetitivos tengan algún tratamiento especial. En otras palabras, alternativas hay muchas, pero probablemente impliquen delegar más en los eventos, dejar de pensarlos como elementos individuales que aparecen una cierta cantidad de veces dentro de una lista finita y/o separar el concepto de evento del concepto de ocurrencia. |
Beta Was this translation helpful? Give feedback.
-
Esta idea es interesante, ¿pero por qué eliminaría el polimorfismo entre eventos? Así descripto parece más bien que estás introduciendo un nuevo concepto (el generador de eventos), separado del evento. Probablemente tus generadores de eventos sean polimórficos, mientras que los eventos que produzcan sean siempre del mismo tipo, entonces no tenga sentido hablar de polimorfismo (sólo habría un único tipo de evento, sin distinguir entre repetitivo y único). Esto así planteado parece análogo a lo que te comentaba antes: eventos (únicos o repetitivos) y ocurrencias (la instancia concreta de ese evento en un momento en el tiempo). |
Beta Was this translation helpful? Give feedback.
-
Esto tiene mucho sentido, porque nunca vas a consultar eventos sin delimitar claramente el rango de fecha que estás estudiando
Sería interesante poder evitar este límite arbitrario, pero en última instancia, no me parece grave: creo que sería una limitación entendible si no calculara eventos que van a repetirse más allá de la vida de un ser humano. En otras palabras, dado que no estamos creando un sistema para simular eventos geológicos o astronómicos, sino para organizar actividades cotidianas, es razonable que no volvamos más complejo el sistema para modelar situaciones que se van de su alcance.
Creo que la solución que planteás (si bien tiene aspectos que no termino de entender) está en el rumbo correcto. |
Beta Was this translation helpful? Give feedback.
Esta idea es interesante, ¿pero por qué eliminaría el polimorfismo entre eventos? Así descripto parece más bien que estás introduciendo un nuevo concepto (el generador de eventos), separado del evento. Probablemente tus generadores de eventos sean polimórficos, mientras que los eventos que produzcan sean siempre del mismo tipo, entonces no tenga sentido hablar de polimorfismo (sólo habr…