4
Lo más leído
8
Lo más leído
9
Lo más leído
Maestria en Sistemas Computacionales
Diseño Orientado a Objetos
Patron ObservadorPatron Observador
(Pattern Observer)(Pattern Observer)
Expone:
Ing. Fernando Alfonso Casas De la Torre
Catedratico:
Dr. Diego Uribe Agundis
Patron ObservadorPatron Observador
INTRODUCCION:
El Patron Observador (Observer) es un patrón de diseño de software que
define una dependencia del tipo uno a muchos entre objetos, de manera que
cuando uno de los objetos cambia su estado, notifica este cambio a todos los
dependientes.
Se trata de un patrón de comportamiento (existen de 3 tipos: creación,
estructurales y de comportamiento), por lo que está relacionado con algoritmos
de funcionamiento y asignación de responsabilidades a clases y objetos.
Los patrones de comportamiento describen no solamente estructuras de
relación entre objetos o clases sino también esquemas de comunicación entre
ellos y se pueden clasificar en función de que trabajen con: clases (método
plantilla) u objetos (cadena de responsabilidad), Comando, iterador recuerdo,
observador, estado, estrategia, visitante).
Patron ObservadorPatron Observador
COMPONENTES:
•Subject: conoce a sus observadores y ofrece la posibilidad de añadir y
eliminar observadores. Posee un método llamado attach() (agrega) y otro
detach() (remueve) que sirven para agregar o remover observadores en
tiempo de ejecución.
•Observer: define la interfaz que sirve para notificar a los observadores los
cambios realizados en el Subject.
•SubjectConcreto: almacena el estado que es objeto de interés de los
observadores y envía un mensaje a sus observadores cuando su estado
cambia.
•ObserverConcreto: mantiene una referencia a un SubjectConcreto.
Almacena el estado del Subject (Status- Update) que le resulta de interés.
Implementa la interfaz de actualización de Observer para mantener la
consistencia entre los dos estados
Patron ObservadorPatron Observador
COMO FUNCIONA:
•El Objeto De Datos, que se le puede llamar Sujeto a partir de ahora,
contiene atributos mediante los cuales cualquier Objeto observador (o vista)
se puede suscribir a él pasándole una referencia a sí mismo.
•El Sujeto mantiene así una lista de las referencias a sus observadores.
•Los observadores a su vez están obligados a implementar unos métodos
determinados mediante los cuales el Sujeto es capaz de notificar a sus
observadores suscritos los cambios que sufre para que todos ellos tengan la
oportunidad de refrescar el contenido representado.
Sujeto
SujetoConcreto ObservadorConcreto
Observador
Patron ObservadorPatron Observador
COMO FUNCIONA:
Esta disposicion provoca que cuando se produce un cambio en el Sujeto,
ejecutado, por ejemplo, por alguno de los observadores, el objeto de datos
puede recorrer la lista de observadores avisando a cada uno.
Este patrón suele utilizarse en los entornos de trabajo de interfaces gráficas
orientados a objetos (Java, Android, etc.), en los que la forma de capturar los
eventos es suscribir listeners a los objetos que pueden disparar eventos al
ver que han ocurrido los cambios que estaban esperando.
Sujeto
Registra Observadores()
RemueveObservadores()
NotificaObservadores()
SujetoConcreto
Registra Observadores() {..}
RemueveObservadores() {..}
NotificaObservadores() {..}
getStatus()
setStatus()
ObservadorConcreto
Update ()
// otros metodos para
Observadores
Observador
Update ()
Observadores (1..n)
Sujeto
Patron ObservadorPatron Observador
COMPONENTES:
Este patrón tiene un uso muy concreto: varios objetos necesitan ser notificados
de un evento y cada uno de ellos deciden como reaccionar cuando esta evento
se produzca.
Un caso típico es la Bolsa de Comercio, donde se trabaja con las acciones de
las empresas. Imaginemos que muchas empresas estan monitoreando las
acciones una empresa X.
• Posiblemente si estas acciones bajan,
algunas personas esten interesadas en
vender acciones, otras en comprar, otras
quizas no hagan nada y la empresa X quizas
tome alguna decisión por su cuenta.
• Todos los observadores reaccionan distinto
ante el mismo evento.
Patron ObservadorPatron Observador
EJEMPLO:
Vamos a suponer un ejemplo de una Biblioteca, donde cada vez que un lector
devuelve un libro se ejecuta el método devuelveLibro(Libro libro) de la clase
Biblioteca.
:Si el lector devolvió el libro
dañado entonces la aplicación
avisa a ciertas clases que
están interesadas en conocer
o que deben conocer, este
evento
Patron ObservadorPatron Observador
EJEMPLO:
Cada clase que quiera observar el cambio del estado en el libro deberá
implementar la siguiente interface y darle lógica al método update().
Las clases o instancias interesadas en saber el estado del libro devuelto por el
estado de ILibroMalEstado() son: Administracion(), Compras() y Stock().
Patron ObservadorPatron Observador
EJEMPLO:
Veamos el Subject. Este determinara a quien notificara el estado de los libros
que llegan. Define la lista activa de suscriptores agregandolos y eliminandolos
de ella y solamente a aquellos autentificados o validos les informara del estado
del sujeto observado o evento…
La clase AlarmaLibro() registra y
actualiza la lista de
observadores del evento y les
notifica a estos cuando hay uno
Patron ObservadorPatron Observador
EJEMPLO:
La biblioteca es quién dispara el evento. Seguramente el estado de un libro no
estará en formato String, pero no viene al caso.
Se muestra una corrida de los
programas del ejemplo de la
Biblioteca con un estado o caso
para activar eventos…
Patron ObservadorPatron Observador
CONSIDERACIONES
•El Patron Observador permite modificar las clases subjects y las observers
independientemente.
•Permite añadir nuevos observadores en tiempo de ejecución, sin que esto
afecte a ningún otro observador.
•Permite que dos capas de diferentes niveles de abstracción se puedan
comunicar entre sí sin romper esa división.
•Permite comunicación broadcast, es decir, un objeto subject envía su
notificación a todos los observers sin enviárselo a ningún observer en concreto
(el mensaje no tiene un destinatario concreto). Todos los observers reciben el
mensaje y deciden si hacerle caso ó ignorarlo.
•La comunicación entre los objetos subject y sus observadores es limitada: el
evento siempre significa que se ha producido algún cambio en el estado del
objeto y el mensaje no indica el destinatario
Patron ObservadorPatron Observador
CONCLUSION:
Básicamente debemos saber que el patrón Observer es un patrón de
comportamiento que permite relacionar diferentes objetos entre si en torno a
uno Principal, así cada vez que este ultimo cambie su estado, los demás
también cambiaran de forma automática....
Podemos decir entonces que dicho patrón se compone de un objeto
observable u Observado (SujetoConcreto) y objetos observadores
(ObservadorConcreto)....
Un Objeto Observable puede tener uno o
mas Observadores, como vemos el
ObservadorConcreto implementa la
interface Observer (propia de Java) la cual
permite informar sobre los cambios en los
objetos observables mediante una llamada
al método update()
Patron ObservadorPatron Observador
REFERENCIAS:
HEAD FIRST DESIGN PATTERNS
Erick Freeman
UML Y PATRONES
Craig Larmann
BLOG «Mi granito de Java»
http://migranitodejava.blogspot.mx/search/label/Observer
BLOG «Codigo DejaVu»
http://codejavu.blogspot.mx/2013/06/ejemplo-patron-observer.html
WIKIPEDIA
https://es.wikipedia.org/wiki/Observer_(patr%C3%B3n_de_dise%C3%B1o)
Patron ObservadorPatron Observador
(Pattern Observer)(Pattern Observer)
GRACIAS POR SU ATENCIONGRACIAS POR SU ATENCION
Expuso:
Ing. Fernando Alfonso Casas De la Torre
Matricula
M1713019
fernando_casas69@hotmail.com
Maestria en Sistemas
Computacionales
Diseño Orientado a Objetos
Catedratico:
Dr. Diego Uribe Agundis

