Ingegneria del Software
Introduzione al pattern…
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?
   Come garantire la coerenza nelle firme dei metodi?
                Es. String getAddress()
                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)




    Ingegneria del Software - A.A. 2003/2004
Presentazione del pattern
        Interface
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)


                                    • Solution - Gli “attori” del
                                      pattern Interface sono:
                                          – Client
                                          – IndirectionIF

Da Context…                               – Service




   … a Solution




           Ingegneria del Software - A.A. 2003/2004
Il pattern Interface (3/4)



•   Consequences

       - Permette la separazione tra la definizione dei metodi
         e 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?




Ingegneria del Software - A.A. 2003/2004

Lezione 03 - Interface

  • 1.
  • 2.
  • 3.
    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? Come garantire la coerenza nelle firme dei metodi? Es. String getAddress() Es. String getAddress() Ingegneria del Software - A.A. 2003/2004
  • 4.
    Problema introduttivo (2/4) Ingegneria del Software - A.A. 2003/2004
  • 5.
    Problema introduttivo (3/4) AddressIF ReceivingLocation Ingegneria del Software - A.A. 2003/2004
  • 6.
    Problema introduttivo (4/4) Ingegneria del Software - A.A. 2003/2004
  • 7.
  • 8.
    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
  • 9.
    Il pattern Interface(2/4) • Solution - Gli “attori” del pattern Interface sono: – Client – IndirectionIF Da Context… – Service … a Solution Ingegneria del Software - A.A. 2003/2004
  • 10.
    Il pattern Interface(3/4) • Consequences - Permette la separazione tra la definizione dei metodi e la loro implementazione - Può rendere il programma più difficile da capire Ingegneria del Software - A.A. 2003/2004
  • 11.
    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
  • 12.