SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
Ingegneria del Software
Introduzione al pattern…
Problema introduttivo (1/3)




Cosa accade alle persone che “giocano più ruoli”?
Cosa accade alle persone che “giocano più ruoli”?



            Ingegneria del Software - A.A. 2003/2004
Problema introduttivo (2/3)




L’ereditarietà non risolve il problema!
L’ereditarietà non risolve il problema!


       Ingegneria del Software - A.A. 2003/2004
Pattern
Delegation
Il pattern Delegation (1/8)


•   Nome       Delegation (When not to use Inheritance)
               [Grand98]

•   Synopsis   La delega è un modo per “estendere” e riusare le
               funzionalità di una classe senza ricorrere
               all’ereditarietà. La nuova classe simula
               l’ereditarietà utilizzando un’istanza della classe
               originale per fornire le funzionalità originali. A
               queste ne aggiunge di nuove.




                     Ingegneria del Software - A.A. 2003/2004
Il pattern Delegation (2/8)



• Context   - Delegation è più generale dell’ereditarietà

            - L’ereditarietà è utile per relazioni del tipo “is-a-
              kind-of” perchè sono intrinsecamente statiche

            - In relazioni tra classi più dinamiche, tipo “is-a-
              role-played-by”, l’ereditarietà crea problemi

            - Esempio:
                  Sistema per la prenotazione di biglietti
                  aerei che prevede passeggeri, personale di
                  linea, agente di vendita biglietti aerei, ecc.



                  Ingegneria del Software - A.A. 2003/2004
Il pattern Delegation (3/8)




    Ingegneria del Software - A.A. 2003/2004
Il pattern Delegation (4/8)


•   Forces
    – L’ereditarietà è una relazione statica che non cambia nel
      tempo
    – Se una classe tenta di nascondere un metodo o una
      variabile ereditata da una superclasse, allora quella
      superclasse non dovrebbe essere estesa
    – Dichiarare un classe come sottoclasse di una classe utility
      può essere rischioso
        • Estendendo una classe come Vector, quest’ultima potrebbe
          cambiare nel tempo perdendo la compatibilità
        • I client potrebbero presupporre la superclasse
          (es. cast per passaggio di parametri)
        • I client potrebbero richiamare i metodi pubblici della
          superclasse



                      Ingegneria del Software - A.A. 2003/2004
Il pattern Delegation (5/8)




                                    • Solution - Gli “attori” del
                                      pattern Delegation sono:
Da Context…
                                          – Delegator
                                          – Delegate
         … a Solution




          Ingegneria del Software - A.A. 2003/2004
Il pattern Delegation (6/8)


•   Consequences
                - Vantaggi
                         -Aggira i problemi dell’ereditarietà
                         -Facile cambiare il comportamento di un
                          oggetto a run-time
                - Svantaggi
                         - Meno strutturata rispetto all’ereditarietà:
                           relazioni tra le classi meno ovvie
•   Implementation
                - Implementazione banale
•   Java API usage
                - Le API Java presentano molti esempi di delegation
                  pattern.
                - Alla base del modello ad eventi Java.



                       Ingegneria del Software - A.A. 2003/2004
Il pattern Delegation (7/8)

•   Code example




     FlightSegment
                                     FlightSegment non estende la
                                     classe LuggageCompartment!




                     Ingegneria del Software - A.A. 2003/2004
Il pattern Delegation (8/8)



   LuggageCompartment           LuggageCompartment
                                non estende Vector!




• Related Patterns        - Molti pattern usano il principio di delega
                            Es. Decorator, Proxy, Observer.


                        Ingegneria del Software - A.A. 2003/2004
Domande?




Ingegneria del Software - A.A. 2003/2004

Contenu connexe

En vedette

Ppt Newtons Second Law
Ppt Newtons Second LawPpt Newtons Second Law
Ppt Newtons Second Lawffiala
 
Newton's second law of motion
Newton's second law of motionNewton's second law of motion
Newton's second law of motionAncy Simon
 
Forces & Changes in Motion
Forces & Changes in MotionForces & Changes in Motion
Forces & Changes in MotionStephen Taylor
 
Chapter 6 Work Energy Power
Chapter 6 Work Energy PowerChapter 6 Work Energy Power
Chapter 6 Work Energy Powermoths
 
6161103 3.4 three dimensional force systems
6161103 3.4 three dimensional force systems6161103 3.4 three dimensional force systems
6161103 3.4 three dimensional force systemsetcenterrbru
 
Newtons Laws Of Motion
Newtons Laws Of MotionNewtons Laws Of Motion
Newtons Laws Of Motionwilsone
 
Work and Energy
Work and EnergyWork and Energy
Work and Energymeenng
 
Work, energy & power physics
Work, energy & power physics Work, energy & power physics
Work, energy & power physics sashrilisdi
 
Newton’s Laws of Motion with Real Life Examples
Newton’s Laws of Motion with Real Life ExamplesNewton’s Laws of Motion with Real Life Examples
Newton’s Laws of Motion with Real Life Examplesicheema
 
