際際滷

際際滷Share a Scribd company logo
I concetti della programmazione OO per riutilizzare il codice   Lezione del 27 ottobre 2008 per il modulo   Programmazione ad Oggetti 3属 parte
La riutilizzazione del codice La programmazione strutturata consente di riutilizzare i programmi esistenti.  Si pu嘆 scrivere una procedura, una funzione, una subroutine, e poi usarla tante volte quante si vuole Tuttavia nella progettazione Orientata agli Oggetti si fa molto di pi湛. La programmazione OO permette di definire relazioni tra le classi degli oggetti che facilitano: non solo il riutilizzo del codice,  ma anche la progettazione del medesimo con una visione globale della sua architettura
Metodi per  riutilizzare del codice nella programmazione Orientata agli Oggetti Nella programmazione OO ci sono fondamentalmente due modi distinti per riutilizzare il codice esistente La  Ereditariet  che permette ad una classe di ereditare gli attributi ed i metodi di unaltra classe. La  Composizione   che fornisce un meccanismo per costruire un oggetto composto di altri oggetti, quindi una nuova classe a partire da altre classi gi esistenti
La ereditariet Qualcuno ha creato con un processo di astrazione una superclasse che ha  attributi e  metodi comuni ad un certo insieme di classi. Ad esempio  in una classe Dog ed in unaltra Cat c竪 un attributo per il colore degli occhi.  In un modello procedurale, il codice per Dog, nonch辿 quello per Cat dovrebbero entrambi contenere questo attributo Invece in un progetto OO, lattributo colore occhi 竪 spostato nella superclasse  Mammal (mammiferi), insieme con altri attributi comuni e metodi comuni. In questo caso sia Dog che Cat ereditano dalla classe Mammal questo attributo eyeColor
Esempio di ereditariet Ci嘆 significa che questa classe Dog ha i seguenti attributi eyeColor   //  ereditato dalla classe Mammal barkFrequency   //  definito solo per gli oggetti Dogs Al medesimo modo, un oggetto Dog ha  i seguenti metodi: getEyeColor()  // ereditato da Mammal bark()   // definito solo per Dog Ci嘆 significa che questa classe Cat ha i seguenti attributi: eyeColor  //  ereditato dalla classe Mammal meowFrequency  //  definito solo per gli oggetti Cats Al medesimo modo un oggetto Cat ha i seguenti metodi: getEyeColor()  //  ereditato da Mammal meow()  //  definito solo per Cat Le classi Dog e Cat ereditano entrambe dalla superclasse Mammal. Quando un oggetto Dog o Cat viene instanziato, esso contiene ogni cosa definita nella sua classe cos狸 come ogni cosa definita nella classe genitore. Pertanto essi hanno le propriet delle loro definizione di classe e quelle ereditate dalla classe Mammal.
Superclasse e sottoclasse La superclasse, o classe genitore, contiene  tutti gli attributi ed i comportamenti che sono comuni alle classi che li ereditano. Ad esempio, nel caso della classe Mammal, tutti i mammiferi hanno attributi simili quali colore degli occhi, colore dei capelli, cos狸 come comportamenti comuni quali generaCaloreInterno() cresceCapelli(). Tutti i mammiferi hanno questi attributi e comportamenti, pertanto non 竪 necessario duplicarli lungo la gerarchia della ereditariet in ciascun tipo di mammifero. La duplicazione, oltre ad essere faticosa, introduce errori ed inconsistenze Le classi Dog e Cat ereditano tutti questi attributi e comportamenti comuni dalla classe Mammal.  La classe Mammal 竪 la superclasse, Dog e Cat sono le sottoclassi o classi figlie.
Programmare per differenze  (generalizzazione) (specializzazione) Poich辿 la classe Dog e Cat ereditano gli attributi e i comportamenti della superclasse Mammal, queste classi specializzate  devono solo implementare quegli attributi e quei comportamenti per i quali sono diverse dai mammiferi in generali . Queste sottoclassi devono aggiungere i loro dettagli, specifici del loro essere Dog e Cat . Per questo motivo si dice anche che  le superclassi sono classi generali , mentre  le sottoclassi si dicono specializzate . Inoltre il processo di creazione della superclasse si chiama per il medesimo motivo  generalizzazione , mentro il processo di programmazione per differenza delle sottoclassi si chiama  specializzazione
Astrazione per ereditariet Un albero di ereditariet pu嘆 diventare molto grande. Dopo che le classi Mammal, Cat e Dog sono state completate, altre classi si possono aggiungere alla gerarchia quali Lions, Tigers. Ognuna di queste pu嘆, a sua volta essere la superclasse di altre classi. Cat pu嘆 essere superclasse di GattoPersiano, GattoSiamese. Dog pu嘆 essere superclasse di GermanShepherd, di Poodle La potenza della ereditariet sta in quella della astrazione e della organizzazione
Esempio di albero di ereditariet Quali sono i metodi di GermanShepherd ? I suoi   isGerman() di Dog   bark() di Mammal   getEyeColor Quali sono i metodi di Poodle ?
Relazione is-a Il Cerchio, il Quadrato, la Stella ereditano direttamente da Shape A questa relazione ci si riferisce spesso come ad una relazione is-a Un cerchio is a shape Un quadrato 竪 una forma Una stella 竪 una forma
Introduzione  al polimorfismo Nelle figura shape, il nome su ciascuno degli oggetti rappresenta il metodo draw (disegna) rispettivamente di Cerchio, Quadrato, Stella Quando disegniamo  una forma, indipendentemente da quale essa sia, invochiamo un metodo chiamato draw()  responsabilit individuale delloggetto, che esso sia un cerchio, un quadrato oppure una stella, disegnare s辿 stesso Qui sta un nuovo concetto della programmazione OO Il polimorfismo
Il polimorfismo Polimorfismo 竪 un termine greco che significa molte forme Il polimorfismo 竪 strettamente correlato al concetto di ereditariet Quando un messaggio 竪 inviato ad un oggetto, quelloggetto deve avere un metodo (uninterfaccia) per rispondere a quel messaggio In una gerarchia ereditaria, tutte le sottoclassi ereditano le interfacce delle loro superclassi Poich辿 ogni sottoclasse 竪 unentit separata, ciascuna di esse pu嘆 richiedere una distinta e diversa  risposta al medesimo messaggio.
Esempio per comprendere il polimorfismo Consideriamo la classe  Shape  ed un suo comportamento  draw() Quando chiedete di disegnare una forma dovete specificare quale forma.  nessuno pu嘆 disegnare una forma ( Shape ) perch辿  Shape  竪 un concetto astratto In effetti il metodo  draw()  di   Shape  non ha neanche unimplementazione Per disegnare una forma occorre specificare una forma concreta (cerchio, quadrato, stella) Per fare questo dovete fornire leffettiva implementazione del metodo  draw()  in Cerchio, Quadrato, Stella.
Sovrascrittura (overriding) di un metodo Anche se la classe  Shape  ha un metodo  draw() , nelle classi Cerchio, Quadrato, Stella scriviamo il metodo  draw()  sovrascrivendo il metodo  draw()  ereditato da  Shape . Sovrascrivere significa riscrivere e rimpiazzare in una sottoclasse limplementazione di un metodo ereditata dalla superclasse
Esempio di sovrascrittura di un metodo Ad esempio supponiamo di avere una collezione di tre forme geometriche: cerchio, quadrato, stella Anche se le trattiamo tutte come forme geometriche e gli inviamo il medesimo messaggio draw()  Il risultato finale di ciascun disegno 竪 diverso perch辿 in ciascuna delle classi di questi oggetti abbiamo fornito una concreta implementazione di questo metodo draw() riscrivendolo Pertanto ciascuna classe pur sollecitata dal medesimo messaggio 竪 in grado di rispondere differentemente Questo 竪 il polimorfismo !!!!
Un po di codice per esempio public abstract class Shape{   public abstract void draw(); } public class Cerchio{  public void draw(){   System.out.println(Cerchio!!); } } public class Quadrato{  public void draw(){   System.out.println(Quadrato!!); } } public class Stella{  public void draw(){   System.out.println(Stella!!); } } Instanziamo qualche oggetto c1=new Cerchio(); q1=new Quadrato(); s1=new Stella(); Inviamo il medesimo messaggio a tutti questi oggetti c1.draw(); q1.draw(); s1.draw(); Leffettiva risposta dipende dal tipo di oggetto Ma abbiamo inviato a tutti il medesimo messaggio !! Il concetto chiave 竪 che stiamo inviando il medesimo messaggio alle classi Shape e sperimentiamo diverse risposte a seconda di quale sottoclasse di Shape 竪 utilizzata ! Questo 竪 il polimorfismo !
La composizione  naturale pensare agli oggetti come aggregati di altri oggetti Un computer contiene una scheda madre, una scheda video, una tastiera, un disco rigido. Anche se il computer 竪 considerato come un oggetto unico, anche lunit disco 竪 un oggetto valido Infatti potreste aprire il computer  e rimuovere il disco rigido e prenderlo in mano Gli oggetti quindi sono spesso costruiti o composti da altri oggetti Questa 竪 la composizione
Lastrazione della composizione Anche la composizione fornisce un meccanismo per costruire gli oggetti, includendo delle classi allinterno di altre classi Come si fa ? Consideriamo la relazione tra un automobile e il suo motore Possiamo dire che lauto contiene il motore Ma non possiamo dire che unauto 竪 un motore ! Piuttosto usiamo il termine lauto has a ha un motore public class Motore  {  } public class Auto { private Motore m;  } In questo modo siamo in grado di includere un oggetto allinterno di un altro oggetto che lo contiene In pratica definiamo un nuovo tipo di variabile che rappresenta loggetto che vogliamo includere
La relazione has a La relazione di ereditariet 竪 considerata una relazione del tipo 竪 un ( is-a ) Invece la relazione di composizione 竪 considerata del tipo ha un ( has-a ) Quindi il computer ha un disco rigido Un computer non 竪 un disco rigido quindi tra computer e disco rigido non c竪 una relazione di ereditariet, ma invece c竪 una relazione di composizione

