3
Lo más leído
4
Lo más leído
Patrones GRASP
Mariano Sánchez
Patrones GRASP
• Acrónimo de General Responsibility
Assignment Software Patterns.
• Describen los principios fundamentales
para asignar responsabilidades a los
objetos.
El patrón “Experto”
• Problema: ¿en qué debemos basarnos para
asignar responsabilidades a las clases?
• Solución: asignar la responsabilidad al
“experto en la información”
El experto en la información es la clase que
tiene la información necesaria para cumplir
la responsabilidad.
El patrón “Experto”
• Los objetos deben hacer las cosas relacionadas
con la información que poseen.
El patrón “Creador”
• Problema: ¿quién es el responsable de crear
una nueva instancia de una clase?
• Solución: B es responsable de crear una
instancia de A si:
– B agrega objetos de A
– B contiene referencias a objetos de A
– B almacena instancias de A
– B utiliza estrechamente objetos de A
– B tiene la información de inicialización que se
necesita para crear un objeto de clase A
El patrón “Creador”
El patrón “Creador”
El patrón “Bajo acoplamiento”
• Problema: ¿cómo mantener un bajo
acoplamiento para lograr, entre otras
cosas, alta reutilización?
Nota: el acoplamiento mide el grado en que
una clase está conectada a otra, tiene
conocimiento de otra o, de alguna manera,
depende de otra.
El patrón “Bajo acoplamiento”
• Situaciones de acoplamiento:
– X tiene un miembro o declara una variable de
clase Y
– X tiene un método que toma como parámetro
un objeto de clase Y
– X es un descendiente de Y
El patrón “Bajo acoplamiento”
• Desventajas del acoplamiento:
– Los cambios en una clase pueden implicar
cambios en las clases relacionadas.
– Dificultad de comprensión.
– Dificultad de reutilización.
– ¿Pérdida de rendimiento?
El patrón “Bajo acoplamiento”
• Solución: asignar la responsabilidad de
manera que el acoplamiento permanezca
bajo.
El patrón “Bajo acoplamiento” (y V)
• Consideraciones:
– El bajo acoplamiento permite crear clases más
independientes, más reutilizables, lo que
implica mayor productividad
– El acoplamiento puede no ser importante si la
reutilización no está en nuestros objetivos
– La especialización es una forma fuerte de
acoplar clases
– El acoplamiento bajísimo produce diseños muy
pobres, objetos sobrecargados, complejos, etc.
El patrón “Bajo acoplamiento” (y V)
El patrón “Alta cohesión”
• Problema: ¿cómo mantener la complejidad de
una clase en niveles manejables?
Nota: la cohesión mide el grado en que están
relacionadas las responsabilidades de una
clase.
El patrón “Alta cohesión”
• Desventajas de una clase con baja cohesión:
– Difícil de comprender
– Difícil de reutilizar
– Difícil de mantener
– Delicada, se afecta mucho por los cambios
El patrón “Alta cohesión”
• Solución: asignar responsabilidades de
manera que la cohesión se mantenga alta.
El patrón “Controlador”
• Problema: ¿quién debería ser responsable
de manejar un evento del sistema?
• Un evento del sistema es un evento
generado por un actor externo.
El patrón “Controlador”
• Solución: asignar la responsabilidad al
“controlador”, que será una clase que:
– Representa al sistema completo, a la
organización... (controlador “fachada”)
– Representa una parte activa del mundo real que
desencadena de tal evento (controlador de rol)
– Representa un manejador artificial de eventos
(controlador de CdU)
El patrón “Controlador”
• Sugerencias:
– Puede utilizarse un controlador por cada CdU, de
manera que se encargue de controlar el estado
del CdU, la secuencia de eventos, etc.
– Una vez que el controlador recibe un evento,
puede delegar sobre otros objetos para no verse
sobrecargado (producirá, además, baja cohesión).
El patrón “Controlador”
pulsa
:AppletCliente
buttonEnviarClicked
:Cliente
Enviar(...) Evento del sistema
El patrón “Comando” (no es Grasp)
• Se utiliza para asignar responsabilidades de
manejo de eventos en sistemas que
procesan muchos tipos de eventos.
Comando
Ejecutar()
Comando1
Ejecutar()
Comando2
Ejecutar()
ComandoN
Ejecutar()
Preguntas?
Gracias!!

