SlideShare a Scribd company logo
1 of 26
Download to read offline
05/02/21 1
speaker
www.webturing.net
ezio sperduto
Mini Corso Java 4h
(per principianti)
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Regalo Turing
• sconto del 50%
• solo per i corsi JAVA BASE e JAVA EE
• solo per i partecipanti di questo mini-corso
• solo per i corsi ON-LINE
Contattare direttamente:
• amministrazione@webturing.net
• ezio.sperduto@webturing.net
con codice promozione:
JAVA-4H-2021
ONLINE ONLINE
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Programmazione Object Oriented
prevede Classi e Oggetti
meccanismi come:
• incapsulamento
• ereditarietà
• polimorfismo
costrutti astratti
modularità
progettazione/emulazione modello reale
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
idea di automobile
(la classe)
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
idea di automobile
(la classe)
automobili reali – gli oggetti
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
CLASSE
o il tipo
o la categoria
o lo stampo di creazione
OGGETTO
o le istanze
o gli elementi
dalla classe à istanziamo gli oggetti
i programmatori Java sono
costruttori di classi
poi da queste staccheremo gli oggetti
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
SINTASSI - Dichiarazione
class NOME_CLASSE{
------ CAMPO X ------
------ CAMPO Y ------
------ CAMPO Z ------
------ METODO A ------
------ METODO B ------
------ METODO C ------
}
1
2
3
4
5
6
7
8
9
10
11
12
il costrutto class è il contenitore dei membri della classe: campi, metodi, etc.
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
SINTASSI - Dichiarazione
class Automobile{
boolean accesa = false;
double velocita = 0;
int marcia = 1;
void accendi(){
accesa=true;
}
...
}
1
2
3
4
5
6
7
8
9
10
11
12
i campi con i dati, rappresentano lo stato dell'oggetto
i metodi sono le "capacità di agire"
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
SINTASSI - Istanziazione
Automobile oggettoAuto = new Automobile();
• usiamo il costrutto new -> viene riservata la memoria per l'oggetto, e inizializzati i suoi campi
• creiamo una variabile di tipo Automobile
• le assegnamo un nuovo oggetto appena costruito
• la variabile è di tipo object-reference: un contenitore o puntatore all'istanza
Come costruiamo un'automobile?
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Dot-Notation
Come usiamo i membri (campi e metodi) al suo interno?
...
Automobile oggettoAuto = new Automobile();
oggettoAuto.accendi();
oggettoAuto.accelera(30); // in km/h
oggettoAuto.marcia = 5;
System.out.println(oggettoAuto.velocita);
System.out.println(oggettoAuto.marcia);
...
55
56
57
58
59
60
61
62
63
64
65
66
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
SINTASSI - Esempio
Costruire una classe Scatola, che contiene 3 campi interi al suo interno.
Giocarci un po'.
class Scatola{
int v1;
int v2;
int v3;
void stampati(){
...
}
int totale(){
...
}
Scatola sommati(Scatola altra){
...
}
// svuota, etc.
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Campi globali: il modificatore static
Campi di classe o d'istanza?
CLASSE
membri
static
OGGETTO1
membri
d'istanza
OGGETTO2
membri
d'istanza
OGGETTO3
membri
d'istanza
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
class Automobile{
double velocita = 0;
static int numeroMarce = 5;
...
}
1
2
3
4
5
6
7
8
i membri static sono unici per la classe
per tutti gli altri, esiste copia per ogni istanza
Campi globali: il modificatore static
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Incapsulamento
i membri di un oggetto sono liberamente visibili all'interno,
ma blindati all'esterno (salvo opportuni permessi)
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Incapsulamento
i membri di un oggetto sono liberamente visibili all'interno,
ma blindati all'esterno (salvo opportuni permessi)
Modificatori di accesso
• public
• protected
• (default modifier)
• private
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Incapsulamento
i membri di un oggetto sono liberamente visibili all'interno,
ma blindati all'esterno (salvo opportuni permessi)
Costruttori
class Automobile{
Automobile(){
...
}
...
}
1
2
3
4
5
6
7
8
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Incapsulamento
S_0 S_1 S_2 S_3 S_4 S_5
costruzione evoluzione
S_A S_B S_C
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Incapsulamento
Creare una classe Rettangolo con base e altezza.
Proteggere i campi.
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Ereditarietà
è possibile derivare nuove classi da quelle già definite, generando
una gerarchia di classi
Permette di modellare il legame:
GENERALE particolare
esempio:
AUTOMOBILE fuoristrada
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Ereditarietà
SINTASSI
class Fuoristrada extends Automobile{
...
}
1
2
3
4
5
6
7
8
• così si ereditano tutti* i campi e metodi della classe padre
• riutilizzo del codice
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
CLASSE
PADRE
Automobile
Ereditarietà
CLASSE
FIGLIA
Fuoristrada
CLASSE
FIGLIA
Sportiva
ereditarietà è relazione tra classi (tipi),
non tra oggetti
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Ereditarietà - esercizio
Realizzare una struttura ereditaria con le classi di una Rubrica:
• Contatto (super-classe)
• Persona (sotto-classe)
• Azienda (sotto-classe)
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Polimorfismo
oggetti di tipi diversi possono essere trattati in una maniera uguale,
considerando un sovra-tipo comune
Dunque un oggetto può avere più forme (più tipi)
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
Polimorfismo
class Benzinaio {
void rifornisci(Automobile a){
...
}
}
...
Fuoristrada f=new Fuoristrada();
Spyder s=new Spyder();
b.rifornisci(f);
b.rifornisci(s);
...
class Fuoristrada extends Automobile{
...
}
class Spyder extends Automobile{
...
}
class Automobile{
...
}
Automobile.java
Fuoristrada.java
Spyder.java
Benzinaio.java
altra classe
www.webturing.net
Thank You – Q & A
ezio.sperduto@webturing.net
linkedin.com/in/sperduto/
tiny.cc/codegarden
Iscriviti al gruppo Linkedin!
Mini Corso Java 4h (per principianti)
www.webturing.net
ezio sperduto
Mini Corso Java 4h (per principianti)
End

More Related Content

Similar to Mini Corso Java - Parte 2

Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 
Javascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webJavascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webRoberto Messora
 
Automatizzare tutto con Azure Resource Manager
Automatizzare tutto con Azure Resource ManagerAutomatizzare tutto con Azure Resource Manager
Automatizzare tutto con Azure Resource ManagerVito Flavio Lorusso
 
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02Alberto Pasca
 
PowerMock TDD User Group Milano
PowerMock TDD User Group MilanoPowerMock TDD User Group Milano
PowerMock TDD User Group MilanoMassimo Groppelli
 
Real Spring Aop Recipes For Your Everyday Job
Real Spring Aop Recipes For Your Everyday JobReal Spring Aop Recipes For Your Everyday Job
Real Spring Aop Recipes For Your Everyday JobMassimiliano Dessì
 
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitNon solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitMaurizio Delmonte
 
javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - TigerMatteo Baccan
 
Lezione 09 - Abstract Factory
Lezione 09 - Abstract FactoryLezione 09 - Abstract Factory
Lezione 09 - Abstract FactoryMarco Bianchi
 
Lezione design patterns 2011 (Peron)
Lezione design patterns 2011 (Peron)Lezione design patterns 2011 (Peron)
Lezione design patterns 2011 (Peron)lukebonham
 
Corso pratico di C# - 2013
Corso pratico di C# - 2013Corso pratico di C# - 2013
Corso pratico di C# - 2013Matteo Valoriani
 
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con ScalaFranco Lombardo
 
Scala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéScala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéEdmondo Porcu
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDDotNetCampus
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsMarcello Teodori
 

Similar to Mini Corso Java - Parte 2 (20)

Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 
Javascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webJavascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il web
 
Automatizzare tutto con Azure Resource Manager
Automatizzare tutto con Azure Resource ManagerAutomatizzare tutto con Azure Resource Manager
Automatizzare tutto con Azure Resource Manager
 
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
 
Usare Knockout JS
Usare Knockout JSUsare Knockout JS
Usare Knockout JS
 
PowerMock TDD User Group Milano
PowerMock TDD User Group MilanoPowerMock TDD User Group Milano
PowerMock TDD User Group Milano
 
Real Spring Aop Recipes For Your Everyday Job
Real Spring Aop Recipes For Your Everyday JobReal Spring Aop Recipes For Your Everyday Job
Real Spring Aop Recipes For Your Everyday Job
 
Java lezione1
Java lezione1Java lezione1
Java lezione1
 
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitNon solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
 
Spring 2.5
Spring 2.5Spring 2.5
Spring 2.5
 
javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - Tiger
 
Lezione 09 - Abstract Factory
Lezione 09 - Abstract FactoryLezione 09 - Abstract Factory
Lezione 09 - Abstract Factory
 
Lezione design patterns 2011 (Peron)
Lezione design patterns 2011 (Peron)Lezione design patterns 2011 (Peron)
Lezione design patterns 2011 (Peron)
 
Corso pratico di C# - 2013
Corso pratico di C# - 2013Corso pratico di C# - 2013
Corso pratico di C# - 2013
 
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con Scala
 
Javascript Unit Testing
Javascript Unit TestingJavascript Unit Testing
Javascript Unit Testing
 
Scala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéScala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perché
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa Struts
 

Mini Corso Java - Parte 2

