Lezione 03 - Interface

Post on 04-Jul-2015

408 views 3 download

Transcript of Lezione 03 - Interface

Ingegneria del Software

Introduzione al pattern…

Ingegneria del Software - A.A. 2003/2004

Problema introduttivo (1/4)

• Durante la progettazione di un software amministrativo, si prevede la presenza di una classe AddressPanel che riesce a visualizzare correttamente gli indirizzi di tutte le classi che contengono un indirizzo.– Clienti– Fornitori– Commercialista– Avvocato– Impiegati– …

Come garantire la coerenza nelle firme dei metodi?Es. String getAddress()

Come garantire la coerenza nelle firme dei metodi?Es. String getAddress()

Ingegneria del Software - A.A. 2003/2004

Problema introduttivo (2/4)

Ingegneria del Software - A.A. 2003/2004

Problema introduttivo (3/4)

AddressIF

ReceivingLocation

Ingegneria del Software - A.A. 2003/2004

Problema introduttivo (4/4)

Presentazione del pattern Interface

Ingegneria del Software - A.A. 2003/2004

Il pattern Interface (1/4)

• Nome Interface [GoF95]

• Synopsis Rende una classe che usa dati e dai servizi offerti da istanze di altre classi indipendente da queste ultime. Ciò è possibile perché la classe in questione accede alle istanze attraverso un interfaccia.

• Context Cfr. esempio introduttivo

• Forces Quando si è costretti a richiedere a una o più classi l’implementazione di uno o più metodi

Ingegneria del Software - A.A. 2003/2004

Il pattern Interface (2/4)

Da Context…

… a Solution

• Solution - Gli “attori” delpattern Interface sono:

– Client

– IndirectionIF

– Service

Ingegneria del Software - A.A. 2003/2004

Il pattern Interface (3/4)

• Consequences

- Permette la separazione tra la definizione dei metodie la loro implementazione

- Può rendere il programma più difficile da capire

Ingegneria del Software - A.A. 2003/2004

Il pattern Interface (4/4)

• Implementation Cfr. esempio introduttivo

• Java API usage Esercizio:Riconoscere il pattern Interface in java.io.FilenameFilter

• Code example Cfr. esempio introduttivo

• Related Patterns Spesso usato insieme al Delegation Pattern

Ingegneria del Software - A.A. 2003/2004

Domande?