Se solicita información sobre el paradero del estudiante Arshak Karhanyan

Clase 9

Jueves (Mañana, 2021)

Resumen

¡Novena clase de Diseño de Sistemas en pantuflas!

En esta clase arrancamos viendo el ejercicio base de Nefli, para practicar como usar un observer, en vez de solo ser los creadores de este. Además, en anteriores clases introducimos la noción de Componentes y las interfaces que nos permiten adaptarlos. Pero en esta clase haremos mayor hincapié en la manera que estos se comunican entre sí.

Lo que vimos

Podés ver una muy interesante comparación de todos los patrones acá.

¡Mirá! En éste repositorio tenemos ejemplos donde implementamos los patrones de comunicación.

Material utilizado

---alternativa 1


--registro el listen
reproductor.registerOnStop(new StopHandler())

RepoPelis>>pendientes()
  this.pelis.filter(peli => peli.estaPendiente())


Peli>>id
Peli>>minutoActual=0

Peli>>estaPendiente()
  if (this.minutoActual != 0)
    return true
  return false

Peli>>continuarViendo()
  reproductor.play(this.id, this.minutoActual)
  this.minutoActual = 0


StopHandler>>onStop(idVideo, minutoActual)
  peli = RepoPelis.getInstance().findById(idVideo)
  peli.minutoActual = minutoActual


-- uso
-- listar las pelis pendientes
RepoPelis.getInstance().pendientes()

-- retomar una peli sin terminar
monstersInc.continuarViendo()

  • Código alternativa 2
---alternativa 2


--registro los listeneres
reproductor.registerOnStop(new StopHandler())
reproductor.registerOnFinish(new FinishHandler())


RepoPelis>>pendientes()
  this.pelis.filter(peli => peli.estaPendiente())


Peli>>id
Peli>>minutoActual=0
Peli>>estaPendiente=False

Peli>>estaPendiente()
  return estaPendiente

Peli>>continuarViendo()
  reproductor.play(this.id, this.minutoActual)
  this.estaPendiente = False


StopHandler>>onStop(idVideo, minutoActual)
  peli = RepoPelis.getInstance().findById(idVideo)
  peli.minutoActual = minutoActual
  peli.estaPendiente = True

FinishHandler>>onFinish(idVideo)
  peli = RepoPelis.getInstance().findById(idVideo)
  peli.minutoActual = peli.duracion

-- uso
-- listar las pelis pendientes
RepoPelis.getInstance().pendientes()

-- retomar una peli sin terminar
monstersInc.continuarViendo()

Para la próxima clase

  • Apunte reificar comportamiento
  • Ejercicio manejo de proyectos: de este apunte muchas cosas ya las vieron, pero no vendría mal repasarlas, la parte nueva de la solución es un patrón que a veces es útil que es el composite pattern
  • Patrón State - Libro Patrones
  • Patrón Composite - Libro Patrones