More Related Content

Similar to Metodi Per Riutilizzare Programmi Oo (11)

[Objective-C] - Introduzione
[Objective-C] - Introduzione[Objective-C] - Introduzione
[Objective-C] - Introduzione
Jacopo Di Stanislao
OOP with C#
OOP with C#OOP with C#
OOP with C#
Manuel Scapolan
Lezione01
Lezione01Lezione01
Lezione01
robynho86
Lezione01
Lezione01Lezione01
Lezione01
robynho86
Vb.net
 Vb.net Vb.net
Vb.net
ululallanotte
Programmazione a oggetti tramite la macchina del caff辿 (pt. 2)
Programmazione a oggetti tramite la macchina del caff辿 (pt. 2)Programmazione a oggetti tramite la macchina del caff辿 (pt. 2)
Programmazione a oggetti tramite la macchina del caff辿 (pt. 2)
Marcello Missiroli
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
Giovanni Carbonara
Py t3 python-oggetti
Py t3 python-oggettiPy t3 python-oggetti
Py t3 python-oggetti
Majong DevJfu
Presentazione principi oop
Presentazione principi oopPresentazione principi oop
Presentazione principi oop
gcorreddu
Introduzione a scala prima parte
Introduzione a scala   prima parteIntroduzione a scala   prima parte
Introduzione a scala prima parte
Onofrio Panzarino
Lezione01
Lezione01Lezione01
Lezione01
robynho86
Lezione01
Lezione01Lezione01
Lezione01
robynho86
Programmazione a oggetti tramite la macchina del caff辿 (pt. 2)
Programmazione a oggetti tramite la macchina del caff辿 (pt. 2)Programmazione a oggetti tramite la macchina del caff辿 (pt. 2)
Programmazione a oggetti tramite la macchina del caff辿 (pt. 2)
Marcello Missiroli
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
Giovanni Carbonara
Py t3 python-oggetti
Py t3 python-oggettiPy t3 python-oggetti
Py t3 python-oggetti
Majong DevJfu
Presentazione principi oop
Presentazione principi oopPresentazione principi oop
Presentazione principi oop
gcorreddu
Introduzione a scala prima parte
Introduzione a scala   prima parteIntroduzione a scala   prima parte
Introduzione a scala prima parte
Onofrio Panzarino

