Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una...

42
PATRONS GRASP Enginyeria del Software II Àlex Garcia Salvi Pi

Transcript of Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una...

Page 1: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

PATRONS GRASP Enginyeria del Software II Àlex Garcia

Salvi Pi

Page 2: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

ÍNDEX

 Què són?  Responsabilitats  Per què serveixen?  Com s’usen?  Tipus de Patrons  Bibliografia

2

Page 3: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

 Què són?  Responsabilitats  Per què serveixen?  Com s’usen?  Tipus de Patrons  Bibliografia

3

Page 4: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 5: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

 Què són?  Responsabilitats  Per què serveixen?  Com s’usen?  Tipus de Patrons  Bibliografia

5

Page 6: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 7: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

RESPONSABILITATS (II)

7

Responsabilitat

Col·laboració

Page 8: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 9: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

 Què són?  Responsabilitats  Per què serveixen?  Com s’usen?  Tipus de Patrons  Bibliografia

9

Page 10: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 11: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 12: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

 Què són?  Responsabilitats  Per què serveixen?  Com s’usen?  Tipus de Patrons  Bibliografia

12

Page 13: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 14: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

 Què són?  Responsabilitats  Per què serveixen?  Com s’usen?  Tipus de Patrons  Bibliografia

14

Page 15: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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.

Page 16: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

TIPUS DE PATRONS

 Expert en Informació  Creador  Alta Cohesió  Baix Acoblament  Controlador  Polimorfisme  Fabricació Pura  Indirecció  Variacions Protegides

16

Page 17: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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ó

Page 18: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 19: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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?  

Page 20: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

TIPUS DE PATRONS CREADOR (II)

20

Factura és una agregació de Linies de

Factura

Page 21: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

TIPUS DE PATRONS CREADOR (III)

21

Factura conté Linies de Factura

Page 22: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

TIPUS DE PATRONS CREADOR (IV)

22

La classe fa servir íntimament una altra classe (std::vector)

Page 23: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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ó?  

Page 24: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 25: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 26: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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?  

Page 27: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 28: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

TIPUS DE PATRONS ALTA COHESIÓ (III)

28

Baixa Cohesió

Alta Cohesió

Page 29: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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?  

Page 30: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 31: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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)?  

Page 32: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

TIPUS DE PATRONS POLIMORFISME (II)

32

El limit és diferent

depenent del tipus de classe

Page 33: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 34: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 35: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 36: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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?  

Page 37: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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ó

Page 38: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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?  

Page 39: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 40: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

 Què són?  Responsabilitats  Per què serveixen?  Com s’usen?  Tipus de Patrons  Bibliografia

40

Page 41: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

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

Page 42: Patrons GRASP - UdGima.udg.edu/~sellares/einf-es2/prsent0910/TranspesGRASP.pdfUML y Patrones. Una introducción al análisis y diseño orientado a objetos y al proceso unificado. Madrid:

PATRONS GRASP Enginyeria del Software II Àlex Garcia

Salvi Pi

Gràcies