NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos NIVEL 15:...
Transcript of NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos NIVEL 15:...
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS
Patrones de Diseño: MVC, Singleton
1
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Agenda
• Arquitectura MVC & patrón observador
• Singleton
2
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Patrones de diseño: Patrón observador
3
Sujeto
Observador
Observador
Observador
• Un elemento con la información, y uno o varios
elementos que lo observan (dependen de él):
• servidor / clientes
• modelo / vistas
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Ejemplo: Modelo - Vistas
0
10
2 0
3 0
4 0
5 0
1 2 3 4 5
12
34
5
C1
0
2 0
4 0
6 0
4
Negro: 43%
Rojo: 39%
Azul: 6%
Verde: 10%
Otros: 2%
Modelo (Sujeto - Mundo)
Vista1 : pie Vista2 : barras Vista3 : curvas Vista4 : hoja
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Patrón observador• Permite a un objeto registrarse dinámicamente como
dependiente de otro, de manera que, este otro, lo notifique cada vez que su estado interno cambie
• Permite comunicar y sincronizar un conjunto de vistas con el sujeto observado
• Se basa en el esquema call-back de métodos
5
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Patrón observador (en java.util)
6
Observable
addObserver( )
deleteObserver( )
notifyObservers( )
Sujeto
metodo( )
Observer
update( )*
Vista
update( )
…
notifyObservers( )
for(all observers)
update( )
método call-back
InterfaceClass
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
7
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
8
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Patrón observador
• Desacopla observables de sus observadores
• Facilita escalabilidad y extensibilidad
• Los observadores se adicionan en tiempo de ejecución
• Existen variantes, dependiendo de los casos específicos (modelo PUSH vs. PULL)
9
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
El observable …
10
PUSH
PULL
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
El observador…
11
Al crearse, se adiciona como
observador del sujeto
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
El observador…
12
PUSH
PULL
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
El main ...
13
Crea el sujeto observable
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
14
Crea los observadores
El main ...
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Arquitectura MVC
15
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
• Es una arquitectura para programas gráficos interactivos, que separa la aplicación en tres componentes y los sincroniza utilizando el patrón observador.
• M = Modelo, V = Vista, C = Control
16
ModeloVista
ControlMúltiples variantes, dependiendo
del modelo de sincronización diseñado
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Componentes de MVC
17
ModeloVista
Control
Encapsula la lógica del mundo
Muestra la información al usuario (distintas perspectivas)
Maneja la interacción con el usuario
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
MVC
• Permite • Separar el mundo de su presentación• Definir varias vistas sobre el mismo mundo • Desarrollar de forma separada la GUI y el mundo• Llevar el mundo hacia otras GUI• Minimizar cambios en el mundo frente a cambios
de la GUI
• Utilizado en • Contextos de GUI de las aplicaciones• Ambientes interactivos
18
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
MVC: Problemática a resolverCómo separar las responsabilidades de la lógica del mundo de la capa de presentación?
• Las vistas • Puede mostrar la información de diferentes formas
• Deben reflejar inmediatamente cambios sobre la información
• La información debe responder a cambios provocados por los controladores
• La GUI • Debe estar desacoplada del mundo
• Puede cambiar independientemente del mundo
19
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Responsabilidades del modelo• Encapsular la funcionalidad del mundo
• Registrar sus observadores
• Notificar a sus observadores cuando un cambio ocurre
• Colaborar con las vistas y los controladores para que
• El controlador pueda invocar servicios sobre el modelo.
• Las vistas y los controladores tengan acceso a servicios específicos de acceso a los datos para propósitos de actualización.
20
Modelo
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Patrón observer
21
Modelo (Sujeto)
• Application
services
• Notify changes
Observer
• Update
*
Vista Controlador
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Responsabilidades de las vistas
• Desplegar la información al usuario
• Contiene un servicio de actualización que se activa cuando el modelo envía una una notificación de cambio
22
Vista
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Responsabilidades de los Controladores• Recibe las entradas del usuario
• Traduce los eventos del usuario en invocaciones a los servicios ofrecidos por el modelo
• Reacciona a cambios del modelo (por ejemplo, activar/desactivar menús)
23
Control
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
24
Modelo
• Application
services
• Notify
changes
Observer
• Update*
Vista Controlador
• Update
• Display
information
• Update
• Manage events
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Arquitectura MVC: ejemplo
25
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
26
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
27
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
28
3999
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
29
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
30
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Arquitectura MVC: ejemplo
31
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Arquitectura MVC: ejemplo
32
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Arquitectura MVC: ejemplo
33
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Arquitectura MVC: ejemplo
34
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Arquitectura MVC: ejemplo
• Modelo = Número• Vista = Ventana Interna + Panel• Control = Botón + zona de interacción
35
Laboratorio: Extender el ejercicio n15_numeroMvc con una nueva ventana interna (VC) que permita visualizar y modificar el número de manera diferente.
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
Agenda
• Arquitectura MVC & patrón observador
• Singleton
36
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
37
• Es uno de los patrones de diseño de GoF.
• Garantiza que sólo existe una instancia de la clase.
• Proporciona un punto de acceso global a ésta instancia.
• Útil cuando varios clientes distintos acceden a un mismo elemento.
Patrón Singleton
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
38
Patrón Singleton