More from Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA (20)

Interferenza dueonde
Interferenza dueondeInterferenza dueonde
Interferenza dueonde
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Procedimentodisoluzione fisicaparticelle
Procedimentodisoluzione fisicaparticelleProcedimentodisoluzione fisicaparticelle
Procedimentodisoluzione fisicaparticelle
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Proc solescercaparabolastaccasegmentosuassex
Proc solescercaparabolastaccasegmentosuassexProc solescercaparabolastaccasegmentosuassex
Proc solescercaparabolastaccasegmentosuassex
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Problema fisica compito in classe
Problema fisica compito in classeProblema fisica compito in classe
Problema fisica compito in classe
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Esercizi sulla energia meccanica
Esercizi sulla energia meccanicaEsercizi sulla energia meccanica
Esercizi sulla energia meccanica
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Problemi di trigonometria
Problemi di trigonometriaProblemi di trigonometria
Problemi di trigonometria
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Lezione Blog Didattici 27 4 2010
Lezione Blog Didattici 27 4 2010Lezione Blog Didattici 27 4 2010
Lezione Blog Didattici 27 4 2010
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Portale libreria online
Portale libreria onlinePortale libreria online
Portale libreria online
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Lezione android esercizi
Lezione android esercizi Lezione android esercizi
Lezione android esercizi
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Lezione programmazione database con java Servlet - quarta parte
Lezione programmazione database con java Servlet - quarta parteLezione programmazione database con java Servlet - quarta parte
Lezione programmazione database con java Servlet - quarta parte
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Lezione jsp su come gestire una tabella relazionale con chiave esterna
Lezione jsp su come gestire una tabella relazionale con chiave esternaLezione jsp su come gestire una tabella relazionale con chiave esterna
Lezione jsp su come gestire una tabella relazionale con chiave esterna
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Sesta lezione android
Sesta lezione androidSesta lezione android
Sesta lezione android
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Quinta lezione android
Quinta lezione androidQuinta lezione android
Quinta lezione android
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Quarta lezioneandroid
Quarta lezioneandroidQuarta lezioneandroid
Quarta lezioneandroid
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Lezione jsp pdatabase crud quintaparte
Lezione jsp pdatabase crud quintaparteLezione jsp pdatabase crud quintaparte
Lezione jsp pdatabase crud quintaparte
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA

