NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos NIVEL 15:...

Preview:

Citation preview

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