tecnología de programacióndcm/tdp/downloads/clases/2019-2do-tdp-clase-10... · departamento de...
TRANSCRIPT
![Page 1: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/1.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Tecnología de Programación
Martín L. Larrea
Departamento de Ciencias e Ingeniería de la ComputaciónUniversidad Nacional del Sur
![Page 2: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/2.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrones de diseño
Los patrones de diseño nombran, explican y evalúan un diseño importante y recurrente
en los sistemas orientados a objetos.
Erich Gamma Ralph Johnson John Vlissides Richard Helm
Gang Of Four
![Page 3: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/3.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrones GoF
Los siguientes son los patrones de diseño conocidos como GoF
PROPÓSITO
Chain of Responsibility
Command
Iterator
Mediator
Memento
Flyweight
Observer
State
Strategy
Visitor
Adapter
Bridge
Composite
Decorator
Facade
Proxy
Abstract Factory
Builder
Prototype
Singleton
OBJETO
InterpreterTemplate Method
Adapter Factory MethodCLASE
SCOPE
COMPORTAMIENTOESTRUCTURALCREACIONAL
![Page 4: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/4.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrones de ComportamientoBehavioral Patterns
![Page 5: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/5.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrones de comportamiento
Los patrones de comportamiento se centran en los algoritmos y la asignación de responsabilidades entre los
objetos.
Son patrones tanto de clases y objetos (similares a los anteriores)
como de comunicación entre ellos. Caracterizan flujo de control complejo.
Los patrones de comportamiento de clases (behavioral class patterns)
utilizan herencia para distribuir el comportamiento entre las clases.
Los patrones de comportamiento de objetos (behavioral object patterns)
utilizan composición de objetos en lugar de herencia. Algunos describen cómo los objetos cooperan entre sí para
realizar una tarea compleja, imposible para sólo uno de ellos.
![Page 6: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/6.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Strategy
VikingStarcraft 2
![Page 7: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/7.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Strategy
avanzarVolando(p:Pos) { activarAnimacion(“volando”); moverA(p,velocidadVuelo);}
avanzarCaminando(p:Pos) { Lista[Pos] ruta; activarAnimacion(“caminando”); ruta = buscarCamino(posActual,p); foreach(paso in ruta){ moverA(paso,velocidadPiso); }}
![Page 8: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/8.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
,
, ,
Patrón Strategy
stratAvance
avanzar(p1,p2:Pos) { activarAnimacion(“volando”); moverA(p,velocidadVuelo);}
avanzar(p1,p2:Pos) { Lista[Pos] ruta; activarAnimacion(“caminando”); ruta = buscarCamino(posActual,p); foreach(paso in ruta){ moverA(paso,velocidadPiso); }}
avanzar(p:Pos) {stratAvance.avanzar(PosActual,p);}
![Page 9: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/9.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Strategy
![Page 10: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/10.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón State
standing kneeling running
if (posicion=1)//standingthen shoot(7); else if (posición=2) //kneelingthen shoot(8)else if (posición=3) //runningthen shoot(2)
![Page 11: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/11.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón State
standing kneeling running down
if (posicion=1)//standingthen saltar()else if (posición=2) //kneelingthen pararse()else if (posición=3) //runningthen saltar()
![Page 12: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/12.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón State
disparar(){ posicion.disparar();}
disparar(){ shoot(2);}
![Page 13: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/13.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón State
up(){ posicion.up();}
up(){ saltar();} up(){
pararse();}
![Page 14: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/14.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón State - UML
interfaz de los estados
estadosconcretos
![Page 15: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/15.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
$
Necesito calcular
cuánto dinero
hay en total en
todos nuestros cajeros
![Page 16: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/16.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
$
1..* cajeros
contarTotal():entero{ total=0; foreach(c in Cajeros){ total = total + c.getDinero() } return total;}
![Page 17: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/17.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
$
1..* cajeros
Necesito calcular el
promedio de errores
de todo nuestro
sistema de cajeros
![Page 18: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/18.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
$
1..* cajeros
contarErrores():entero{ total=0; cant=1; foreach(c in Cajeros){ total = total + c.getErrores(); cant++; } return (total div cant);}
![Page 19: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/19.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
$
1..* cajeros
Necesito apagar
todos los cajeros del
sistema
![Page 20: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/20.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
$
1..* cajeros
shutdown() { foreach(c in Cajeros){
c.anular(); }}
![Page 21: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/21.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
1..* cajeros
operacionX() { foreach(c in Cajeros){
//hacer algo con cada cajero }}
![Page 22: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/22.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
1..* cajeros
operacionX(Algo a) { foreach(c in Cajeros){
//hacer algo con cada cajero }}
![Page 23: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/23.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
1..* cajeros
operacionX(Algo a) { foreach(c in Cajeros){
//hacer algo con cada cajeroc.aceptar(a)
}}
aceptar(Algo a)
aceptar(Algo a) {//permitir que a realice tareas sobre mi
}
![Page 24: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/24.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
1..* cajeros
operacionX(Algo a) { foreach(c in Cajeros){
//hacer algo con cada cajeroc.aceptar(a)
}}
aceptar(Algo a)
aceptar(Algo a) {//permitir que a realice tareas sobre mia.operarCon(this)
}
![Page 25: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/25.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
visitors
interfaz de los
visitados
interfaz de
visitors
visitados
![Page 26: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/26.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
operarConCajeros(Visitor v) { foreach(c in Cajeros){ c.aceptar(v) }}
![Page 27: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/27.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
aceptar(Visitor v) { v.visitarCajero(this)}
visitarCajero(Cajero c){ total = total + c.getDinero();}
![Page 28: Tecnología de Programacióndcm/tdp/downloads/Clases/2019-2do-tdp-Clase-10... · Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur Patrones](https://reader033.vdocuments.site/reader033/viewer/2022041515/5e2af46235dc5d0a912a04fc/html5/thumbnails/28.jpg)
Departamento de Ciencias e Ingeniería de la Computación - Universidad Nacional del Sur
Patrón Visitor
https://www.youtube.com/watch?v=KSEyIXnknoY
PatternCraftVisitor Pattern