Recently uploaded (18)

Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Damiano Orru
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark JohnstonTest Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
pplqadiri
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim WalkerImproving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
aokasmaany
Test Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: KendallTest Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: Kendall
alawamajina
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
orakategy
New Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy AlbersNew Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy Albers
uxhcablende
Digital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions ManualDigital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions Manual
idderkribo
Designing Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael FrahmDesigning Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael Frahm
ewoadetozito
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon ManningLearning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
jelieltoinks
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
osanoarak
Essentials of Accounting for Governmental and Not for Profit Organizations 13...
Essentials of Accounting for Governmental and Not for Profit Organizations 13...Essentials of Accounting for Governmental and Not for Profit Organizations 13...
Essentials of Accounting for Governmental and Not for Profit Organizations 13...
orakategy
La tossicodipendenza pi湛 difficile da trattare.pptx
La tossicodipendenza pi湛 difficile da trattare.pptxLa tossicodipendenza pi湛 difficile da trattare.pptx
La tossicodipendenza pi湛 difficile da trattare.pptx
Fabio Scandurra
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazione
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazioneCustomer Satisfaction a.s. 2022-23 - Questionario autovalutazione
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazione
belodevici
2 - Presentazione disturbo spettro autismo.pdf
2 - Presentazione disturbo spettro  autismo.pdf2 - Presentazione disturbo spettro  autismo.pdf
2 - Presentazione disturbo spettro autismo.pdf
GiovanniBertoni
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
izmarmelum
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : SueTest Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
dementogge
Customer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
Customer Satisfaction a.s. 2023-24 - Questionario AutovalutazioneCustomer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
Customer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
belodevici
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
orrahnaf
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Damiano Orru
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark JohnstonTest Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
pplqadiri
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim WalkerImproving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
aokasmaany
Test Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: KendallTest Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: Kendall
alawamajina
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
orakategy
New Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy AlbersNew Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy Albers
uxhcablende
Digital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions ManualDigital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions Manual
idderkribo
Designing Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael FrahmDesigning Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael Frahm
ewoadetozito
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon ManningLearning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
jelieltoinks
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
osanoarak
Essentials of Accounting for Governmental and Not for Profit Organizations 13...
Essentials of Accounting for Governmental and Not for Profit Organizations 13...Essentials of Accounting for Governmental and Not for Profit Organizations 13...
Essentials of Accounting for Governmental and Not for Profit Organizations 13...
orakategy
La tossicodipendenza pi湛 difficile da trattare.pptx
La tossicodipendenza pi湛 difficile da trattare.pptxLa tossicodipendenza pi湛 difficile da trattare.pptx
La tossicodipendenza pi湛 difficile da trattare.pptx
Fabio Scandurra
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazione
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazioneCustomer Satisfaction a.s. 2022-23 - Questionario autovalutazione
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazione
belodevici
2 - Presentazione disturbo spettro autismo.pdf
2 - Presentazione disturbo spettro  autismo.pdf2 - Presentazione disturbo spettro  autismo.pdf
2 - Presentazione disturbo spettro autismo.pdf
GiovanniBertoni
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
izmarmelum
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : SueTest Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
dementogge
Customer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
Customer Satisfaction a.s. 2023-24 - Questionario AutovalutazioneCustomer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
Customer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
belodevici
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
orrahnaf

