java ? sì, grazie -...

38
Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi - A. Viola Primi passi con Java 1 Fondamenti di Programmazione Java ? Sì, grazie Java ? Sì, grazie Il linguaggio di Internet ? Il linguaggio di Internet ? Portabilità su qualunque piattaforma (non Portabilità su qualunque piattaforma (non solo calcolatori): “ solo calcolatori): “ It It works works everywhere everywhere” Supporto e disponibilità di strumenti, librerie e Supporto e disponibilità di strumenti, librerie e documentazione garantiti documentazione garantiti Object Object- oriented oriented “puro” e “moderno” “puro” e “moderno” Costante evoluzione Costante evoluzione Fondamenti di Programmazione Scopo del corso Scopo 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 linguaggio linguaggio si utilizzerà la piattaforma SE (Standard si utilizzerà la piattaforma SE (Standard Edition Edition) adatta allo sviluppo di applicazioni su ) adatta allo sviluppo di applicazioni su Personal Computer Personal Computer

Upload: duongkien

Post on 18-Feb-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 2: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 3: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 4: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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)

Page 5: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 6: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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)

Page 7: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 8: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 9: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 10: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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))

Page 11: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 12: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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!"); }}

} }

Page 13: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 14: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 15: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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();}}

} }

Page 16: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 17: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 18: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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)

Page 19: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 20: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 21: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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); }}

} }

Page 22: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 23: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 24: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 25: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 26: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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();

}}

}}

Page 27: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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!

Page 28: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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!

Page 29: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 30: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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(); }}

}}

Page 31: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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(); }}

}}

Page 32: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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(); }}

}}

Page 33: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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(); }}

}}

Page 34: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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(); }}

}}

Page 35: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 36: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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

Page 37: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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)

Page 38: Java ? Sì, grazie - tritone.ing.unibs.ittritone.ing.unibs.it/fp/Slides/VersionePDF/0-PrimiPassi.pdf · Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi

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