Más contenido relacionado

PPSX
Polimorfismo y Clases Abstractas
PPTX
Clasificación de los equipos de manejo de materiales
PDF
Formato ieee
DOCX
Tarjeta de adquisición de datos
DOCX
Resumen microcontroladores
PDF
Manual Arduino Electronica
PPT
Una mirada al diagrama Entidad Relación E.E.R.R. por Luicossa
ODP
Sistemas de Control
Polimorfismo y Clases Abstractas
Clasificación de los equipos de manejo de materiales
Formato ieee
Tarjeta de adquisición de datos
Resumen microcontroladores
Manual Arduino Electronica
Una mirada al diagrama Entidad Relación E.E.R.R. por Luicossa
Sistemas de Control

La actualidad más candente (20)

PPTX
Clase tres
PPTX
Sistemas scada
PPTX
Bitácora de base de datos
PPT
Algoritmos Genéticos
PPTX
Sistemas lineales invariantes en el tiempo
PDF
Circuitos digitales-problemas
PPTX
Planificacion y modelado para una ferreteria
PDF
Diseno automatismo logicos
PPT
Sesion 5 1 diagrama de secuencia
PDF
Manual 2 Software Arena
PPTX
Simulación - Unidad 4 Lenguajes de Simulación (Promodel)
PPT
Ppt sistemas control
DOCX
Diagrama de casos de uso
PPTX
Unidad 5-administracion-de-almacenes
PPTX
Ordenamiento QuickSort
PPT
Redes Neuronales
PDF
Numeros Aleatorios
PPTX
Redes neuronales multicapa y monocapa
DOCX
Ejercicios en clase Unidad II
Clase tres
Sistemas scada
Bitácora de base de datos
Algoritmos Genéticos
Sistemas lineales invariantes en el tiempo
Circuitos digitales-problemas
Planificacion y modelado para una ferreteria
Diseno automatismo logicos
Sesion 5 1 diagrama de secuencia
Manual 2 Software Arena
Simulación - Unidad 4 Lenguajes de Simulación (Promodel)
Ppt sistemas control
Diagrama de casos de uso
Unidad 5-administracion-de-almacenes
Ordenamiento QuickSort
Redes Neuronales
Numeros Aleatorios
Redes neuronales multicapa y monocapa
Ejercicios en clase Unidad II
Publicidad