Metodi Per Riutilizzare Programmi Oo

  • 1. I concetti della programmazione OO per riutilizzare il codice Lezione del 27 ottobre 2008 per il modulo Programmazione ad Oggetti 3属 parte
  • 2. La riutilizzazione del codice La programmazione strutturata consente di riutilizzare i programmi esistenti. Si pu嘆 scrivere una procedura, una funzione, una subroutine, e poi usarla tante volte quante si vuole Tuttavia nella progettazione Orientata agli Oggetti si fa molto di pi湛. La programmazione OO permette di definire relazioni tra le classi degli oggetti che facilitano: non solo il riutilizzo del codice, ma anche la progettazione del medesimo con una visione globale della sua architettura
  • 3. Metodi per riutilizzare del codice nella programmazione Orientata agli Oggetti Nella programmazione OO ci sono fondamentalmente due modi distinti per riutilizzare il codice esistente La Ereditariet che permette ad una classe di ereditare gli attributi ed i metodi di unaltra classe. La Composizione che fornisce un meccanismo per costruire un oggetto composto di altri oggetti, quindi una nuova classe a partire da altre classi gi esistenti
  • 4. La ereditariet Qualcuno ha creato con un processo di astrazione una superclasse che ha attributi e metodi comuni ad un certo insieme di classi. Ad esempio in una classe Dog ed in unaltra Cat c竪 un attributo per il colore degli occhi. In un modello procedurale, il codice per Dog, nonch辿 quello per Cat dovrebbero entrambi contenere questo attributo Invece in un progetto OO, lattributo colore occhi 竪 spostato nella superclasse Mammal (mammiferi), insieme con altri attributi comuni e metodi comuni. In questo caso sia Dog che Cat ereditano dalla classe Mammal questo attributo eyeColor
  • 5. Esempio di ereditariet Ci嘆 significa che questa classe Dog ha i seguenti attributi eyeColor // ereditato dalla classe Mammal barkFrequency // definito solo per gli oggetti Dogs Al medesimo modo, un oggetto Dog ha i seguenti metodi: getEyeColor() // ereditato da Mammal bark() // definito solo per Dog Ci嘆 significa che questa classe Cat ha i seguenti attributi: eyeColor // ereditato dalla classe Mammal meowFrequency // definito solo per gli oggetti Cats Al medesimo modo un oggetto Cat ha i seguenti metodi: getEyeColor() // ereditato da Mammal meow() // definito solo per Cat Le classi Dog e Cat ereditano entrambe dalla superclasse Mammal. Quando un oggetto Dog o Cat viene instanziato, esso contiene ogni cosa definita nella sua classe cos狸 come ogni cosa definita nella classe genitore. Pertanto essi hanno le propriet delle loro definizione di classe e quelle ereditate dalla classe Mammal.
  • 6. Superclasse e sottoclasse La superclasse, o classe genitore, contiene tutti gli attributi ed i comportamenti che sono comuni alle classi che li ereditano. Ad esempio, nel caso della classe Mammal, tutti i mammiferi hanno attributi simili quali colore degli occhi, colore dei capelli, cos狸 come comportamenti comuni quali generaCaloreInterno() cresceCapelli(). Tutti i mammiferi hanno questi attributi e comportamenti, pertanto non 竪 necessario duplicarli lungo la gerarchia della ereditariet in ciascun tipo di mammifero. La duplicazione, oltre ad essere faticosa, introduce errori ed inconsistenze Le classi Dog e Cat ereditano tutti questi attributi e comportamenti comuni dalla classe Mammal. La classe Mammal 竪 la superclasse, Dog e Cat sono le sottoclassi o classi figlie.
  • 7. Programmare per differenze (generalizzazione) (specializzazione) Poich辿 la classe Dog e Cat ereditano gli attributi e i comportamenti della superclasse Mammal, queste classi specializzate devono solo implementare quegli attributi e quei comportamenti per i quali sono diverse dai mammiferi in generali . Queste sottoclassi devono aggiungere i loro dettagli, specifici del loro essere Dog e Cat . Per questo motivo si dice anche che le superclassi sono classi generali , mentre le sottoclassi si dicono specializzate . Inoltre il processo di creazione della superclasse si chiama per il medesimo motivo generalizzazione , mentro il processo di programmazione per differenza delle sottoclassi si chiama specializzazione
  • 8. Astrazione per ereditariet Un albero di ereditariet pu嘆 diventare molto grande. Dopo che le classi Mammal, Cat e Dog sono state completate, altre classi si possono aggiungere alla gerarchia quali Lions, Tigers. Ognuna di queste pu嘆, a sua volta essere la superclasse di altre classi. Cat pu嘆 essere superclasse di GattoPersiano, GattoSiamese. Dog pu嘆 essere superclasse di GermanShepherd, di Poodle La potenza della ereditariet sta in quella della astrazione e della organizzazione
  • 9. Esempio di albero di ereditariet Quali sono i metodi di GermanShepherd ? I suoi isGerman() di Dog bark() di Mammal getEyeColor Quali sono i metodi di Poodle ?
  • 10. Relazione is-a Il Cerchio, il Quadrato, la Stella ereditano direttamente da Shape A questa relazione ci si riferisce spesso come ad una relazione is-a Un cerchio is a shape Un quadrato 竪 una forma Una stella 竪 una forma
  • 11. Introduzione al polimorfismo Nelle figura shape, il nome su ciascuno degli oggetti rappresenta il metodo draw (disegna) rispettivamente di Cerchio, Quadrato, Stella Quando disegniamo una forma, indipendentemente da quale essa sia, invochiamo un metodo chiamato draw() responsabilit individuale delloggetto, che esso sia un cerchio, un quadrato oppure una stella, disegnare s辿 stesso Qui sta un nuovo concetto della programmazione OO Il polimorfismo
  • 12. Il polimorfismo Polimorfismo 竪 un termine greco che significa molte forme Il polimorfismo 竪 strettamente correlato al concetto di ereditariet Quando un messaggio 竪 inviato ad un oggetto, quelloggetto deve avere un metodo (uninterfaccia) per rispondere a quel messaggio In una gerarchia ereditaria, tutte le sottoclassi ereditano le interfacce delle loro superclassi Poich辿 ogni sottoclasse 竪 unentit separata, ciascuna di esse pu嘆 richiedere una distinta e diversa risposta al medesimo messaggio.
  • 13. Esempio per comprendere il polimorfismo Consideriamo la classe Shape ed un suo comportamento draw() Quando chiedete di disegnare una forma dovete specificare quale forma. nessuno pu嘆 disegnare una forma ( Shape ) perch辿 Shape 竪 un concetto astratto In effetti il metodo draw() di Shape non ha neanche unimplementazione Per disegnare una forma occorre specificare una forma concreta (cerchio, quadrato, stella) Per fare questo dovete fornire leffettiva implementazione del metodo draw() in Cerchio, Quadrato, Stella.
  • 14. Sovrascrittura (overriding) di un metodo Anche se la classe Shape ha un metodo draw() , nelle classi Cerchio, Quadrato, Stella scriviamo il metodo draw() sovrascrivendo il metodo draw() ereditato da Shape . Sovrascrivere significa riscrivere e rimpiazzare in una sottoclasse limplementazione di un metodo ereditata dalla superclasse
  • 15. Esempio di sovrascrittura di un metodo Ad esempio supponiamo di avere una collezione di tre forme geometriche: cerchio, quadrato, stella Anche se le trattiamo tutte come forme geometriche e gli inviamo il medesimo messaggio draw() Il risultato finale di ciascun disegno 竪 diverso perch辿 in ciascuna delle classi di questi oggetti abbiamo fornito una concreta implementazione di questo metodo draw() riscrivendolo Pertanto ciascuna classe pur sollecitata dal medesimo messaggio 竪 in grado di rispondere differentemente Questo 竪 il polimorfismo !!!!
  • 16. Un po di codice per esempio public abstract class Shape{ public abstract void draw(); } public class Cerchio{ public void draw(){ System.out.println(Cerchio!!); } } public class Quadrato{ public void draw(){ System.out.println(Quadrato!!); } } public class Stella{ public void draw(){ System.out.println(Stella!!); } } Instanziamo qualche oggetto c1=new Cerchio(); q1=new Quadrato(); s1=new Stella(); Inviamo il medesimo messaggio a tutti questi oggetti c1.draw(); q1.draw(); s1.draw(); Leffettiva risposta dipende dal tipo di oggetto Ma abbiamo inviato a tutti il medesimo messaggio !! Il concetto chiave 竪 che stiamo inviando il medesimo messaggio alle classi Shape e sperimentiamo diverse risposte a seconda di quale sottoclasse di Shape 竪 utilizzata ! Questo 竪 il polimorfismo !
  • 17. La composizione naturale pensare agli oggetti come aggregati di altri oggetti Un computer contiene una scheda madre, una scheda video, una tastiera, un disco rigido. Anche se il computer 竪 considerato come un oggetto unico, anche lunit disco 竪 un oggetto valido Infatti potreste aprire il computer e rimuovere il disco rigido e prenderlo in mano Gli oggetti quindi sono spesso costruiti o composti da altri oggetti Questa 竪 la composizione
  • 18. Lastrazione della composizione Anche la composizione fornisce un meccanismo per costruire gli oggetti, includendo delle classi allinterno di altre classi Come si fa ? Consideriamo la relazione tra un automobile e il suo motore Possiamo dire che lauto contiene il motore Ma non possiamo dire che unauto 竪 un motore ! Piuttosto usiamo il termine lauto has a ha un motore public class Motore { } public class Auto { private Motore m; } In questo modo siamo in grado di includere un oggetto allinterno di un altro oggetto che lo contiene In pratica definiamo un nuovo tipo di variabile che rappresenta loggetto che vogliamo includere
  • 19. La relazione has a La relazione di ereditariet 竪 considerata una relazione del tipo 竪 un ( is-a ) Invece la relazione di composizione 竪 considerata del tipo ha un ( has-a ) Quindi il computer ha un disco rigido Un computer non 竪 un disco rigido quindi tra computer e disco rigido non c竪 una relazione di ereditariet, ma invece c竪 una relazione di composizione