  • 2. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Regalo Turing • sconto del 50% • solo per i corsi JAVA BASE e JAVA EE • solo per i partecipanti di questo mini-corso • solo per i corsi ON-LINE Contattare direttamente: • amministrazione@webturing.net • ezio.sperduto@webturing.net con codice promozione: JAVA-4H-2021 ONLINE ONLINE
  • 3. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Programmazione Object Oriented prevede Classi e Oggetti meccanismi come: • incapsulamento • ereditarietà • polimorfismo costrutti astratti modularità progettazione/emulazione modello reale
  • 4. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) idea di automobile (la classe)
  • 5. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) idea di automobile (la classe) automobili reali – gli oggetti
  • 6. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) CLASSE o il tipo o la categoria o lo stampo di creazione OGGETTO o le istanze o gli elementi dalla classe à istanziamo gli oggetti i programmatori Java sono costruttori di classi poi da queste staccheremo gli oggetti
  • 7. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) SINTASSI - Dichiarazione class NOME_CLASSE{ ------ CAMPO X ------ ------ CAMPO Y ------ ------ CAMPO Z ------ ------ METODO A ------ ------ METODO B ------ ------ METODO C ------ } 1 2 3 4 5 6 7 8 9 10 11 12 il costrutto class è il contenitore dei membri della classe: campi, metodi, etc.
  • 8. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) SINTASSI - Dichiarazione class Automobile{ boolean accesa = false; double velocita = 0; int marcia = 1; void accendi(){ accesa=true; } ... } 1 2 3 4 5 6 7 8 9 10 11 12 i campi con i dati, rappresentano lo stato dell'oggetto i metodi sono le "capacità di agire"
  • 9. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) SINTASSI - Istanziazione Automobile oggettoAuto = new Automobile(); • usiamo il costrutto new -> viene riservata la memoria per l'oggetto, e inizializzati i suoi campi • creiamo una variabile di tipo Automobile • le assegnamo un nuovo oggetto appena costruito • la variabile è di tipo object-reference: un contenitore o puntatore all'istanza Come costruiamo un'automobile?
  • 10. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Dot-Notation Come usiamo i membri (campi e metodi) al suo interno? ... Automobile oggettoAuto = new Automobile(); oggettoAuto.accendi(); oggettoAuto.accelera(30); // in km/h oggettoAuto.marcia = 5; System.out.println(oggettoAuto.velocita); System.out.println(oggettoAuto.marcia); ... 55 56 57 58 59 60 61 62 63 64 65 66
  • 11. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) SINTASSI - Esempio Costruire una classe Scatola, che contiene 3 campi interi al suo interno. Giocarci un po'. class Scatola{ int v1; int v2; int v3; void stampati(){ ... } int totale(){ ... } Scatola sommati(Scatola altra){ ... } // svuota, etc. } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
  • 12. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Campi globali: il modificatore static Campi di classe o d'istanza? CLASSE membri static OGGETTO1 membri d'istanza OGGETTO2 membri d'istanza OGGETTO3 membri d'istanza
  • 13. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) class Automobile{ double velocita = 0; static int numeroMarce = 5; ... } 1 2 3 4 5 6 7 8 i membri static sono unici per la classe per tutti gli altri, esiste copia per ogni istanza Campi globali: il modificatore static
  • 14. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Incapsulamento i membri di un oggetto sono liberamente visibili all'interno, ma blindati all'esterno (salvo opportuni permessi)
  • 15. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Incapsulamento i membri di un oggetto sono liberamente visibili all'interno, ma blindati all'esterno (salvo opportuni permessi) Modificatori di accesso • public • protected • (default modifier) • private
  • 16. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Incapsulamento i membri di un oggetto sono liberamente visibili all'interno, ma blindati all'esterno (salvo opportuni permessi) Costruttori class Automobile{ Automobile(){ ... } ... } 1 2 3 4 5 6 7 8
  • 17. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Incapsulamento S_0 S_1 S_2 S_3 S_4 S_5 costruzione evoluzione S_A S_B S_C
  • 18. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Incapsulamento Creare una classe Rettangolo con base e altezza. Proteggere i campi.
  • 19. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Ereditarietà è possibile derivare nuove classi da quelle già definite, generando una gerarchia di classi Permette di modellare il legame: GENERALE particolare esempio: AUTOMOBILE fuoristrada
  • 20. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Ereditarietà SINTASSI class Fuoristrada extends Automobile{ ... } 1 2 3 4 5 6 7 8 • così si ereditano tutti* i campi e metodi della classe padre • riutilizzo del codice
  • 21. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) CLASSE PADRE Automobile Ereditarietà CLASSE FIGLIA Fuoristrada CLASSE FIGLIA Sportiva ereditarietà è relazione tra classi (tipi), non tra oggetti
  • 22. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Ereditarietà - esercizio Realizzare una struttura ereditaria con le classi di una Rubrica: • Contatto (super-classe) • Persona (sotto-classe) • Azienda (sotto-classe)
  • 23. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Polimorfismo oggetti di tipi diversi possono essere trattati in una maniera uguale, considerando un sovra-tipo comune Dunque un oggetto può avere più forme (più tipi)
  • 24. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) Polimorfismo class Benzinaio { void rifornisci(Automobile a){ ... } } ... Fuoristrada f=new Fuoristrada(); Spyder s=new Spyder(); b.rifornisci(f); b.rifornisci(s); ... class Fuoristrada extends Automobile{ ... } class Spyder extends Automobile{ ... } class Automobile{ ... } Automobile.java Fuoristrada.java Spyder.java Benzinaio.java altra classe
  • 25. www.webturing.net Thank You – Q & A ezio.sperduto@webturing.net linkedin.com/in/sperduto/ tiny.cc/codegarden Iscriviti al gruppo Linkedin! Mini Corso Java 4h (per principianti)
  • 26. www.webturing.net ezio sperduto Mini Corso Java 4h (per principianti) End