Que tal Esteban, hay una thread en Squeak Dev que se llama the Timing of Time donde estamos intercamdiando mails con el pibe de Chronos sobre estos temas... Igual te comento a grandes rasgos lo que yo veo: 1) Chronos es mas completo en funcionalidad porque soporta time zones y otros calendarios, sin embargo esa funcionalidad generalmente no se usa en aplicaciones "comunes" y le agrega un complejidad al modelo que para no es bueno 2) A nivel diseño e implementacion, veo en Chronos cierta complejidad que me hace dificil entenderlo como asi algunos errores conceptuales (desde mi punto de vista por supuesto). Por ejemplo, todos las clases descienden de Immutable, una clase que el creo para manejar la inmutabilidad de sus objetos... esto me parece un abuso de herencia y ademas una mala implementacion porque nuestros objetos tambien son immutables y no necesitamos hacer algo asi... asi que te diria que a nivel diseño me gusta mas nuestra solucion. 3) Nuestra solucion tiene mas abstracciones que Chronos, como por ejemplo: * GregorianDay, que se usa para los dias como Lunes, Martes, etc. * GregorianMonth: representa meses como Enero, Febrero, etc. * GregorianMonthOfYear: representa entes como "Enero 2006", "Marzo 2005" * GregorianDayOfMonth: representa entes como "primero de Enero" * GregorianYear: representa un año gregoriano Tener estas abstracciones hace que sea mucho mas facil resolver problemas que con los otros modelos, por ejemplo:
GregorianYear current months collect: [ :aMonth | aMonth lastDate ] Devuelve las ultimas fechas de los meses de año actual (January first, 2006 to: July second, 2007) select: [ :aDate | aDate isMonday ] Devuelve todos los lunes desde el primero de enero del 2006 al 2 de julio del 2007 (January first, 2006 to: July second, 2007) every: (Array with: Monday with: Friday) Devuelve todos los lunes y viernes desde el primero de enero del 2006 al 2 de julio del 2007 March next: 3 * TimeUnits month --> Devuelve Junio March, 2006 next: 3 * TimeUnits year --> Devuelve March, 2009 En fin, hay muchas cosas que se simplifican muchisimo. Ademas usamos medidas para aquellas entidades que representan segmentos en la linea del tiempo, que es el paquete de aconcagua. Por ejemplo: 10 * TimeUnits day --> representa 10 dias 10 * TimeUnits day convertTo: TimeUnits second -> Devuelve la cantidad de segundos en 10 dias GregorianDate today distanceTo: GregorianDate today year lastDate --> Cantidad de dias desde hoy al ultimo dia del año... si hoy es 21/4/06 devuelve "254 dias" Bueno, hay muchas otros ejemplos mas que tambien creo que son interesantes... estamos tratando de poner todo esto en una pagina web para poder mostrar el pontencial que tiene. Un abrazo y cualquier cosa no duden en preguntar. Hernan --~--~---------~--~----~------------~-------~--~----~ Ha recibido este mensaje porque está suscrito a Grupos de Google "clubSmalltalk" grupo. Si quiere publicar en este grupo, mande un correo electrónico a [email protected] Para anular la suscripción a este grupo, envíe un mensaje a [EMAIL PROTECTED] Para visualizar más opciones, visite este grupo enhttp://groups.google.com/group/clubSmalltalk -~----------~----~----~----~------~----~------~--~---
