patrons grasp - udgima.udg.edu/~sellares/einf-es2/prsent0910/transpesgrasp.pdfuml y patrones. una...
Post on 31-Jul-2020
18 Views
Preview:
TRANSCRIPT
PATRONS GRASP Enginyeria del Software II Àlex Garcia
Salvi Pi
ÍNDEX
Què són? Responsabilitats Per què serveixen? Com s’usen? Tipus de Patrons Bibliografia
2
Què són? Responsabilitats Per què serveixen? Com s’usen? Tipus de Patrons Bibliografia
3
QUÈ SÓN?
Acrònim de General Responsibility
Assignment Software Patterns
Regles generals per assignar responsabilitats
Conjunt de bones pràctiques i consells
Filosofia de Treball
Basat en experiència acumulada 4
Què són? Responsabilitats Per què serveixen? Com s’usen? Tipus de Patrons Bibliografia
5
RESPONSABILITATS
Base dels GRASP
Acció i/o obligacions d’un determinat objecte
Preguntes bàsiques:
De què és responsable un objecte?
Fins on arriba la seva responsabilitat?
Amb qui he de col·laborar?
Relacionat amb els mètodes dels objectes 6
RESPONSABILITATS (II)
7
Responsabilitat
Col·laboració
RESPONSABILITATS (III)
Dos tipus bàsics de responsabilitats:
Conèixer
Dades privades
Objectes relacionats
Coses calculables o derivables
Fer
Fer quelcom ell mateix
Iniciar o coordinar quelcom 8
Què són? Responsabilitats Per què serveixen? Com s’usen? Tipus de Patrons Bibliografia
9
PER QUÈ SERVEIXEN?
Dissenyar correctament les classes
Identifiquen solucions recurrents a
problemes coneguts
Assignar responsabilitats a les classes
Deriven en la creació de mètodes dels objectes
10
PER QUÈ SERVEIXEN? (II)
11
la responsabilitat de prestar un video recau
sobre la classe WinPrestamos
la classe col·labora/reparteix
responsabilitats amb altres classes
Què són? Responsabilitats Per què serveixen? Com s’usen? Tipus de Patrons Bibliografia
12
COM S’USEN?
Seleccionar un Diagrama de Seqüència
D’un cas d’ús
Seleccionar el primer missatge, que indica una
Responsabilitat del Sistema.
Identificar la classe
Seleccionar el missatge següent.
Revisar les assignacions
al assignar una nova Responsabilitat, algunes regles ens
poden haver canviat. 13
Què són? Responsabilitats Per què serveixen? Com s’usen? Tipus de Patrons Bibliografia
14
TIPUS DE PATRONS ESTRUCTURA
15
Nom del patró ...
Solució ...
Problema que resol
...
Descripcions de problemes específics acompanyades de les seves solucions i identificats
amb un nom.
TIPUS DE PATRONS
Expert en Informació Creador Alta Cohesió Baix Acoblament Controlador Polimorfisme Fabricació Pura Indirecció Variacions Protegides
16
TIPUS DE PATRONS EXPERT EN INFORMACIÓ
17
Nom del patró Expert en Informació (o Expert)
Solució Assignar una responsabilitat a la classe experta en aquesta informació.
Problema que resol
A quina classe d’objectes li hem d’assignar una responsabilitat?
Propietats: Classes cohesionades Baix Acoblament Encapsulació
TIPUS DE PATRONS EXPERT EN INFORMACIÓ
18
Responsabilitat de conèixer el Total de la
Factura
Responsabilitat de conèixer el SubTotal de la Linia de Factura
TIPUS DE PATRONS CREADOR
19
Nom del patró Creador
Solució Assignar a la classe B la responsabilitat de crear una instància de la classe A si compleix un o més dels següents requisits: • la classe B "agrega" objectes de Epus A • B conté objectes de Epus A • B "enregistra" instàncies de Epus A • B fa servir "ínEmament" objectes de Epus A • B té la informació d’inicialització d’un objecte
de Epus A quan aquest és creat.
Problema que resol Qui és el responsable de crear una instància d’una classe?
TIPUS DE PATRONS CREADOR (II)
20
Factura és una agregació de Linies de
Factura
TIPUS DE PATRONS CREADOR (III)
21
Factura conté Linies de Factura
TIPUS DE PATRONS CREADOR (IV)
22
La classe fa servir íntimament una altra classe (std::vector)
TIPUS DE PATRONS BAIX ACOBLAMENT
23
Nom del patró Baix Acoblament
Solució Assignar una responsabilitat de manera que l’acoblament sigui baix.
Problema que resol C om a c o n s e g u i r a b a i x a r l a dependència, disminuir l‘impacte dels canvis i incrementar la reu?lització?
TIPUS DE PATRONS BAIX ACOBLAMENT (II)
Acoblament
Mesura el grau de connexió entre classes
Poca afectació dels canvis en altres classes si l’acoblament és baix
Derivar d’una classe provoca alt acoblament
Reutilitzables si l’acoblament és baix
24
TIPUS DE PATRONS BAIX ACOBLAMENT (III)
25
1: crearPagament()
:Registre p:Pagament
:Venda
pagar()
2: addPagament(p)
1.1: crearPagament()
1: pagar() :Registre :Venda
:Pagament
pagar()
Acoblament alt: Registre molt connectat
amb Pagament
Acoblament baix: Registre no connectat
amb Pagament
TIPUS DE PATRONS ALTA COHESIÓ
26
Nom del patró Alta Cohesió
Solució Assignar una responsabilitat de manera que la cohesió es manEngui alta.
Problema que resol
C om a co n s e g u i r q u e l a complexitat es manEngui gesEonable?
TIPUS DE PATRONS ALTA COHESIÓ (II)
Cohesió Mesura la intensitat amb que es relacionen les
responsabilitats.
Problemes si no tenim Alta Cohesió: Difícils d’entendre (funcions molt variades) Difícil de reutilitzar (molt lligades a altres classes) Difícil manteniment Molta afectació als canvis d’altres classes
Genera classes “autocontingudes” 27
TIPUS DE PATRONS ALTA COHESIÓ (III)
28
Baixa Cohesió
Alta Cohesió
TIPUS DE PATRONS CONTROLADOR
29
Nom del patró Controlador
Solució Assignar la responsabilitat de gesEonar els esdeveniments del sistema a una classe que represenE: • tot el sistema (facade controller). • tots els esdeveniments d’un cas d’ús
parEcular del sistema.
Problema que resol Qui és el responsable de gesEonar un esdeveniment del sistema?
TIPUS DE PATRONS CONTROLADOR (II)
Esdeveniment del sistema Senyal que rebem quan es detecta una entrada:
Teclat Ratolí Rellotge ...
Globals (tot el sistema) o Locals (associats a un sol cas d’ús)
Coordina i controla l’activitat Beneficis:
Separa interfície de la gestió dels esdeveniments Facilita la reutilització Permet controlar el flux de missatges 30
TIPUS DE PATRONS POLIMORFISME
31
Nom del patró Polimorfisme Solució Sempre que s’hagi d’implementar una
responsabilitat que depengui del ?pus o classe, s’ha d’usar polimorfisme. Assignar la responsabilitat pel comportament (usant operacions polimòrfiques) als Epus en els que aquest varia.
Problema que resol Com gesEonar alterna?ves basades en el ?pus de les dades? Com crear components soUware connectables (pluggable)?
TIPUS DE PATRONS POLIMORFISME (II)
32
El limit és diferent
depenent del tipus de classe
TIPUS DE PATRONS POLIMORFISME (III)
Aplicar polimorfisme quan variï el comportament a causa del tipus de dades.
Avantatges: Facilitat d’afegir noves extensions Es poden afegir sense canviar la interfície
33
TIPUS DE PATRONS FABRICACIÓ PURA
Nom del patró Fabricació Pura Solució Assignar un conjunt cohesionat de
responsabilitats a una classe ar?fic ia l (és inventada, no representa cap concepte del domini del problema i està dissenyada exclusivament per a aquesta finalitat).
P ro b l ema q ue resol
Què cal fer quan les solucions de disseny trobades comprometen la Alta Cohesió i el Baix Acoblament? 34
TIPUS DE PATRONS FABRICACIÓ PURA (II)
35
Expert i Alta Cohesió ens dirien
que han de contenir els seus propis
mètodes per accedir a la BDD
Val més inventar-se
una classe que mantingui
Baix Acoblament i Alta Cohesió
BDD
BDD
TIPUS DE PATRONS INDIRECCIÓ
36
Nom del patró Indirecció Solució Assignar la responsabilitat a un
objecte intermedi que interactuï entre altres components o serveis de manera que no s’acoblin directament.
P r o b l em a q u e resol
On assignar la responsabilitat per evitar l’acoblament directe entre dos elements? Com desacoblar els objectes de manera que es suporE Baix Acoblament i el potencial de reuElització conEnuï alt?
TIPUS DE PATRONS INDIRECCIÓ (II)
Concepte semblant al de Fabricació Pura
Interposem un nou objecte entre dos objectes: Baixa l’acoblament entre els dos objectes
primers Augmenta la reutilització dels primers
37
A B indirecció
TIPUS DE PATRONS VARIACIONS PROTEGIDES
38
Nom del patró Variacions Protegides Solució IdenEficar els punts on hi ha
previstes variacions o poden ser inestables . L lavors ass ignar responsabilitats per crear una inter4cie al voltant d’elles.
P ro b l ema q ue resol
Com dissenyar objectes de manera que les variacions o inestabilitats en aquests elements Enguin poc impacte en els altres elements?
TIPUS DE PATRONS VARIACIONS PROTEGIDES (II)
Protecció contra els canvis o variacions On pugui haver-hi problemes o variacions hi
posarem una interfície Fàcil d’estendre
39
A
B
interfície
C
Què són? Responsabilitats Per què serveixen? Com s’usen? Tipus de Patrons Bibliografia
40
BIBLIOGRAFIA
Larman, C. (2003). UML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid: Pearson Educación, S.A.
Sellarès, T. (2006). Web Enginyeria del Software I. Consultat el 07 / 03 / 2010, a Presentació Patrons GRASP: http://ima.udg.edu/Docencia/06-07/3105200727/index.html
Wikipedia. Consultat el 07 / 03 / 2010, a http://en.wikipedia.org/wiki/GRASP_%28Object_Oriented_Design%29
41
PATRONS GRASP Enginyeria del Software II Àlex Garcia
Salvi Pi
Gràcies
top related