際際滷 quarta lezione al linguaggio Java 8 in preparazione alla certificazione OCA 1Z0-808.
Argomenti:
Design Pattern: Singleton
Classe Astratta
Interfaccia e interfaccia funzionale
Ereditariet e costruttori
Super e this
Incapsulamento
Polimorfismo
Varargs
Overload e Override
Invocazione virtuale dei metodi
Lezione del 28-11-2017 tenuta da Valerio Radice presso Nextre Engeneering
https://www.nextre.it/corso/corso-java-oca/
Programmazione a oggetti tramite la macchina del caff辿 (pt. 2)Marcello Missiroli
油
Una introduzione semplice e (spero) intuitiva al mondo della programmazione a oggetti usando come riferimento una macchina del caff辿 (tipo Nespresso)
際際滷s 2 di 3
Esercizi sulla conservazione dell'energia. Quando un sistema 竪 isolato e non ci sono forze non conservative. Quando un sistema 竪 isolato e ci sono forze non conservative come l'attrito. Quando un sistema non 竪 isolato.
Programmazione a oggetti tramite la macchina del caff辿 (pt. 2)Marcello Missiroli
油
Una introduzione semplice e (spero) intuitiva al mondo della programmazione a oggetti usando come riferimento una macchina del caff辿 (tipo Nespresso)
際際滷s 2 di 3
Esercizi sulla conservazione dell'energia. Quando un sistema 竪 isolato e non ci sono forze non conservative. Quando un sistema 竪 isolato e ci sono forze non conservative come l'attrito. Quando un sistema non 竪 isolato.
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...Damiano Orru
油
Osservatorio sullinformation literacy promuove un incontro online organizzato dalla rete Open Education Italia. n occasione della Open Education Week 2025, dal 3 al 7 marzo, la rete Open Education Italia organizza un incontro online dedicato alla presentazione della Dichiarazione di Dubai sulle Risorse Educative Aperte (OER) il 4 marzo 2025. https://www.aib.it/eventi/dichiarazione-dubai-oer-unesco/
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnstonpplqadiri
油
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Systems Analysis and Design 8th Edition: Kendallalawamajina
油
Test Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: Kendall
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...orakategy
油
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12th Edition Copley Test Bank
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12th Edition Copley Test Bank
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12th Edition Copley Test Bank
New Methods of Literacy Research 1st Edition Peggy Albersuxhcablende
油
New Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy Albers
Digital Business Networks 1st Edition Dooley Solutions Manualidderkribo
油
Digital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions Manual
Designing Intelligent Construction Projects Michael Frahmewoadetozito
油
Designing Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael Frahm
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manningjelieltoinks
油
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...osanoarak
油
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. Johnson
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. Johnson
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. Johnson
Essentials of Accounting for Governmental and Not for Profit Organizations 13...orakategy
油
Essentials of Accounting for Governmental and Not for Profit Organizations 13th Edition Copley Test Bank
Essentials of Accounting for Governmental and Not for Profit Organizations 13th Edition Copley Test Bank
Essentials of Accounting for Governmental and Not for Profit Organizations 13th Edition Copley Test Bank
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...izmarmelum
油
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane, Kevin Tasa
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane, Kevin Tasa
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane, Kevin Tasa
Test Bank for Understanding Abnormal Behavior, 10th Edition : Suedementogge
油
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...orrahnaf
油
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition: Frank J. Fabozzi
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition: Frank J. Fabozzi
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition: Frank J. Fabozzi
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