SlideShare a Scribd company logo
1 of 12
Download to read 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

More Related Content

Similar to 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
 

Similar to 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
 

Recently uploaded

Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaPierLuigi Albini
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaRafael Figueredo
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxOrianaOcchino
 
Corso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativoCorso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativovaleriodinoia35
 
lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldivaleriodinoia35
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieVincenzoPantalena1
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiorevaleriodinoia35
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaStefano Lariccia
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaStefano Lariccia
 

Recently uploaded (9)

Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza cultura
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptx
 
Corso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativoCorso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativo
 
lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldi
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medie
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiore
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
 

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