Similar a Patron observador (20)

PPTX
Observer design pattern
PPTX
Observer design pattern
DOCX
Patron sw observer
PPTX
Observer: Patrón de diseño
DOCX
PPTX
Patrones de diseño
PDF
Patrones de diseño
PPTX
PDF
Proxy observer patrones
PDF
Introduccion al paradigma de la programacion orientado a objetos original
PPT
Programacion Orientada A Objetos
PPT
Programacion Orientada A Objetos
PPTX
PROGRAMACIÓN ORIENTADA A OBJETOS
DOCX
Daniel espinosa garzon
DOCX
Conceptualizacion lenguajes de programacion
PPTX
Asignacion2
PDF
Unidad i parte i
DOCX
Termino de programacion
PPTX
Conceptos poo
Observer design pattern
Observer design pattern
Patron sw observer
Observer: Patrón de diseño
Patrones de diseño
Patrones de diseño
Proxy observer patrones
Introduccion al paradigma de la programacion orientado a objetos original
Programacion Orientada A Objetos
Programacion Orientada A Objetos
PROGRAMACIÓN ORIENTADA A OBJETOS
Daniel espinosa garzon
Conceptualizacion lenguajes de programacion
Asignacion2
Unidad i parte i
Termino de programacion
Conceptos poo
Publicidad

