SlideShare uma empresa Scribd logo
1 de 12
Baixar para ler offline
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

Mais conteúdo relacionado

Semelhante a Lezione 03 - Interface

Lezione 06 - Façade
Lezione 06 - FaçadeLezione 06 - Façade
Lezione 06 - FaçadeMarco Bianchi
 
Lezione 04 - Factory method
Lezione 04 - Factory methodLezione 04 - Factory method
Lezione 04 - Factory methodMarco Bianchi
 
Lezione 00 - Introduzione ai Design Patterns
Lezione 00 - Introduzione ai Design PatternsLezione 00 - Introduzione ai Design Patterns
Lezione 00 - Introduzione ai Design PatternsMarco Bianchi
 
Lezione 11 - Visitor
Lezione 11 - VisitorLezione 11 - Visitor
Lezione 11 - VisitorMarco Bianchi
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 
Framework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni WebFramework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni WebDavide Bellettini
 
Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#Commit University
 
Design patterns - parte 1
Design patterns - parte 1Design patterns - parte 1
Design patterns - parte 1Fabio Armani
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 
Lezione 09 - Abstract Factory
Lezione 09 - Abstract FactoryLezione 09 - Abstract Factory
Lezione 09 - Abstract FactoryMarco Bianchi
 
Sviluppare applicazioni per la piattaforma java EE - Scheda corso LEN
Sviluppare applicazioni per la piattaforma java EE - Scheda corso LENSviluppare applicazioni per la piattaforma java EE - Scheda corso LEN
Sviluppare applicazioni per la piattaforma java EE - Scheda corso LENLEN Learning Education Network
 
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su ARSviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su ARGiacomo Giovanni Delfini
 
Sviluppo di una piattaforma Client/Server per attività didattiche basate su R...
Sviluppo di una piattaforma Client/Server per attività didattiche basate su R...Sviluppo di una piattaforma Client/Server per attività didattiche basate su R...
Sviluppo di una piattaforma Client/Server per attività didattiche basate su R...Giacomo Delfini
 
FFmpeg - lo strumento multimediale universale
FFmpeg - lo strumento multimediale universaleFFmpeg - lo strumento multimediale universale
FFmpeg - lo strumento multimediale universaleStefano Sabatini
 
Un'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseUn'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseAlberto Lagna
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGiacomoZorzin
 

Semelhante a Lezione 03 - Interface (20)

Lezione 06 - Façade
Lezione 06 - FaçadeLezione 06 - Façade
Lezione 06 - Façade
 
Lezione 04 - Factory method
Lezione 04 - Factory methodLezione 04 - Factory method
Lezione 04 - Factory method
 
Lezione 00 - Introduzione ai Design Patterns
Lezione 00 - Introduzione ai Design PatternsLezione 00 - Introduzione ai Design Patterns
Lezione 00 - Introduzione ai Design Patterns
 
Lezione 11 - Bridge
Lezione 11 - BridgeLezione 11 - Bridge
Lezione 11 - Bridge
 
Lezione 11 - Visitor
Lezione 11 - VisitorLezione 11 - Visitor
Lezione 11 - Visitor
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 
Tesi di Laurea
Tesi di LaureaTesi di Laurea
Tesi di Laurea
 
Framework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni WebFramework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni Web
 
Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#
 
Design patterns - parte 1
Design patterns - parte 1Design patterns - parte 1
Design patterns - parte 1
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 
Lezione 09 - Abstract Factory
Lezione 09 - Abstract FactoryLezione 09 - Abstract Factory
Lezione 09 - Abstract Factory
 
Sviluppare applicazioni per la piattaforma java EE - Scheda corso LEN
Sviluppare applicazioni per la piattaforma java EE - Scheda corso LENSviluppare applicazioni per la piattaforma java EE - Scheda corso LEN
Sviluppare applicazioni per la piattaforma java EE - Scheda corso LEN
 
Catalogo corsi Emerasoft 2013 - 2014
Catalogo corsi Emerasoft 2013 - 2014Catalogo corsi Emerasoft 2013 - 2014
Catalogo corsi Emerasoft 2013 - 2014
 
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su ARSviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
 
Sviluppo di una piattaforma Client/Server per attività didattiche basate su R...
Sviluppo di una piattaforma Client/Server per attività didattiche basate su R...Sviluppo di una piattaforma Client/Server per attività didattiche basate su R...
Sviluppo di una piattaforma Client/Server per attività didattiche basate su R...
 
FFmpeg - lo strumento multimediale universale
FFmpeg - lo strumento multimediale universaleFFmpeg - lo strumento multimediale universale
FFmpeg - lo strumento multimediale universale
 
Un'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseUn'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterprise
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptx
 

Lezione 03 - Interface

  • 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
  • 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