38
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Patrones de Diseño: MVC, Singleton

1

Page 2: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  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

Page 3: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 4: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 5: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 6: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 7: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

7

Page 8: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

8

Page 9: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 10: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

El observable …

10

PUSH

PULL

Page 11: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

El observador…

11

Al crearse, se adiciona como

observador del sujeto

Page 12: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

El observador…

12

PUSH

PULL

Page 13: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

El main ...

13

Crea el sujeto observable

Page 14: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

14

Crea los observadores

El main ...

Page 15: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Arquitectura MVC

15

Page 16: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 17: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 18: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 19: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 20: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 21: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Patrón observer

21

Modelo (Sujeto)

• Application

services

• Notify changes

Observer

• Update

*

Vista Controlador

Page 22: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 23: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 24: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 25: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Arquitectura MVC: ejemplo

25

Page 26: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

26

Page 27: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

27

Page 28: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

28

3999

Page 29: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

29

Page 30: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

30

Page 31: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Arquitectura MVC: ejemplo

31

Page 32: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Arquitectura MVC: ejemplo

32

Page 33: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Arquitectura MVC: ejemplo

33

Page 34: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Arquitectura MVC: ejemplo

34

Page 35: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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.

Page 36: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  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

36

Page 37: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

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

Page 38: NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS · ISIS1206 –Estructuras de Datos  NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Patrones de Diseño: MVC, Singleton 1

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

38

Patrón Singleton