Más de Fernando Alfonso Casas De la Torre (20)

PPTX
Producto Interno Bruto en Mexico 2020-2024
PPTX
Inteligencia Artificial CHATGPT vs DEEPSEEK
PPT
Liderazgo Como crece un Lider Platica IMSS
PPTX
Platica para Tramites de Jubilados 2023.pptx
PPTX
Producto Interno Bruto de Mexico 2020 al 2024.pptx
PPT
Mi Cascarita Proyecto Colibri.ppt
PPT
Proyecto enlace WiFi Comunidades rurales
PPT
Congreso Academy Journal Tepic 2019
PPT
Academy Journal Morelia 2018
PPTX
Congreso Internacional de Investigacion Universidad Cortazar 2018
PDF
Congreso Academy Journal Celaya 2017
PPTX
IMSS Informatica Actividades 2014 enfriamiento de site
PPT
Historia de las Videoconsolas
PPTX
Relación universidad-gobierno: caso de remodelación de una dependencia federal
PPTX
Teorema de Naives Bayes
PPTX
Analisis de incendios forestales mediante WEKA
PPT
Introduccion a mineria de datos
PPTX
Replicación de Bases de Datos con SQL Server 2008
PPT
Incorporacion a la Seguridad Social
Producto Interno Bruto en Mexico 2020-2024
Inteligencia Artificial CHATGPT vs DEEPSEEK
Liderazgo Como crece un Lider Platica IMSS
Platica para Tramites de Jubilados 2023.pptx
Producto Interno Bruto de Mexico 2020 al 2024.pptx
Mi Cascarita Proyecto Colibri.ppt
Proyecto enlace WiFi Comunidades rurales
Congreso Academy Journal Tepic 2019
Academy Journal Morelia 2018
Congreso Internacional de Investigacion Universidad Cortazar 2018
Congreso Academy Journal Celaya 2017
IMSS Informatica Actividades 2014 enfriamiento de site
Historia de las Videoconsolas
Relación universidad-gobierno: caso de remodelación de una dependencia federal
Teorema de Naives Bayes
Analisis de incendios forestales mediante WEKA
Introduccion a mineria de datos
Replicación de Bases de Datos con SQL Server 2008
Incorporacion a la Seguridad Social

Último (10)

PPTX
hojas_de_calculo_aplicado para microsoft office
PDF
Estudio de factibilidad para requisiciones de soporte técnico utilizando OSTi...
PPT
Control de Produccion PP Track 3 Planificacion.ppt
PPTX
Programación Orientada a Objetos POO.pptx
PPTX
Navegadores de internet Ricardo Enriquez.pptx
PDF
DNS_SERVIDORES PARA ASER PRACTICAS EN REDES
PPTX
EQUIPO_8_APP_INGLES_Planet_English final.pptx
PDF
Manual de mantenimiento de soporte y mantenimiento
PDF
Manual de mantenimiento de soporte y mantenimiento
PPTX
Ekejwjdjehehhdhdhdydydydydydydydhhdhdhdhdhdhdptx
hojas_de_calculo_aplicado para microsoft office
Estudio de factibilidad para requisiciones de soporte técnico utilizando OSTi...
Control de Produccion PP Track 3 Planificacion.ppt
Programación Orientada a Objetos POO.pptx
Navegadores de internet Ricardo Enriquez.pptx
DNS_SERVIDORES PARA ASER PRACTICAS EN REDES
EQUIPO_8_APP_INGLES_Planet_English final.pptx
Manual de mantenimiento de soporte y mantenimiento
Manual de mantenimiento de soporte y mantenimiento
Ekejwjdjehehhdhdhdydydydydydydydhhdhdhdhdhdhdptx

