03-03-2015, 23:30
Hola, alguien tiene el final de esta ultima fecha? o se acuerda un poco lo que tomaron... Dejaron los 5/10 min para verlo/irse ?
Muchas gracias!
Muchas gracias!
Cita:Se desea que los costos por unidad de tiempo (diaria, semanal, mensual) ya no se especifiquen para cada auto sino para cada categoría. De esta forma, todos los autos de la categoría "económico" cuestan lo mismo. La decisión del tipo de facturación (diaria, mensual o semanal) sigue correspondiendo a cada auto.
pero me hace ruido que un auto tenga muchas categorias porque justamente eso te obliga a parametrizar la categoria.
clase Categoria(unitarioDiario: Numero, unitarioSemanal: Numero, unitarioMensual: Numero)
metodo unitarioPorDia
unitarioDiario
fin
metodo unitarioPorSemana
unitarioSemanal
fin
metodo unitarioPorMes
unitarioMensual
fin
clase ModoDiario hereda ModoFacturacion
metodo calcularCosto(categoria: Categoria, desde: Fecha, hasta: Fecha)
(self cantidadDeDias(desde,hasta)) * (categoria unitarioPorDia)
fin
clase ModoSemanal hereda ModoFacturacion
metodo calcularCosto(categoria: Categoria, desde, hasta)
(self cantidadDeSemanas(desde,hasta))*(categoria unitarioPorSemana)
fin
clase ModoMensual hereda ModoFacturacion
metodo calcularCosto(categoria: Categoria, desde, hasta)
(self cantidadDeMeses(desde,hasta))*(categoria unitarioPorMes)
fin
clase Auto(modo: ModoFacturacion)
atributo categorias
metodo perteneceA(categoria)
categoria contiene(categoria)
fin
metodo calcularCosto(categoria, desde, hasta)
if(! self perteneceA(categoria) )
lanzar nueva Excepcion
modo calcularCosto(categoria, desde, hasta)
fin
Cita:De esta forma, todos los autos de la categoría "económico" cuestan lo mismo
Cita:ecoMensual = new Categoria("mensual mas barato", 50)
ecoSemanal = new Categoria("semanal mas barato", 60)
ecoDiario = new Categoria("diario mas barato", 70)
clase Auto
metodo calcularCosto(categoria, desde, hasta)
retornar modo.calcularCosto(categoria, desde, hasta)
fin
clase abstracta Modo
metodo final calcularCosto(categoria, desde, hasta)
/* template method */
retornar self.periodos(desde, hasta) * self.costoUnitario(categoria)
fin
metodo final costoUnitario(categoria)
retornar categoria.unitarioPara(self)
fin
metodo abstracto periodos(desde, hasta)
/* lo implementa cada subclase */
fin
clase ModoSimple hereda Modo
clase ModoDiario hereda ModoSimple
redefinir periodos(desde, hasta)
retornar dias(desde, hasta) /*calcula dias entre dos fechas */
fin
clase ModoSemanal hereda ModoSimple
redefinir periodos(desde, hasta)
retornar semanas(desde, hasta) /* calcula semanas entre dos fechas */
fin
clase ModoEstacional hereda Modo (
atributo condicion: CondicionTemporada
atributo modoDefault: ModoSimple
atributo modoTemporada: ModoSimple
metodo calcularCosto(categoria, desde, hasta)
if(condicion.check(desde,hasta))
retornar modoTemporada.calcularCosto(categoria, desde, hasta)
retornar modoDefault.calcularCosto(categoria, desde, hasta)
fin
interface Categoria
/* define los costos unitarios para cada modo */
/* double dispatch con Modo */
metodo unitarioPara(modo: ModoDiario)
metodo unitarioPara(modo: ModoSemanal)
metodo unitarioPara(modo: ModoMensual)
clase Economico implementa Categoria
/* implementar */
clase NoTanEconomico implementa Categoria
/* implementar */
interface CondicionTemporada
metodo check(desde, hasta)
Cita:Estuve viendo todo de nuevo, y me parece que hay un double dispatch, un template method, y un composite a medias en este final.
Cita:me parece que estas definiendo el costo de cada categoria para cada auto.No! Por que es mas, podes decir que son singleton... (una vez que las creas nadie puede duplicarlas o volver a instanciar) y usas esas mismas para todos los autos.
Cita:Comoposite a medias, me suena muy raro como lo decis.Aunque el gamma menciona algo de un composite con restricciones tendria que volver a leerlo a ver de que trataba.
Cita:No! Por que es mas, podes decir que son singleton... (una vez que las creas nadie puede duplicarlas o volver a instanciar) y usas esas mismas para todos los autos.
Pensa que esto, cuando yo lo haga de esta manera va a estar justificado.
Cita:ecoMensual = new Categoria("mensual mas barato", 50)
ecoSemanal = new Categoria("semanal mas barato", 60)
ecoDiario = new Categoria("diario mas barato", 70)
Cita:Se desea que los costos por unidad de tiempo (diaria, semanal, mensual) ya no se especifiquen para cada auto sino para cada categoría. De esta forma, todos los autos de la categoría "económico" cuestan lo mismo. La decisión del tipo de facturación (diaria, mensual o semanal) sigue correspondiendo a cada auto.