Work and energy physics 9 class
Work and energy physics 9 classWork and energy physics 9 class
Work and energy physics 9 classFC Barcelona
 
Newton's 3 laws of Motion
Newton's 3 laws of MotionNewton's 3 laws of Motion
Newton's 3 laws of Motionkoniasunset
 

En vedette (20)

Work, energy and power
Work, energy and powerWork, energy and power
Work, energy and power
 
Ppt Newtons Second Law
Ppt Newtons Second LawPpt Newtons Second Law
Ppt Newtons Second Law
 
Newton's laws of motion
Newton's laws of motionNewton's laws of motion
Newton's laws of motion
 
Newton's second law of motion
Newton's second law of motionNewton's second law of motion
Newton's second law of motion
 
Forces & Changes in Motion
Forces & Changes in MotionForces & Changes in Motion
Forces & Changes in Motion
 
Physics and Matter
Physics and Matter Physics and Matter
Physics and Matter
 
Chapter 6 Work Energy Power
Chapter 6 Work Energy PowerChapter 6 Work Energy Power
Chapter 6 Work Energy Power
 
Physics Work and Energy
Physics Work and EnergyPhysics Work and Energy
Physics Work and Energy
 
6161103 3.4 three dimensional force systems
6161103 3.4 three dimensional force systems6161103 3.4 three dimensional force systems
6161103 3.4 three dimensional force systems
 
Newton's Laws of Motion
Newton's Laws of MotionNewton's Laws of Motion
Newton's Laws of Motion
 
Newtons Laws Of Motion
Newtons Laws Of MotionNewtons Laws Of Motion
Newtons Laws Of Motion
 
Work and Energy
Work and EnergyWork and Energy
Work and Energy
 
Work, energy & power physics
Work, energy & power physics Work, energy & power physics
Work, energy & power physics
 
Energy, Work & Power
Energy, Work & PowerEnergy, Work & Power
Energy, Work & Power
 
Newton’s Laws of Motion with Real Life Examples
Newton’s Laws of Motion with Real Life ExamplesNewton’s Laws of Motion with Real Life Examples
Newton’s Laws of Motion with Real Life Examples
 
Work, energy and power ppt
Work, energy and power pptWork, energy and power ppt
Work, energy and power ppt
 
Work and energy physics 9 class
Work and energy physics 9 classWork and energy physics 9 class
Work and energy physics 9 class
 
Psychology and physics
Psychology and physicsPsychology and physics
Psychology and physics
 
Newton's 3 laws of Motion
Newton's 3 laws of MotionNewton's 3 laws of Motion
Newton's 3 laws of Motion
 
newton's laws of motion
newton's laws of motionnewton's laws of motion
newton's laws of motion
 

Similaire à Lezione 02 - Delegation

Lezione 11 - Visitor
Lezione 11 - VisitorLezione 11 - Visitor
Lezione 11 - VisitorMarco 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 01 - Singleton
Lezione 01 - SingletonLezione 01 - Singleton
Lezione 01 - SingletonMarco Bianchi
 
Lezione 04 - Factory method
Lezione 04 - Factory methodLezione 04 - Factory method
Lezione 04 - Factory methodMarco Bianchi
 
Lezione 12 - Observer
Lezione 12 - ObserverLezione 12 - Observer
Lezione 12 - ObserverMarco Bianchi
 
Progettazione e realizzazione di un sistema software per il time logging
Progettazione e realizzazione di un sistema software per il time loggingProgettazione e realizzazione di un sistema software per il time logging
Progettazione e realizzazione di un sistema software per il time loggingVittoriano Muttillo
 
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
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented ProgrammingAndrea Bozzoni
 
Corso Object Oriented Analysis and Design
Corso Object Oriented Analysis and DesignCorso Object Oriented Analysis and Design
Corso Object Oriented Analysis and DesignK-Tech Formazione
 
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
 
Lezione 08 - Iterator
Lezione 08 - IteratorLezione 08 - Iterator
Lezione 08 - IteratorMarco Bianchi
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Marco Loregian
 
Modulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E AopModulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E Aopjdksrl
 
Webbit 2004: Aspectj
Webbit 2004: AspectjWebbit 2004: Aspectj
Webbit 2004: AspectjMatteo Baccan
 
Lezione 09 - Abstract Factory
Lezione 09 - Abstract FactoryLezione 09 - Abstract Factory
Lezione 09 - Abstract FactoryMarco Bianchi
 
Semi-Active Replication Protocol
Semi-Active Replication ProtocolSemi-Active Replication Protocol
Semi-Active Replication ProtocolPaolo Maresca
 

Similaire à Lezione 02 - Delegation (20)

Lezione 11 - Visitor
Lezione 11 - VisitorLezione 11 - Visitor
Lezione 11 - Visitor
 
Lezione 11 - Bridge
Lezione 11 - BridgeLezione 11 - Bridge
Lezione 11 - Bridge
 
Lezione 00 - Introduzione ai Design Patterns
Lezione 00 - Introduzione ai Design PatternsLezione 00 - Introduzione ai Design Patterns
Lezione 00 - Introduzione ai Design Patterns
 