Patron observador

  • 1. Maestria en Sistemas Computacionales Diseño Orientado a Objetos Patron ObservadorPatron Observador (Pattern Observer)(Pattern Observer) Expone: Ing. Fernando Alfonso Casas De la Torre Catedratico: Dr. Diego Uribe Agundis
  • 2. Patron ObservadorPatron Observador INTRODUCCION: El Patron Observador (Observer) es un patrón de diseño de software que define una dependencia del tipo uno a muchos entre objetos, de manera que cuando uno de los objetos cambia su estado, notifica este cambio a todos los dependientes. Se trata de un patrón de comportamiento (existen de 3 tipos: creación, estructurales y de comportamiento), por lo que está relacionado con algoritmos de funcionamiento y asignación de responsabilidades a clases y objetos. Los patrones de comportamiento describen no solamente estructuras de relación entre objetos o clases sino también esquemas de comunicación entre ellos y se pueden clasificar en función de que trabajen con: clases (método plantilla) u objetos (cadena de responsabilidad), Comando, iterador recuerdo, observador, estado, estrategia, visitante).
  • 3. Patron ObservadorPatron Observador COMPONENTES: •Subject: conoce a sus observadores y ofrece la posibilidad de añadir y eliminar observadores. Posee un método llamado attach() (agrega) y otro detach() (remueve) que sirven para agregar o remover observadores en tiempo de ejecución. •Observer: define la interfaz que sirve para notificar a los observadores los cambios realizados en el Subject. •SubjectConcreto: almacena el estado que es objeto de interés de los observadores y envía un mensaje a sus observadores cuando su estado cambia. •ObserverConcreto: mantiene una referencia a un SubjectConcreto. Almacena el estado del Subject (Status- Update) que le resulta de interés. Implementa la interfaz de actualización de Observer para mantener la consistencia entre los dos estados
  • 4. Patron ObservadorPatron Observador COMO FUNCIONA: •El Objeto De Datos, que se le puede llamar Sujeto a partir de ahora, contiene atributos mediante los cuales cualquier Objeto observador (o vista) se puede suscribir a él pasándole una referencia a sí mismo. •El Sujeto mantiene así una lista de las referencias a sus observadores. •Los observadores a su vez están obligados a implementar unos métodos determinados mediante los cuales el Sujeto es capaz de notificar a sus observadores suscritos los cambios que sufre para que todos ellos tengan la oportunidad de refrescar el contenido representado. Sujeto SujetoConcreto ObservadorConcreto Observador
  • 5. Patron ObservadorPatron Observador COMO FUNCIONA: Esta disposicion provoca que cuando se produce un cambio en el Sujeto, ejecutado, por ejemplo, por alguno de los observadores, el objeto de datos puede recorrer la lista de observadores avisando a cada uno. Este patrón suele utilizarse en los entornos de trabajo de interfaces gráficas orientados a objetos (Java, Android, etc.), en los que la forma de capturar los eventos es suscribir listeners a los objetos que pueden disparar eventos al ver que han ocurrido los cambios que estaban esperando. Sujeto Registra Observadores() RemueveObservadores() NotificaObservadores() SujetoConcreto Registra Observadores() {..} RemueveObservadores() {..} NotificaObservadores() {..} getStatus() setStatus() ObservadorConcreto Update () // otros metodos para Observadores Observador Update () Observadores (1..n) Sujeto
  • 6. Patron ObservadorPatron Observador COMPONENTES: Este patrón tiene un uso muy concreto: varios objetos necesitan ser notificados de un evento y cada uno de ellos deciden como reaccionar cuando esta evento se produzca. Un caso típico es la Bolsa de Comercio, donde se trabaja con las acciones de las empresas. Imaginemos que muchas empresas estan monitoreando las acciones una empresa X. • Posiblemente si estas acciones bajan, algunas personas esten interesadas en vender acciones, otras en comprar, otras quizas no hagan nada y la empresa X quizas tome alguna decisión por su cuenta. • Todos los observadores reaccionan distinto ante el mismo evento.
  • 7. Patron ObservadorPatron Observador EJEMPLO: Vamos a suponer un ejemplo de una Biblioteca, donde cada vez que un lector devuelve un libro se ejecuta el método devuelveLibro(Libro libro) de la clase Biblioteca. :Si el lector devolvió el libro dañado entonces la aplicación avisa a ciertas clases que están interesadas en conocer o que deben conocer, este evento
  • 8. Patron ObservadorPatron Observador EJEMPLO: Cada clase que quiera observar el cambio del estado en el libro deberá implementar la siguiente interface y darle lógica al método update(). Las clases o instancias interesadas en saber el estado del libro devuelto por el estado de ILibroMalEstado() son: Administracion(), Compras() y Stock().
  • 9. Patron ObservadorPatron Observador EJEMPLO: Veamos el Subject. Este determinara a quien notificara el estado de los libros que llegan. Define la lista activa de suscriptores agregandolos y eliminandolos de ella y solamente a aquellos autentificados o validos les informara del estado del sujeto observado o evento… La clase AlarmaLibro() registra y actualiza la lista de observadores del evento y les notifica a estos cuando hay uno
  • 10. Patron ObservadorPatron Observador EJEMPLO: La biblioteca es quién dispara el evento. Seguramente el estado de un libro no estará en formato String, pero no viene al caso. Se muestra una corrida de los programas del ejemplo de la Biblioteca con un estado o caso para activar eventos…
  • 11. Patron ObservadorPatron Observador CONSIDERACIONES •El Patron Observador permite modificar las clases subjects y las observers independientemente. •Permite añadir nuevos observadores en tiempo de ejecución, sin que esto afecte a ningún otro observador. •Permite que dos capas de diferentes niveles de abstracción se puedan comunicar entre sí sin romper esa división. •Permite comunicación broadcast, es decir, un objeto subject envía su notificación a todos los observers sin enviárselo a ningún observer en concreto (el mensaje no tiene un destinatario concreto). Todos los observers reciben el mensaje y deciden si hacerle caso ó ignorarlo. •La comunicación entre los objetos subject y sus observadores es limitada: el evento siempre significa que se ha producido algún cambio en el estado del objeto y el mensaje no indica el destinatario
  • 12. Patron ObservadorPatron Observador CONCLUSION: Básicamente debemos saber que el patrón Observer es un patrón de comportamiento que permite relacionar diferentes objetos entre si en torno a uno Principal, así cada vez que este ultimo cambie su estado, los demás también cambiaran de forma automática.... Podemos decir entonces que dicho patrón se compone de un objeto observable u Observado (SujetoConcreto) y objetos observadores (ObservadorConcreto).... Un Objeto Observable puede tener uno o mas Observadores, como vemos el ObservadorConcreto implementa la interface Observer (propia de Java) la cual permite informar sobre los cambios en los objetos observables mediante una llamada al método update()
  • 13. Patron ObservadorPatron Observador REFERENCIAS: HEAD FIRST DESIGN PATTERNS Erick Freeman UML Y PATRONES Craig Larmann BLOG «Mi granito de Java» http://migranitodejava.blogspot.mx/search/label/Observer BLOG «Codigo DejaVu» http://codejavu.blogspot.mx/2013/06/ejemplo-patron-observer.html WIKIPEDIA https://es.wikipedia.org/wiki/Observer_(patr%C3%B3n_de_dise%C3%B1o)
  • 14. Patron ObservadorPatron Observador (Pattern Observer)(Pattern Observer) GRACIAS POR SU ATENCIONGRACIAS POR SU ATENCION Expuso: Ing. Fernando Alfonso Casas De la Torre Matricula M1713019 [email protected] Maestria en Sistemas Computacionales Diseño Orientado a Objetos Catedratico: Dr. Diego Uribe Agundis