java ? sì, grazie -...
TRANSCRIPT
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 1
Fondamenti di Programmazione
Java ? Sì, grazieJava ? Sì, grazie
•• Il linguaggio di Internet ? Il linguaggio di Internet ?
•• Portabilità su qualunque piattaforma (non Portabilità su qualunque piattaforma (non solo calcolatori): “solo calcolatori): “ItIt worksworks everywhereeverywhere””
•• Supporto e disponibilità di strumenti, librerie e Supporto e disponibilità di strumenti, librerie e documentazione garantitidocumentazione garantiti
•• ObjectObject--orientedoriented “puro” e “moderno”“puro” e “moderno”
•• Costante evoluzioneCostante evoluzione
Fondamenti di Programmazione
Scopo del corsoScopo del corso
•• Il corso ha lo scopo di trattare i fondamenti Il corso ha lo scopo di trattare i fondamenti della programmazione, usando il linguaggio della programmazione, usando il linguaggio Java come strumento, pertanto:Java come strumento, pertanto:
si tratteranno solo gli aspetti fondamentali del si tratteranno solo gli aspetti fondamentali del linguaggiolinguaggio
si utilizzerà la piattaforma SE (Standard si utilizzerà la piattaforma SE (Standard EditionEdition) adatta allo sviluppo di applicazioni su ) adatta allo sviluppo di applicazioni su Personal Computer Personal Computer
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 2
Fondamenti di Programmazione
Cos’è la programmazione ?Cos’è la programmazione ?
•• La realizzazione di un programma comprende:La realizzazione di un programma comprende:–– L’analisi del problema da risolvereL’analisi del problema da risolvere
–– Il progetto delle strutture dati e degli algoritmi per Il progetto delle strutture dati e degli algoritmi per risolverlorisolverlo
–– La codifica delle strutture e degli algoritmi La codifica delle strutture e degli algoritmi progettati in un linguaggio di programmazioneprogettati in un linguaggio di programmazione
–– La documentazione del codice prodottoLa documentazione del codice prodotto
–– La verifica e La verifica e validazionevalidazione del codice prodottodel codice prodotto
–– La manutenzione del codice prodottoLa manutenzione del codice prodotto
Fondamenti di Programmazione
Cosa non è la Cosa non è la programmazione ?programmazione ?
•• La programmazione non è solo “la scrittura di La programmazione non è solo “la scrittura di codice”: prima la testa poi la tastiera !codice”: prima la testa poi la tastiera !
•• La programmazione non è “il lavoro degli La programmazione non è “il lavoro degli informatici”: l’ingegnere informatico può informatici”: l’ingegnere informatico può svolgere svariati ruoli professionali, in alcuni svolgere svariati ruoli professionali, in alcuni dei quali l’attività di programmazione (e in dei quali l’attività di programmazione (e in particolare la scrittura di codice) non è particolare la scrittura di codice) non è predominantepredominante
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 3
Fondamenti di Programmazione
Perché imparare a Perché imparare a programmare ?programmare ?
•• La necessità di affrontare problemi di La necessità di affrontare problemi di programmazione è presente in qualunque area programmazione è presente in qualunque area dell’Ingegneria dell’Informazione (Elettronica, dell’Ingegneria dell’Informazione (Elettronica, Informatica, Telecomunicazioni, Automazione)Informatica, Telecomunicazioni, Automazione)
•• Un ingegnere dell’area dell’Informazione DEVE saper Un ingegnere dell’area dell’Informazione DEVE saper programmare (anche se non fa il “programmatore” a programmare (anche se non fa il “programmatore” a tempo pieno)tempo pieno)
•• Saper programmare è un notevole valore aggiunto Saper programmare è un notevole valore aggiunto per un professionista in qualunque area per un professionista in qualunque area dell’Ingegneria (e non solo)dell’Ingegneria (e non solo)
Fondamenti di Programmazione
RoadmapRoadmap
•• 0. Primi passi con Java0. Primi passi con JavaIntroduzione alla tecnologia JavaIntroduzione alla tecnologia Java
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 4
Fondamenti di Programmazione
La “tecnologia Java”La “tecnologia Java”
•• Con il termine “Java Con il termine “Java technologytechnology” si fa ” si fa riferimento a due concetti ben distinti:riferimento a due concetti ben distinti:
Un linguaggio di programmazione Un linguaggio di programmazione
Un insieme di piattaforme/tecnologie che Un insieme di piattaforme/tecnologie che offrono strumenti e permettono l’utilizzo di offrono strumenti e permettono l’utilizzo di programmi scritti in Java in diverse situazioni programmi scritti in Java in diverse situazioni (dalle applicazioni Web ai cellulari)(dalle applicazioni Web ai cellulari)
Fondamenti di Programmazione
Le piattaforme Java: SELe piattaforme Java: SE
•• Java SE (Standard Java SE (Standard EditionEdition): piattaforma base ): piattaforma base destinata alla realizzazione di applicazioni destinata alla realizzazione di applicazioni "stand"stand--alone" su calcolatori convenzionali e alone" su calcolatori convenzionali e similisimili
•• Due componenti principaliDue componenti principali–– JRE (Java JRE (Java RuntimeRuntime EnvironmentEnvironment): strumenti per ): strumenti per
l’esecuzione di programmi Java già sviluppatil’esecuzione di programmi Java già sviluppati
–– JDK (Java JDK (Java DevelopmentDevelopment Kit): strumenti base per Kit): strumenti base per lo sviluppo di programmi (include JRE)lo sviluppo di programmi (include JRE)
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 5
Fondamenti di Programmazione
Le piattaforme Java: SELe piattaforme Java: SE
Fondamenti di Programmazione
Altre piattaforme/tecnologie Altre piattaforme/tecnologie JavaJava
•• Java EE (Java EE (EnterpriseEnterprise EditionEdition): piattaforma ): piattaforma molto estesa per applicazioni molto estesa per applicazioni clientclient--server server operanti in rete (web e non solo)operanti in rete (web e non solo)
•• Java ME (Java ME (MicroMicro EditionEdition): piattaforma ridotta ): piattaforma ridotta per applicazioni su dispositivi dalle risorse per applicazioni su dispositivi dalle risorse limitate (cellulari, palmari, …)limitate (cellulari, palmari, …)
•• Java FX: tecnologia molto recente orientata a Java FX: tecnologia molto recente orientata a scriptingscripting e dispositivi mobilie dispositivi mobili
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 6
Fondamenti di Programmazione
Altre piattaforme/tecnologie Altre piattaforme/tecnologie Java Java
•• Java Java EmbeddedEmbedded: varianti di Java SE e Java : varianti di Java SE e Java ME per applicazioni ME per applicazioni embeddedembedded (ovvero (ovvero “nascoste” dentro dispositivi di ogni genere “nascoste” dentro dispositivi di ogni genere dalle stampanti alle automobili)dalle stampanti alle automobili)
•• Java Card: versione ridottissima per Smart Java Card: versione ridottissima per Smart CardCard
•• Java TVJava TV
•• Java DB Java DB
Fondamenti di Programmazione
Evoluzione di Java SEEvoluzione di Java SE
•• 1996: JDK 1.01996: JDK 1.0
•• 1997: JDK 1.11997: JDK 1.1
•• 1998: Java 2 (SDK 1.2)1998: Java 2 (SDK 1.2)
•• 1999: J2SE 1.3 (SDK 1.3)1999: J2SE 1.3 (SDK 1.3)
•• 2002: J2SE 1.4 (SDK 1.4)2002: J2SE 1.4 (SDK 1.4)
•• 2004: J2SE (1.)5.0 (JDK 5.0) 2004: J2SE (1.)5.0 (JDK 5.0) –– ““TigerTiger””
•• Dicembre 2006: Java SE 6 (JDK 6)Dicembre 2006: Java SE 6 (JDK 6)
•• Luglio 2011: Java 7 (JDK 7)Luglio 2011: Java 7 (JDK 7)
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 7
Fondamenti di Programmazione
Evoluzione di Java SEEvoluzione di Java SE
•• Le variazioni introdotte nelle versioni Le variazioni introdotte nelle versioni da 1.2 a 1.4 non hanno riguardato gli aspetti da 1.2 a 1.4 non hanno riguardato gli aspetti fondamentali del linguaggio trattati nel corsofondamentali del linguaggio trattati nel corso
•• La versione 1.5 ha introdotto variazioni significative La versione 1.5 ha introdotto variazioni significative anche su aspetti fondamentali (che non sono state anche su aspetti fondamentali (che non sono state ancora recepite in tutti i contesti applicativi)ancora recepite in tutti i contesti applicativi)
•• La versione 6 non introduce variazioni sostanzialiLa versione 6 non introduce variazioni sostanziali
•• La versione 7 introduce alcune variazioni limitateLa versione 7 introduce alcune variazioni limitate
•• Il materiale presentato nei lucidi fa riferimento alle Il materiale presentato nei lucidi fa riferimento alle versioni 5versioni 5--6 (con indicazioni sulle differenze rispetto 6 (con indicazioni sulle differenze rispetto alle versioni precedenti ed alla versione 7) alle versioni precedenti ed alla versione 7)
Fondamenti di Programmazione
RoadmapRoadmap
•• 0. Primi passi con Java0. Primi passi con JavaIntroduzione alla tecnologia JavaIntroduzione alla tecnologia Java
Il primo programma JavaIl primo programma Java
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 8
Fondamenti di Programmazione
Il primo programma JavaIl primo programma Java
public class Buongiornopublic class Buongiorno
{{
public public staticstatic voidvoid mainmain ((StringString argsargs[])[])
{{
System.out.System.out.printlnprintln("Buongiorno!");("Buongiorno!");
}}
}}
Fondamenti di Programmazione
Il primo programma JavaIl primo programma Java
•• E’ costituito da una sola classe la cui E’ costituito da una sola classe la cui definizione consiste del solo metodo definizione consiste del solo metodo main main
•• L’esecuzione di qualunque applicazione Java L’esecuzione di qualunque applicazione Java standstand--alone coincide con l’esecuzione del alone coincide con l’esecuzione del metodo metodo mainmain di una classedi una classe
•• Il metodo Il metodo mainmain in questo esempio è costituito in questo esempio è costituito da una sola istruzione di stampa a videoda una sola istruzione di stampa a video
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 9
Fondamenti di Programmazione
Il primo programma JavaIl primo programma Java
public class Buongiornopublic class Buongiorno
{{
public public staticstatic voidvoid mainmain ((StringString argsargs[])[])
{{
System.out.System.out.printlnprintln("Buongiorno!");("Buongiorno!");
}}
}}
Parola riservata che precede la definizione di una classe
Nome della classe
Graffe che racchiudono la definizione della classe (body o corpo della classe)
Parola riservata (modificatore di accesso alla classe)
Definizione del metodo main
Fondamenti di Programmazione
Il metodo Il metodo mainmain
public public staticstatic voidvoid mainmain ((StringString argsargs[])[])
{{
System.out.System.out.printlnprintln("Buongiorno!") ;("Buongiorno!") ;
}}
Graffe che racchiudono il corpo (body) del metodo
Intestazione (detta anche signature o firma) del metodo main
Unica istruzione contenuta nel corpo del metodo main
Fine istruzione
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 10
Fondamenti di Programmazione
Il metodo Il metodo mainmain
public public staticstatic voidvoid mainmain ((StringString argsargs[])[])
{{
System.out.System.out.printlnprintln ( "Buongiorno!" ) ;( "Buongiorno!" ) ;
}}
Parola riservata (modificatore di accesso al metodo)
Parola riservata (livello di definizione del metodo)
Parola riservata (tiporestituito del metodo)
Nome del metodoLista argomenti (o parametri) formali del metodo main
Invocazione del metodo predefinitoprintln per la stampa a video
Lista argomenti (o parametri) attuali passati al metodo println
Fondamenti di Programmazione
Dalla carta al calcolatore: Dalla carta al calcolatore: modello basemodello base
•• Produzione del codice sorgente (file .java Produzione del codice sorgente (file .java ––editor qualunque)editor qualunque)
•• Compilazione del codice sorgente: produzione Compilazione del codice sorgente: produzione del del bytecodebytecode (file .class (file .class –– compilatore)compilatore)
•• Esecuzione = interpretazione del Esecuzione = interpretazione del bytecodebytecode da da parte di un interprete software (JVM: Java parte di un interprete software (JVM: Java VirtualVirtual MachineMachine))
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 11
Fondamenti di Programmazione
WhoWho isis whowho
HARDWARE
SISTEMA OPERATIVO
INTERPRETE (JVM)
COMPILATORE
PROGRAMMATOREcomprensione del problema
conoscenze tecnichecreativitàcodice sorgente
codice intermedio (bytecode)
instruction set
chiamate di sistema Parte dipendente dalla piattaforma hardware/software di base
Parte indipendente
Fondamenti di Programmazione
RoadmapRoadmap
•• 0. Primi passi con Java0. Primi passi con JavaIntroduzione alla tecnologia JavaIntroduzione alla tecnologia Java
Il primo programma JavaIl primo programma Java
Uso di più classiUso di più classi
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 12
Fondamenti di Programmazione
Il secondo programma JavaIl secondo programma Java
•• Un programma Java è costituito da una o Un programma Java è costituito da una o (normalmente) più classi (normalmente) più classi
•• La capacità di progettare e sviluppare La capacità di progettare e sviluppare programmi di media complessità costituiti da programmi di media complessità costituiti da più classi è l’obiettivo formativo finale del più classi è l’obiettivo formativo finale del corso da raggiungere per passi successivicorso da raggiungere per passi successivi
•• Cominciamo con un semplice esempioCominciamo con un semplice esempio
Fondamenti di Programmazione
Il secondo programma JavaIl secondo programma Java
public class Ossequiosopublic class Ossequioso{{
public public voidvoid saluta () saluta () {{
System.out.System.out.printlnprintln("Buongiorno!"); ("Buongiorno!"); }}
} }
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 13
Fondamenti di Programmazione
La classe OssequiosoLa classe Ossequioso
public class Ossequiosopublic class Ossequioso
{{
public public voidvoid saluta () saluta () {{
System.out.System.out.printlnprintln("Buongiorno!"); ("Buongiorno!"); }}
}}
Parola riservata che precede la definizione di una classe
Nome della classe
Graffe che racchiudono la definizione della classe (body o corpo della classe)
Parola riservata (modificatore di accesso alla classe)
Definizione del metodo saluta
Fondamenti di Programmazione
Il metodo salutaIl metodo saluta
public public voidvoid saluta ()saluta ()
{{
System.out.System.out.printlnprintln("Buongiorno!") ;("Buongiorno!") ;
}}
Graffe che racchiudono il corpo (body) del metodo
Intestazione (detta anche signature o firma) del metodo saluta
Unica istruzione contenuta nel corpo del metodo saluta
Fine istruzione
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 14
Fondamenti di Programmazione
Il metodo salutaIl metodo saluta
public public voidvoid saluta () saluta () {{
System.out.System.out.printlnprintln ( "Buongiorno!"); ( "Buongiorno!"); }}
Parola riservata (modificatore di accesso al metodo)
Il livello di definizione del metodo è implicito
Parola riservata (tiporestituito del metodo)
Nome del metodo
Lista (vuota) di argomenti (o parametri) formali del metodo saluta
Invocazione del metodo predefinitoprintln per la stampa a video
Lista argomenti (o parametri) attuali passati al metodo println
Fondamenti di Programmazione
La classe OssequiosoLa classe Ossequioso
•• La classe La classe OssequiosoOssequioso (come la maggior (come la maggior parte delle classi Java) non è pensata per parte delle classi Java) non è pensata per essere eseguita da sola (non ha essere eseguita da sola (non ha mainmainprogram)program)
•• La sua definizione consiste di un solo metodo La sua definizione consiste di un solo metodo di nome di nome salutasaluta
•• La classe La classe OssequiosoOssequioso dovrà essere utilizzata dovrà essere utilizzata insieme ad (almeno) un’altra classeinsieme ad (almeno) un’altra classe
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 15
Fondamenti di Programmazione
La classe OssequiosoLa classe Ossequioso
•• Normalmente una classe rappresenta il prototipo Normalmente una classe rappresenta il prototipo generico di una famiglia di oggetti similigenerico di una famiglia di oggetti simili
•• La (per ora fin troppo semplice) classe Ossequioso La (per ora fin troppo semplice) classe Ossequioso rappresenta il prototipo di tutti gli oggetti capaci di rappresenta il prototipo di tutti gli oggetti capaci di trasmettere un saluto (per ora sempre lo stesso)trasmettere un saluto (per ora sempre lo stesso)
•• Un elemento concreto di una classe viene detto Un elemento concreto di una classe viene detto istanza della classeistanza della classe
•• La seconda classe del programma dovrà creare La seconda classe del programma dovrà creare un’istanza di Ossequioso ed invocare su di essa un’istanza di Ossequioso ed invocare su di essa l’esecuzione del metodo salutal’esecuzione del metodo saluta
Fondamenti di Programmazione
Il secondo programma JavaIl secondo programma Java
public class public class BuongiornoMainBuongiornoMain{{
public public staticstatic voidvoid mainmain ((StringString [ ] [ ] argsargs) ) {{
Ossequioso maggiordomo;Ossequioso maggiordomo;
maggiordomo = new Ossequioso();maggiordomo = new Ossequioso();
maggiordomo.saluta();maggiordomo.saluta();}}
} }
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 16
Fondamenti di Programmazione
La classe La classe BuongiornoMainBuongiornoMain
public class public class BuongiornoMainBuongiornoMain
{{public public staticstatic voidvoid mainmain ((StringString argsargs[])[]){{
Ossequioso maggiordomo;Ossequioso maggiordomo;maggiordomo = new Ossequioso();maggiordomo = new Ossequioso();maggiordomo.saluta();maggiordomo.saluta();
}}
}}
Parola riservata che precede la definizione di una classe Nome della classe
Graffe che racchiudono la definizione della classe (body o corpo della classe)
Parola riservata (modificatore di accesso alla classe)
Definizione del metodo main
Fondamenti di Programmazione
La classe La classe BuongiornoMainBuongiornoMain
•• La classe La classe BuongiornoMainBuongiornoMain contiene il solo contiene il solo metodo metodo mainmain e può quindi essere "eseguita"e può quindi essere "eseguita"
•• Il metodo Il metodo mainmain di di BuongiornoMainBuongiornoMain richiede richiede l’esistenza della classe Ossequioso e l’esistenza della classe Ossequioso e rappresenta uno dei più tipici schemi di rappresenta uno dei più tipici schemi di utilizzo di una classe da parte di un’altrautilizzo di una classe da parte di un’altra
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 17
Fondamenti di Programmazione
La classe La classe BuongiornoMainBuongiornoMain
public public staticstatic voidvoid mainmain ((StringString argsargs[])[]){{
Ossequioso maggiordomo;Ossequioso maggiordomo;
maggiordomo = new Ossequioso();maggiordomo = new Ossequioso();
maggiordomo.saluta();maggiordomo.saluta();
}}
Definizione di una variabile
Assegnazione della variabile
Invocazione del metodo saluta
Fondamenti di Programmazione
Definizione di una variabileDefinizione di una variabile
Ossequioso maggiordomo ;Ossequioso maggiordomo ;
Tipo della variabile Nome della variabile
•• Viene definita una variabile di nome maggiordomo e di Viene definita una variabile di nome maggiordomo e di tipo Ossequiosotipo Ossequioso
•• La definizione di una variabile di tipo Ossequioso non La definizione di una variabile di tipo Ossequioso non porta porta a a crearecreare automaticamente un’istanza di Ossequioso automaticamente un’istanza di Ossequioso
•• La variabile maggiordomo per ora e’ solo una locazione di La variabile maggiordomo per ora e’ solo una locazione di memoria priva di contenuto e predisposta per contenere un memoria priva di contenuto e predisposta per contenere un riferimento ad un oggetto di tipo Ossequiosoriferimento ad un oggetto di tipo Ossequioso
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 18
Fondamenti di Programmazione
AssegnazioneAssegnazione
maggiordomo = new Ossequioso();maggiordomo = new Ossequioso();
Nome della variabile che “riceve” l’assegnazione
Operatore diassegnazione Valore assegnato alla variabile
•• Viene Viene assegnatoassegnato un un valorevalore allaalla variabilevariabile maggiordomomaggiordomo
•• Il Il valorevalore assegnatoassegnato e’e’ ilil risultatorisultato delldell’’usouso delldell’’operatoreoperatorenewnew
Fondamenti di Programmazione
L’operatoreL’operatore newnew
•• L’oggetto costruito e’ istanza di una classeL’oggetto costruito e’ istanza di una classee ne rispecchia la definizionee ne rispecchia la definizione
•• Tecnicamente l’operatore new invoca uno dei Tecnicamente l’operatore new invoca uno dei costruttori della classe passandogli una lista di costruttori della classe passandogli una lista di argomentiargomenti
•• Se il programmatore non definisce costruttori ne Se il programmatore non definisce costruttori ne esiste uno di “esiste uno di “defaultdefault” che fa il minimo indispensabile ” che fa il minimo indispensabile
new Ossequioso();new Ossequioso();
Parola riservata che indica la costruzione di un nuovo oggetto
Nome di una classe
Lista degli argomenti utilizzatiper la costruzione(in questo caso nessuno)
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 19
Fondamenti di Programmazione
Costruzione di un oggettoCostruzione di un oggetto
Ossequioso maggiordomo;Ossequioso maggiordomo; null
maggiordomomaggiordomo
maggiordomo=new Ossequioso();maggiordomo=new Ossequioso();
Istanza della classe Ossequiosoriferita dalla variabile maggiordomo
saluta(){ ... }
CODICE MEMORIA
Fondamenti di Programmazione
Invocazione di un metodoInvocazione di un metodo
maggiordomo.saluta();maggiordomo.saluta();
Nome di una variabile che riferisce un oggetto
Separatore Nome di un metodo definito nella classe di cui l’oggetto e’ istanza
Lista argomentiattuali passati al metodo
•• A partire da una variabile che riferisce un oggetto si può A partire da una variabile che riferisce un oggetto si può invocare un metodo dell’oggettoinvocare un metodo dell’oggetto
•• La definizione del metodo è quella stabilita nella classe di La definizione del metodo è quella stabilita nella classe di cui l’oggetto è istanza cui l’oggetto è istanza
•• La lista degli argomenti attuali è vuota come lo era quella La lista degli argomenti attuali è vuota come lo era quella degli argomenti formali degli argomenti formali
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 20
Fondamenti di Programmazione
Invocazione di un metodoInvocazione di un metodo
......
maggiordomomaggiordomo
maggiordomo.saluta();maggiordomo.saluta(); saluta(){ ... }
CODICE MEMORIA
}}
Fondamenti di Programmazione
RoadmapRoadmap
•• 0. Primi passi con Java0. Primi passi con JavaIntroduzione alla tecnologia JavaIntroduzione alla tecnologia Java
Il primo programma JavaIl primo programma Java
Uso di più classiUso di più classi
Attributi e costruttoriAttributi e costruttori
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 21
Fondamenti di Programmazione
Definizione di attributi Definizione di attributi costanticostanti
•• Non è consigliabile “cablare” dentro il codice il Non è consigliabile “cablare” dentro il codice il valore prefissato di un datovalore prefissato di un dato
•• Nella classe Ossequioso il dato “cablato” nel Nella classe Ossequioso il dato “cablato” nel codice è il saluto “Buongiorno!”codice è il saluto “Buongiorno!”
•• E’ preferibile separare la definizione del saluto E’ preferibile separare la definizione del saluto dall’azione di presentarlo a videodall’azione di presentarlo a video
•• Questo richiede la definizione di un attributo Questo richiede la definizione di un attributo costante della classe Ossequiosocostante della classe Ossequioso
Fondamenti di Programmazione
Definizione di attributi Definizione di attributi costanticostanti
public class Ossequiosopublic class Ossequioso{{private final private final StringString MIO_SALUTO = "Buongiorno!";MIO_SALUTO = "Buongiorno!";
public public voidvoid saluta () saluta () {{
System.out.System.out.printlnprintln(MIO_SALUTO); (MIO_SALUTO); }}
} }
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 22
Fondamenti di Programmazione
Definizione di attributi Definizione di attributi costanticostanti
Parola riservata (modificatore di accesso all’attributo)
Il livello di definizione dell’attributo è implicito
Operatore diassegnazione
Tipo dell’attributo Nome dell’attributo
private final private final StringString MIO_SALUTO = "Buongiorno!"MIO_SALUTO = "Buongiorno!" ;
Parola riservata (indica che l’attributo è immutabile)
Valore assegnato all’attributo costante
Fondamenti di Programmazione
Definizione di attributi Definizione di attributi variabilivariabili
•• La classe Ossequioso nella versione fin qui La classe Ossequioso nella versione fin qui presentata è di limitatissima utilità presentata è di limitatissima utilità poichepoiche tutte le tutte le sue istanze sarebbero di fatto ugualisue istanze sarebbero di fatto uguali
•• La classe Ossequioso sarebbe un po’ più utile se La classe Ossequioso sarebbe un po’ più utile se fosse possibile creare diverse istanze di Ossequioso fosse possibile creare diverse istanze di Ossequioso ciascuna capace di presentare un saluto diverso (p.e. ciascuna capace di presentare un saluto diverso (p.e. in una diversa lingua)in una diversa lingua)
•• E’ necessario che Ossequioso abbia un attributo E’ necessario che Ossequioso abbia un attributo variabile variabile anziche’anziche’ di valore predefinitodi valore predefinito
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 23
Fondamenti di Programmazione
Definizione di attributi Definizione di attributi variabilivariabili
public class Ossequiosopublic class Ossequioso{{private private StringString mioSalutomioSaluto;;
public public voidvoid saluta () saluta () {{
System.out.System.out.printlnprintln((mioSalutomioSaluto); ); }}
} }
Fondamenti di Programmazione
Definizione di attributi Definizione di attributi variabilivariabili
Parola riservata (modificatore di accesso all’attributo) Tipo dell’attributo Nome dell’attributo
private private StringString mioSalutomioSaluto ;;
L’assenza della parolafinal indica che l’attributo e’ variabile
Il livello di definizione dell’attributo è implicito
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 24
Fondamenti di Programmazione
Nota terminologicaNota terminologica
•• Gli attributi (Gli attributi (attributesattributes) vengono anche ) vengono anche chiamati campi (chiamati campi (fieldsfields) o data ) o data membersmembers della della classeclasse
•• Un attributo costante viene normalmente Un attributo costante viene normalmente chiamato costantechiamato costante
•• Un attributo variabile viene normalmente Un attributo variabile viene normalmente chiamato attributochiamato attributo
Fondamenti di Programmazione
InizializzazioneInizializzazione degli degli attributiattributi
•• La versione appena presentata della classe La versione appena presentata della classe Ossequioso è incompleta: si definisce un Ossequioso è incompleta: si definisce un attributo variabile ma non il suo valoreattributo variabile ma non il suo valore
•• L’assegnazione dei valori agli attributi avviene L’assegnazione dei valori agli attributi avviene normalmente nella fase di costruzione di un normalmente nella fase di costruzione di un oggetto ad opera di metodi speciali detti oggetto ad opera di metodi speciali detti metodi costruttorimetodi costruttori
•• Dobbiamo quindi dotare la classe Ossequioso Dobbiamo quindi dotare la classe Ossequioso di un costruttoredi un costruttore
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 25
Fondamenti di Programmazione
Metodi costruttoriMetodi costruttori
public class Ossequiosopublic class Ossequioso{{private private StringString mioSalutomioSaluto;;
public Ossequioso (public Ossequioso (StringString cosaDevoDirecosaDevoDire)){{mioSalutomioSaluto = = cosaDevoDirecosaDevoDire;;} }
public public voidvoid saluta () saluta () {{
System.out.System.out.printlnprintln((mioSalutomioSaluto); ); }}
} }
Fondamenti di Programmazione
Il costruttoreIl costruttore
public Ossequioso (public Ossequioso (StringString cosaDevoDirecosaDevoDire))
{{mioSalutomioSaluto = = cosaDevoDirecosaDevoDire;;
} }
Parola riservata (modificatore di accesso al metodo costruttore)
Il nome del metodo uguale al nome della classe indica chesi tratta di un costruttore
Lista di argomenti (o parametri) formali del costruttore
All’attributo mioSaluto viene assegnato il valore dell’argomento cosaDevoDire
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 26
Fondamenti di Programmazione
Invocazione del costruttoreInvocazione del costruttore
•• A questo punto la classe Ossequioso è A questo punto la classe Ossequioso è completa ma è richiesta una modifica della completa ma è richiesta una modifica della classe classe BuongiornoMainBuongiornoMain che rifletta il nuovo che rifletta il nuovo modo di costruire le istanze della classe modo di costruire le istanze della classe OssequiosoOssequioso
•• Anziché usare il costruttore predefinito Anziché usare il costruttore predefinito usiamo quello definito da noi che richiede di usiamo quello definito da noi che richiede di ricevere un argomento di tipo ricevere un argomento di tipo StringString
Fondamenti di Programmazione
Invocazione del costruttoreInvocazione del costruttore
public class public class BuongiornoMainBuongiornoMain
{{
private final private final staticstatic StringString SALUTO_ITA = SALUTO_ITA = "Buongiorno!";"Buongiorno!";
public public staticstatic voidvoid mainmain ((StringString argsargs[])[]){{Ossequioso maggiordomo;Ossequioso maggiordomo;maggiordomo = new Ossequioso(SALUTO_ITA);maggiordomo = new Ossequioso(SALUTO_ITA);maggiordomo.saluta();maggiordomo.saluta();
}}
}}
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 27
Fondamenti di Programmazione
Invocazione del costruttoreInvocazione del costruttore
public class public class BuongiornoMainBuongiornoMain
{{
private final private final staticstatic StringString SALUTO_ITA =SALUTO_ITA ="Buongiorno!";"Buongiorno!";
public public staticstatic voidvoid mainmain ((StringString argsargs[])[]){{
Ossequioso maggiordomo;Ossequioso maggiordomo;maggiordomo = new Ossequioso(SALUTO_ITA);maggiordomo = new Ossequioso(SALUTO_ITA);maggiordomo.saluta();maggiordomo.saluta();
}}
}}
Definizione attributo costante
Invocazione del costruttore passandocome argomento attuale l’attributoSALUTO_ITA
Fondamenti di Programmazione
Costruzione di un oggettoCostruzione di un oggetto
...SALUTO_ITA="Buongiorno!"...SALUTO_ITA="Buongiorno!"
......
Ossequioso maggiordomo;Ossequioso maggiordomo;null
maggiordomomaggiordomo
maggiordomo=maggiordomo=new Ossequioso(SALUTO_ITA);new Ossequioso(SALUTO_ITA);
CODICE MEMORIASALUTO_ITASALUTO_ITA
Buongiorno!
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 28
Fondamenti di Programmazione
Costruzione di un oggettoCostruzione di un oggetto
......
null
maggiordomomaggiordomomaggiordomo=maggiordomo=new Ossequioso(SALUTO_ITA);new Ossequioso(SALUTO_ITA);
CODICE BuongiornoMain
MEMORIA
mioSaluto
...saluta(){ ... }
CODICE Ossequioso
…Ossequioso(…Ossequioso(StringString cosaDevoDirecosaDevoDire))
{{
mioSaluto=cosaDevoDiremioSaluto=cosaDevoDire;;
} }
SALUTO_ITASALUTO_ITABuongiorno!
Fondamenti di Programmazione
Invocazione del metodoInvocazione del metodo
......
maggiordomo.saluta()maggiordomo.saluta()
CODICE BuongiornoMain
MEMORIA
CODICE Ossequioso
…saluta()…saluta()
{{
System.out.printlnSystem.out.println((mioSalutomioSaluto););
} }
null
maggiordomomaggiordomo
mioSaluto
...saluta(){ ... }
SALUTO_ITASALUTO_ITABuongiorno!
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 29
Fondamenti di Programmazione
RoadmapRoadmap
•• 0. Primi passi con Java0. Primi passi con JavaIntroduzione alla tecnologia JavaIntroduzione alla tecnologia Java
Il primo programma JavaIl primo programma Java
Uso di più classiUso di più classi
Attributi e costruttoriAttributi e costruttori
Uso di più istanzeUso di più istanze
Fondamenti di Programmazione
Due maggiordomiDue maggiordomi
•• Un solo maggiordomo che ci ossequia non ci Un solo maggiordomo che ci ossequia non ci basta piùbasta più
•• Creare due maggiordomi richiede di Creare due maggiordomi richiede di modificare solo la classe modificare solo la classe BuongiornoMainBuongiornoMain: : avremo quindi due istanze distinte della avremo quindi due istanze distinte della classe Ossequiosoclasse Ossequioso
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 30
Fondamenti di Programmazione
Due maggiordomiDue maggiordomi
public class public class BuongiornoMainBuongiornoMain{{private final private final staticstatic StringString SALUTO_ITA = "Buongiorno!";SALUTO_ITA = "Buongiorno!";private finalprivate final static Stringstatic String SALUTO_FRA = "SALUTO_FRA = "BonjourBonjour!";!";
public public staticstatic voidvoid mainmain ((StringString argsargs[])[]){{Ossequioso Ossequioso maggiordomoItamaggiordomoIta, , maggiordomoFramaggiordomoFra;;
maggiordomoItamaggiordomoIta = new Ossequioso(SALUTO_ITA);= new Ossequioso(SALUTO_ITA);maggiordomoFramaggiordomoFra = new Ossequioso(SALUTO_FRA);= new Ossequioso(SALUTO_FRA);maggiordomoItamaggiordomoIta.saluta();.saluta();maggiordomoFramaggiordomoFra.saluta(); .saluta(); }}
}}E’ possibile definire piu’ variabili dello stesso tipo su un’unica rigaseparando i nomi con virgole
Fondamenti di Programmazione
Due maggiordomiDue maggiordomi
public class public class BuongiornoMainBuongiornoMain{{private final private final staticstatic StringString SALUTO_ITA = "Buongiorno!";SALUTO_ITA = "Buongiorno!";private finalprivate final static Stringstatic String SALUTO_FRA = "SALUTO_FRA = "BonjourBonjour!";!";
public public staticstatic voidvoid mainmain ((StringString argsargs[])[]){{Ossequioso Ossequioso maggiordomoItamaggiordomoIta, , maggiordomoFramaggiordomoFra;;
maggiordomoItamaggiordomoIta = new Ossequioso(SALUTO_ITA);= new Ossequioso(SALUTO_ITA);maggiordomoFramaggiordomoFra = new Ossequioso(SALUTO_FRA);= new Ossequioso(SALUTO_FRA);maggiordomoItamaggiordomoIta.saluta();.saluta();maggiordomoFramaggiordomoFra.saluta(); .saluta(); }}
}}
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 31
Fondamenti di Programmazione
Due maggiordomiDue maggiordomi
null
maggiordomoItamaggiordomoIta
SALUTO_ITASALUTO_ITABuongiorno!
null
maggiordomoFramaggiordomoFra
SALUTO_FRASALUTO_FRABonjour!
Fondamenti di Programmazione
Due maggiordomiDue maggiordomi
public class public class BuongiornoMainBuongiornoMain{{private final private final staticstatic StringString SALUTO_ITA = "Buongiorno!";SALUTO_ITA = "Buongiorno!";private finalprivate final static Stringstatic String SALUTO_FRA = "SALUTO_FRA = "BonjourBonjour!";!";
public public staticstatic voidvoid mainmain ((StringString argsargs[])[]){{Ossequioso Ossequioso maggiordomoItamaggiordomoIta, , maggiordomoFramaggiordomoFra;;
maggiordomoItamaggiordomoIta = new Ossequioso(SALUTO_ITA);= new Ossequioso(SALUTO_ITA);maggiordomoFramaggiordomoFra = new Ossequioso(SALUTO_FRA);= new Ossequioso(SALUTO_FRA);maggiordomoItamaggiordomoIta.saluta();.saluta();maggiordomoFramaggiordomoFra.saluta(); .saluta(); }}
}}
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 32
Fondamenti di Programmazione
Due maggiordomiDue maggiordomi
null
maggiordomoItamaggiordomoIta
SALUTO_ITASALUTO_ITABuongiorno!
null
maggiordomoFramaggiordomoFra
SALUTO_FRASALUTO_FRABonjour!
mioSaluto
...saluta(){System.out.printlnSystem.out.println
((mioSalutomioSaluto);); }
Fondamenti di Programmazione
Due maggiordomiDue maggiordomi
public class public class BuongiornoMainBuongiornoMain{{private final private final staticstatic StringString SALUTO_ITA = "Buongiorno!";SALUTO_ITA = "Buongiorno!";private finalprivate final static Stringstatic String SALUTO_FRA = "SALUTO_FRA = "BonjourBonjour!";!";
public public staticstatic voidvoid mainmain ((StringString argsargs[])[]){{Ossequioso Ossequioso maggiordomoItamaggiordomoIta, , maggiordomoFramaggiordomoFra;;
maggiordomoItamaggiordomoIta = new Ossequioso(SALUTO_ITA);= new Ossequioso(SALUTO_ITA);maggiordomoFramaggiordomoFra = new Ossequioso(SALUTO_FRA);= new Ossequioso(SALUTO_FRA);maggiordomoItamaggiordomoIta.saluta();.saluta();maggiordomoFramaggiordomoFra.saluta(); .saluta(); }}
}}
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 33
Fondamenti di Programmazione
Due maggiordomiDue maggiordomi
null
maggiordomoItamaggiordomoIta
SALUTO_ITASALUTO_ITABuongiorno!
null
maggiordomoFramaggiordomoFra
SALUTO_FRASALUTO_FRABonjour!
mioSaluto
...saluta(){System.out.printlnSystem.out.println
((mioSalutomioSaluto);); }
mioSaluto
...saluta(){System.out.printlnSystem.out.println
((mioSalutomioSaluto);); }
Fondamenti di Programmazione
Due maggiordomiDue maggiordomi
public class public class BuongiornoMainBuongiornoMain{{private final private final staticstatic StringString SALUTO_ITA = "Buongiorno!";SALUTO_ITA = "Buongiorno!";private finalprivate final static Stringstatic String SALUTO_FRA = "SALUTO_FRA = "BonjourBonjour!";!";
public public staticstatic voidvoid mainmain ((StringString argsargs[])[]){{Ossequioso Ossequioso maggiordomoItamaggiordomoIta, , maggiordomoFramaggiordomoFra;;
maggiordomoItamaggiordomoIta = new Ossequioso(SALUTO_ITA);= new Ossequioso(SALUTO_ITA);maggiordomoFramaggiordomoFra = new Ossequioso(SALUTO_FRA);= new Ossequioso(SALUTO_FRA);maggiordomoItamaggiordomoIta.saluta();.saluta();maggiordomoFramaggiordomoFra.saluta(); .saluta(); }}
}}
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 34
Fondamenti di Programmazione
Due maggiordomiDue maggiordomi
null
maggiordomoItamaggiordomoIta
SALUTO_ITASALUTO_ITABuongiorno!
null
maggiordomoFramaggiordomoFra
SALUTO_FRASALUTO_FRABonjour!
mioSaluto
...saluta(){System.out.printlnSystem.out.println
((mioSalutomioSaluto);); }
mioSaluto
...saluta(){System.out.printlnSystem.out.println
((mioSalutomioSaluto);); }
Fondamenti di Programmazione
Due maggiordomiDue maggiordomi
public class public class BuongiornoMainBuongiornoMain{{private final private final staticstatic StringString SALUTO_ITA = "Buongiorno!";SALUTO_ITA = "Buongiorno!";private finalprivate final static Stringstatic String SALUTO_FRA = "SALUTO_FRA = "BonjourBonjour!";!";
public public staticstatic voidvoid mainmain ((StringString argsargs[])[]){{Ossequioso Ossequioso maggiordomoItamaggiordomoIta, , maggiordomoFramaggiordomoFra;;
maggiordomoItamaggiordomoIta = new Ossequioso(SALUTO_ITA);= new Ossequioso(SALUTO_ITA);maggiordomoFramaggiordomoFra = new Ossequioso(SALUTO_FRA);= new Ossequioso(SALUTO_FRA);maggiordomoItamaggiordomoIta.saluta();.saluta();maggiordomoFramaggiordomoFra.saluta(); .saluta(); }}
}}
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 35
Fondamenti di Programmazione
Due maggiordomiDue maggiordomi
null
maggiordomoItamaggiordomoIta
SALUTO_ITASALUTO_ITABuongiorno!
null
maggiordomoFramaggiordomoFra
SALUTO_FRASALUTO_FRABonjour!
mioSaluto
...saluta(){System.out.printlnSystem.out.println
((mioSalutomioSaluto);); }
mioSaluto
...saluta(){System.out.printlnSystem.out.println
((mioSalutomioSaluto);); }
Fondamenti di Programmazione
RoadmapRoadmap
•• 0. Primi passi con Java0. Primi passi con JavaIntroduzione alla tecnologia JavaIntroduzione alla tecnologia Java
Il primo programma JavaIl primo programma Java
Uso di più classiUso di più classi
Attributi e costruttoriAttributi e costruttori
Uso di più istanzeUso di più istanze
Tirando le sommeTirando le somme
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 36
Fondamenti di Programmazione
Tirando le somme: Tirando le somme: la classe con il metodo la classe con il metodo mainmain
•• Un programma Java standUn programma Java stand--alone e’ costituito alone e’ costituito da almeno una classe che contiene il metodo da almeno una classe che contiene il metodo mainmain e normalmente da una o più altre classie normalmente da una o più altre classi
•• La classe che contiene il metodo La classe che contiene il metodo mainmainnormalmente non contiene molto altro di più normalmente non contiene molto altro di più e il suo scopo è dare l’avvio all’esecuzione e il suo scopo è dare l’avvio all’esecuzione
•• La classe che contiene il metodo La classe che contiene il metodo mainmain non è non è concepita per essere concepita per essere istanziataistanziata
Fondamenti di Programmazione
Tirando le somme: Tirando le somme: le classi le classi istanziabiliistanziabili
•• Esistono classi (come Ossequioso) il cui scopo è Esistono classi (come Ossequioso) il cui scopo è rappresentare il prototipo generico di molteplici rappresentare il prototipo generico di molteplici oggetti concreti (detti istanze) aventi oggetti concreti (detti istanze) aventi caratteristiche generali simili ma proprietà caratteristiche generali simili ma proprietà specifiche distintespecifiche distinte
•• La creazione di istanze avviene utilizzando La creazione di istanze avviene utilizzando l’operatore newl’operatore new
•• La definizione della classe specifica le operazioni La definizione della classe specifica le operazioni che possono essere eseguite dalle istanze della che possono essere eseguite dalle istanze della classeclasse
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 37
Fondamenti di Programmazione
Definizione di una classeDefinizione di una classe
•• La definizione di una classe comprende la La definizione di una classe comprende la definizione di attributi e la definizione di definizione di attributi e la definizione di metodimetodi
•• Se la classe è concepita per essere Se la classe è concepita per essere istanziabileistanziabile normalmente tra i metodi vi sono normalmente tra i metodi vi sono uno o più metodi costruttori (identificabili uno o più metodi costruttori (identificabili perché hanno lo stesso nome della classe)perché hanno lo stesso nome della classe)
Fondamenti di Programmazione
Definizione di una classe Definizione di una classe
public class public class BuongiornoMainBuongiornoMain{{private final private final staticstatic StringString SALUTO_ITA = "Buongiorno!";SALUTO_ITA = "Buongiorno!";private finalprivate final static Stringstatic String SALUTO_FRA = "SALUTO_FRA = "BonjourBonjour!";!";
public public staticstatic voidvoid mainmain ((StringString argsargs[])[]){{Ossequioso Ossequioso maggiordomoItamaggiordomoIta, , maggiordomoFramaggiordomoFra;;
maggiordomoItamaggiordomoIta = new Ossequioso(SALUTO_ITA);= new Ossequioso(SALUTO_ITA);maggiordomoFramaggiordomoFra = new Ossequioso(SALUTO_FRA);= new Ossequioso(SALUTO_FRA);maggiordomoItamaggiordomoIta.saluta();.saluta();maggiordomoFramaggiordomoFra.saluta(); .saluta(); }}
}}
Definizione di metodi (uno solo in questo caso)
Definizione di attributi (due in questo caso)
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola
Primi passi con Java 38
Fondamenti di Programmazione
Definizione di una classeDefinizione di una classe
public class Ossequiosopublic class Ossequioso{{private private StringString mioSalutomioSaluto;;
public Ossequioso (public Ossequioso (StringString cosaDevoDirecosaDevoDire)){{mioSalutomioSaluto = = cosaDevoDirecosaDevoDire;;} }
public public voidvoid saluta () saluta () {{
System.out.System.out.printlnprintln((mioSalutomioSaluto); ); }}
} }
Definizione di attributi (uno in questo caso)
Definizione di metodi (due in questo caso)
Uno dei metodi e’ un costruttore
Fondamenti di Programmazione
Uno schema tipicoUno schema tipico
•• La classe La classe BuongiornoMainBuongiornoMain illustra uno schema illustra uno schema generico utilizzato da molti programmi Java: il generico utilizzato da molti programmi Java: il metodo metodo mainmain crea istanze di una o più altre crea istanze di una o più altre classi e quindi invoca i loro metodiclassi e quindi invoca i loro metodi
•• Tutti gli aspetti introdotti in questo primo Tutti gli aspetti introdotti in questo primo esempio richiedono approfondimenti e esempio richiedono approfondimenti e completamenti che saranno forniti in modo completamenti che saranno forniti in modo sistematico nel seguito del corsosistematico nel seguito del corso