Más contenido relacionado

PPT
Patrones GRASP de tipo de bajo acoplamiento
PPT
Patrones para asignar responsabilidades. grasp
PPTX
Metodologias web
PDF
Diagrama de clases
PPTX
Tarjetas CRC
PPTX
Metodologia incremental
PPTX
Diagrama de Componentes
Patrones GRASP de tipo de bajo acoplamiento
Patrones para asignar responsabilidades. grasp
Metodologias web
Diagrama de clases
Tarjetas CRC
Metodologia incremental
Diagrama de Componentes

La actualidad más candente (20)

PPT
Uml presentacion
PDF
mapa mental sobre ingeniería de requisitos.pdf
PDF
Cuadro comparativo entre moprosoft y cmmi
PDF
Introduction to Axon FrameWork with CQRS pattern
PPTX
Modelo cascada
PPTX
2 1 1_diseño arquitectónico
PPT
PROCESOS DE CALIDAD DE SOFTWARE
PPTX
Diagrama de clases
PDF
Diagrama de Casos de uso
PDF
Diagramas De Despligue Uml
PDF
Identificar el negocio de cliente
PPTX
tecnicas de revisión del software
PPT
Unidad 9 Patrones De DiseñO
PPTX
Modelo Entidad - Relacion
DOCX
Requisitos funcionales y no funcionales
PPTX
Metodologia Incremental
PPTX
Motor De Bases De Datos Oracle
PPT
Diagrama de contexto
DOCX
Plan de Pruebas
PPT
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
Uml presentacion
mapa mental sobre ingeniería de requisitos.pdf
Cuadro comparativo entre moprosoft y cmmi
Introduction to Axon FrameWork with CQRS pattern
Modelo cascada
2 1 1_diseño arquitectónico
PROCESOS DE CALIDAD DE SOFTWARE
Diagrama de clases
Diagrama de Casos de uso
Diagramas De Despligue Uml
Identificar el negocio de cliente
tecnicas de revisión del software
Unidad 9 Patrones De DiseñO
Modelo Entidad - Relacion
Requisitos funcionales y no funcionales
Metodologia Incremental
Motor De Bases De Datos Oracle
Diagrama de contexto
Plan de Pruebas
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
Publicidad

Destacado (18)

PPTX
Dental technology as a platform
DOCX
Katrina's Resume
PPTX
La industria de la animación en España. Ponente: José Antonio Navarrete
PPTX
Semana de mayo
PPTX
6 animales de la sabana
DOC
Actividad1 word
ODT
Resume1
PPSX
Uso del diccionario
PDF
Tema 1 procesos psicológicos basicos
PPTX
Economics of digital goods
PPTX
PPTX
Tecnologías analógicas química franco heriberto
PPTX
Aparato digestivo
PDF
Janet Stephenson "Energy Cultures as an integrative framework."
PPT
Proyecto_Midikedia_ConectarIgualdad2.0
Dental technology as a platform
Katrina's Resume
La industria de la animación en España. Ponente: José Antonio Navarrete
Semana de mayo
6 animales de la sabana
Actividad1 word
Resume1
Uso del diccionario
Tema 1 procesos psicológicos basicos
Economics of digital goods
Tecnologías analógicas química franco heriberto
Aparato digestivo
Janet Stephenson "Energy Cultures as an integrative framework."
Proyecto_Midikedia_ConectarIgualdad2.0
Publicidad

Similar a Patrones Grasp (20)

