Hola mundo en c
de ingeniería informática
Tema 3.2: Patrones
de Asignación de
Responsabilidades
(GRASP)
Departamento de
Lenguajes y Sistemas Informáticos
Joaquín Peña/Carlos Müller
(Teoría)
Índice
♦ Introducción
♦ Experto en Información
♦ Creador
♦ Alta Cohesión
♦ Bajo Acoplamiento
♦ Fabricación Pura
♦ Indirección
♦ Variaciones Protegidas
Índice
♦Introducción
♦ Experto en Información
♦ Creador
♦ Alta Cohesión
♦ Bajo Acoplamiento
♦ Fabricación Pura
♦ Indirección
♦ Variaciones Protegidas
Introducción
♦ Principio (RAE)
♦ Cada una de las primeras proposiciones o verdades
fundamentales por donde se empiezan a estudiar las
ciencias o las artes
♦ Cualquier disciplina con cierto grado de madurez cuenta con
un conjunto de principios
♦ (E )Indique todos los principios relacionados con el DOO
que conozca
♦ (E ) Explique claramente los principios identificados.
♦ ¿Es posible comunicar los principios de manera sistemática?
Introducción
♦ Durante mucho tiempo estos principios se han transmitido
independientemente
♦ El diseño de aplicaciones software es una de las actividades
en las que aún predomina el arte sobre el método.♦ ¿Es posible transmitirlos de una manera homogénea,
compacta que permita su aplicación sistemática?
♦ Según C. Larman Sí. El ha propuesto un conjunto de
principios a los que ha denominado GRASP (General
Responsability Assignment Software Pattern)
Introducción
♦ GRASP (pillar, comprender,…) Larman la eligió
para sugerir la importancia de comprender
estos principios como paso clavepara diseñar
con éxito
♦ GRASP: describen los principios fundamentales
del DOO y la asignación de responsabilidades
expresados como patrones
Introducción
♦ Descripción de un GRASP
♦ Solución
♦ Problema
♦ Ejemplo
♦ Discusión
♦ Contraindicaciones
♦ Beneficios
♦ Patrones relacionados
♦ También conocido como
Índice
♦ Introducción
♦ Experto en Información
♦ Creador
♦ AltaCohesion
♦ Bajo Acoplamiento
♦ Fabricación Pura
♦ Indirección
♦ Variaciones Protegidas
Experto en Información
Modelo del dominio que usaremos en los ejemplos
Experto en Información
1) Problema: ¿un principio general del DOO para la
asignación de responsabilidades a las clases?
♦ Una buena asignación facilita el mantenimiento, la eficiencia, la
comprensión, …
2) Solución: Asigne unaresponsabilidad al experto en
información (la clase que tiene la información necesaria
para llevar a cabo la responsabilidad)
3) Ejemplo:
1) ¿quién debe ser el
responsable de conocer
el total de una venta?
Sale
time
1
Contains
1..*
Sales
LineItem
quantity
*
Described-by
1
Product
Description
description
price
itemID
Experto en Información
♦
La aplicación deeste o cualquier otro GRASP permite
refinar el diseño
t = getTotal
Sale
:Sale
time
...
New method
getTotal()
this notation will imply we
are iterating over all
elements of a collection
Sale
time
...
t = getTotal
: Sale
1 *: st = getSubtotal
lineItems[ i ] :
SalesLineItem
getTotal()
SalesLineItem
quantity
New method
getSubtotal()
Experto enInformación
♦
En este caso se ha aplicado en tres ocasiones
Sale
time
...
t = getTotal
: Sale
1 *: st = getSubtotal
lineItems[ i ] :
SalesLineItem
1.1: p := getPrice()
getTotal()
SalesLineItem
quantity
:Product
Description
getSubtotal()
Product
Description
description
price
itemID
New method
♦
¿Qué otro diseño se podría haber propuesto?
getPrice()Experto en Información
4) Discusión:
♦ Expertos de información parcial
♦ Suele conducir a diseños donde los objetos
se hacen responsables de las mismas
operaciones de los objetos inanimados a los
que representan
♦ Analogía en el mundo real. Normalmente se
otorgan responsabilidades a los individuos
que pueden disponer de toda la información
necesaria para llevar a cabo una tarea
♦...
Regístrate para leer el documento completo.