Lezione 01 - Singleton
Lezione 01 - SingletonLezione 01 - Singleton
Lezione 01 - Singleton
 
Lezione 04 - Factory method
Lezione 04 - Factory methodLezione 04 - Factory method
Lezione 04 - Factory method
 
Lezione 12 - Observer
Lezione 12 - ObserverLezione 12 - Observer
Lezione 12 - Observer
 
Progettazione e realizzazione di un sistema software per il time logging
Progettazione e realizzazione di un sistema software per il time loggingProgettazione e realizzazione di un sistema software per il time logging
Progettazione e realizzazione di un sistema software per il time logging
 
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
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
Corso Object Oriented Analysis and Design
Corso Object Oriented Analysis and DesignCorso Object Oriented Analysis and Design
Corso Object Oriented Analysis and Design
 
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
 
Lezione 08 - Iterator
Lezione 08 - IteratorLezione 08 - Iterator
Lezione 08 - Iterator
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
 
Modulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E AopModulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E Aop
 
Catalogo corsi Emerasoft 2013 - 2014
Catalogo corsi Emerasoft 2013 - 2014Catalogo corsi Emerasoft 2013 - 2014
Catalogo corsi Emerasoft 2013 - 2014
 
Webbit 2004: Aspectj
Webbit 2004: AspectjWebbit 2004: Aspectj
Webbit 2004: Aspectj
 
Lezione 09 - Abstract Factory
Lezione 09 - Abstract FactoryLezione 09 - Abstract Factory
Lezione 09 - Abstract Factory
 
Semi-Active Replication Protocol
Semi-Active Replication ProtocolSemi-Active Replication Protocol
Semi-Active Replication Protocol
 

Dernier

discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptcarlottagalassi
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 

Dernier (11)

discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.ppt
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 

Lezione 02 - Delegation

  • 3. Problema introduttivo (1/3) Cosa accade alle persone che “giocano più ruoli”? Cosa accade alle persone che “giocano più ruoli”? Ingegneria del Software - A.A. 2003/2004
  • 4. Problema introduttivo (2/3) L’ereditarietà non risolve il problema! L’ereditarietà non risolve il problema! Ingegneria del Software - A.A. 2003/2004
  • 6. Il pattern Delegation (1/8) • Nome Delegation (When not to use Inheritance) [Grand98] • Synopsis La delega è un modo per “estendere” e riusare le funzionalità di una classe senza ricorrere all’ereditarietà. La nuova classe simula l’ereditarietà utilizzando un’istanza della classe originale per fornire le funzionalità originali. A queste ne aggiunge di nuove. Ingegneria del Software - A.A. 2003/2004
  • 7. Il pattern Delegation (2/8) • Context - Delegation è più generale dell’ereditarietà - L’ereditarietà è utile per relazioni del tipo “is-a- kind-of” perchè sono intrinsecamente statiche - In relazioni tra classi più dinamiche, tipo “is-a- role-played-by”, l’ereditarietà crea problemi - Esempio: Sistema per la prenotazione di biglietti aerei che prevede passeggeri, personale di linea, agente di vendita biglietti aerei, ecc. Ingegneria del Software - A.A. 2003/2004
  • 8. Il pattern Delegation (3/8) Ingegneria del Software - A.A. 2003/2004
  • 9. Il pattern Delegation (4/8) • Forces – L’ereditarietà è una relazione statica che non cambia nel tempo – Se una classe tenta di nascondere un metodo o una variabile ereditata da una superclasse, allora quella superclasse non dovrebbe essere estesa – Dichiarare un classe come sottoclasse di una classe utility può essere rischioso • Estendendo una classe come Vector, quest’ultima potrebbe cambiare nel tempo perdendo la compatibilità • I client potrebbero presupporre la superclasse (es. cast per passaggio di parametri) • I client potrebbero richiamare i metodi pubblici della superclasse Ingegneria del Software - A.A. 2003/2004
  • 10. Il pattern Delegation (5/8) • Solution - Gli “attori” del pattern Delegation sono: Da Context… – Delegator – Delegate … a Solution Ingegneria del Software - A.A. 2003/2004
  • 11. Il pattern Delegation (6/8) • Consequences - Vantaggi -Aggira i problemi dell’ereditarietà -Facile cambiare il comportamento di un oggetto a run-time - Svantaggi - Meno strutturata rispetto all’ereditarietà: relazioni tra le classi meno ovvie • Implementation - Implementazione banale • Java API usage - Le API Java presentano molti esempi di delegation pattern. - Alla base del modello ad eventi Java. Ingegneria del Software - A.A. 2003/2004
  • 12. Il pattern Delegation (7/8) • Code example FlightSegment FlightSegment non estende la classe LuggageCompartment! Ingegneria del Software - A.A. 2003/2004
  • 13. Il pattern Delegation (8/8) LuggageCompartment LuggageCompartment non estende Vector! • Related Patterns - Molti pattern usano il principio di delega Es. Decorator, Proxy, Observer. Ingegneria del Software - A.A. 2003/2004