PDF
grasp.pdfgbvnthyjyrtjytrjnmtmtrnhryhnryjnyrjjy
PPTX
Patrones fundamentales es el grasp (patrones de
PPT
Gonzalorojas 12 Uml, Patrones De Diseno
PPT
Uso de-patrones-de-arquitectura-capitulo-4
PDF
Diseño de patrones
PPTX
Diagramas de interaccion - Cun Monteria
PPSX
Introducción a los patrones de diseño
PPT
Patrones de diseño - Henry Vallejo
PDF
Patrones de diseño
PPTX
Patrones de diseño
PPTX
Patronesdediseo 160927143256 (1)
PPTX
Patrones de diseño
PDF
Construcción de Software (Patrones)
PPTX
Patrones de-diseño-mañana
DOCX
Patrones de diseño
PDF
Patrones de diseño de software
PPT
Clase 4 - Programación IV - BSI1100
PDF
Patrones de diseño I
PPTX
Patrones de diseño
grasp.pdfgbvnthyjyrtjytrjnmtmtrnhryhnryjnyrjjy
Patrones fundamentales es el grasp (patrones de
Gonzalorojas 12 Uml, Patrones De Diseno
Uso de-patrones-de-arquitectura-capitulo-4
Diseño de patrones
Diagramas de interaccion - Cun Monteria
Introducción a los patrones de diseño
Patrones de diseño - Henry Vallejo
Patrones de diseño
Patrones de diseño
Patronesdediseo 160927143256 (1)
Patrones de diseño
Construcción de Software (Patrones)
Patrones de-diseño-mañana
Patrones de diseño
Patrones de diseño de software
Clase 4 - Programación IV - BSI1100
Patrones de diseño I
Patrones de diseño

Más de Mariano Sánchez (18)

PPTX
.NET Core
PPTX
ASP.NET Core 1.0
PPTX
Introducción a SignalR
PPTX
Visual Studio LightSwitch
PPTX
HTML5 + Asp.NET
PPTX
Hey Cortana!
PPTX
Developing Universal Apps for Windows
PPTX
Introducing the Windows Phone 8.1 App Development Platform
PPTX
Visual Studio Online
PPTX
Patrones de Diseño
PPTX
Introducción a DDD
PPTX
Conociendo TypeScript
PPTX
C# 6 - Que hay de nuevo?
PPTX
Universal Windows Platform Programando para todos y todas
PPTX
Code Smells
PPTX
Introducción a LINQ
PPTX
Refactoring - Mejorando el diseño del código existente
PPTX
Patrones de Diseño
.NET Core
ASP.NET Core 1.0
Introducción a SignalR
Visual Studio LightSwitch
HTML5 + Asp.NET
Hey Cortana!
Developing Universal Apps for Windows
Introducing the Windows Phone 8.1 App Development Platform
Visual Studio Online
Patrones de Diseño
Introducción a DDD
Conociendo TypeScript
C# 6 - Que hay de nuevo?
Universal Windows Platform Programando para todos y todas
Code Smells
Introducción a LINQ
Refactoring - Mejorando el diseño del código existente
Patrones de Diseño

Último (9)

PPTX
presentación de introducción a las metodologías agiles .pptx
PPTX
Competencias digitales.PPT.SOTFWAREPTT.0
PDF
Manual de mantenimiento de soporte y mantenimiento
PPTX
Programación Orientada a Objetos POO.pptx
PDF
Presentacion de compiladores e interpretes
PPTX
hojas_de_calculo_aplicado para microsoft office
PDF
Manual de mantenimiento de soporte y mantenimiento
PDF
DNS_SERVIDORES PARA ASER PRACTICAS EN REDES
PDF
Estudio de factibilidad para requisiciones de soporte técnico utilizando OSTi...
presentación de introducción a las metodologías agiles .pptx
Competencias digitales.PPT.SOTFWAREPTT.0
Manual de mantenimiento de soporte y mantenimiento
Programación Orientada a Objetos POO.pptx
Presentacion de compiladores e interpretes
hojas_de_calculo_aplicado para microsoft office
Manual de mantenimiento de soporte y mantenimiento
DNS_SERVIDORES PARA ASER PRACTICAS EN REDES
Estudio de factibilidad para requisiciones de soporte técnico utilizando OSTi...

Patrones Grasp

  • 2. Patrones GRASP • Acrónimo de General Responsibility Assignment Software Patterns. • Describen los principios fundamentales para asignar responsabilidades a los objetos.
  • 3. El patrón “Experto” • Problema: ¿en qué debemos basarnos para asignar responsabilidades a las clases? • Solución: asignar la responsabilidad al “experto en la información” El experto en la información es la clase que tiene la información necesaria para cumplir la responsabilidad.
  • 4. El patrón “Experto” • Los objetos deben hacer las cosas relacionadas con la información que poseen.
  • 5. El patrón “Creador” • Problema: ¿quién es el responsable de crear una nueva instancia de una clase? • Solución: B es responsable de crear una instancia de A si: – B agrega objetos de A – B contiene referencias a objetos de A – B almacena instancias de A – B utiliza estrechamente objetos de A – B tiene la información de inicialización que se necesita para crear un objeto de clase A
  • 8. El patrón “Bajo acoplamiento” • Problema: ¿cómo mantener un bajo acoplamiento para lograr, entre otras cosas, alta reutilización? Nota: el acoplamiento mide el grado en que una clase está conectada a otra, tiene conocimiento de otra o, de alguna manera, depende de otra.
  • 9. El patrón “Bajo acoplamiento” • Situaciones de acoplamiento: – X tiene un miembro o declara una variable de clase Y – X tiene un método que toma como parámetro un objeto de clase Y – X es un descendiente de Y
  • 10. El patrón “Bajo acoplamiento” • Desventajas del acoplamiento: – Los cambios en una clase pueden implicar cambios en las clases relacionadas. – Dificultad de comprensión. – Dificultad de reutilización. – ¿Pérdida de rendimiento?
  • 11. El patrón “Bajo acoplamiento” • Solución: asignar la responsabilidad de manera que el acoplamiento permanezca bajo.
  • 12. El patrón “Bajo acoplamiento” (y V) • Consideraciones: – El bajo acoplamiento permite crear clases más independientes, más reutilizables, lo que implica mayor productividad – El acoplamiento puede no ser importante si la reutilización no está en nuestros objetivos – La especialización es una forma fuerte de acoplar clases – El acoplamiento bajísimo produce diseños muy pobres, objetos sobrecargados, complejos, etc.
  • 13. El patrón “Bajo acoplamiento” (y V)
  • 14. El patrón “Alta cohesión” • Problema: ¿cómo mantener la complejidad de una clase en niveles manejables? Nota: la cohesión mide el grado en que están relacionadas las responsabilidades de una clase.
  • 15. El patrón “Alta cohesión” • Desventajas de una clase con baja cohesión: – Difícil de comprender – Difícil de reutilizar – Difícil de mantener – Delicada, se afecta mucho por los cambios
  • 16. El patrón “Alta cohesión” • Solución: asignar responsabilidades de manera que la cohesión se mantenga alta.
  • 17. El patrón “Controlador” • Problema: ¿quién debería ser responsable de manejar un evento del sistema? • Un evento del sistema es un evento generado por un actor externo.
  • 18. El patrón “Controlador” • Solución: asignar la responsabilidad al “controlador”, que será una clase que: – Representa al sistema completo, a la organización... (controlador “fachada”) – Representa una parte activa del mundo real que desencadena de tal evento (controlador de rol) – Representa un manejador artificial de eventos (controlador de CdU)
  • 19. El patrón “Controlador” • Sugerencias: – Puede utilizarse un controlador por cada CdU, de manera que se encargue de controlar el estado del CdU, la secuencia de eventos, etc. – Una vez que el controlador recibe un evento, puede delegar sobre otros objetos para no verse sobrecargado (producirá, además, baja cohesión).
  • 21. El patrón “Comando” (no es Grasp) • Se utiliza para asignar responsabilidades de manejo de eventos en sistemas que procesan muchos tipos de eventos. Comando Ejecutar() Comando1 Ejecutar() Comando2 Ejecutar() ComandoN Ejecutar()