Java ? Sì, grazie Scopo del corso

Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Java ? Sì, grazie
• Il linguaggio di Internet ?
• Portabilità su qualunque piattaforma (non
solo calcolatori): “It works everywhere”
• Supporto e disponibilità di strumenti, librerie e
documentazione garantiti
• Object-oriented “puro” e “moderno”
• Costante evoluzione
Fondamenti di Programmazione
Scopo del corso
• Il corso ha lo scopo di trattare i fondamenti
della programmazione, usando il linguaggio
Java come strumento, pertanto:
¾ si tratteranno solo gli aspetti fondamentali del
linguaggio
¾ si utilizzerà la piattaforma SE (Standard
Edition) adatta allo sviluppo di applicazioni su
Personal Computer
Fondamenti di Programmazione
Primi passi con Java
1
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Cos’è la programmazione ?
• La realizzazione di un programma comprende:
– L’analisi del problema da risolvere
– Il progetto delle strutture dati e degli algoritmi per
risolverlo
– La codifica delle strutture e degli algoritmi
progettati in un linguaggio di programmazione
– La documentazione del codice prodotto
– La verifica e validazione del codice prodotto
– La manutenzione del codice prodotto
Fondamenti di Programmazione
Cosa non è la
programmazione ?
• La programmazione non è solo “la scrittura di
codice”: prima la testa poi la tastiera !
• La programmazione non è “il lavoro degli
informatici”: l’ingegnere informatico può
svolgere svariati ruoli professionali, in alcuni
dei quali l’attività di programmazione (e in
particolare la scrittura di codice) non è
predominante
Fondamenti di Programmazione
Primi passi con Java
2
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Perché imparare a
programmare ?
• La necessità di affrontare problemi di
programmazione è presente in qualunque area
dell’Ingegneria dell’Informazione (Elettronica,
Informatica, Telecomunicazioni, Automazione)
• Un ingegnere dell’area dell’Informazione DEVE saper
programmare (anche se non fa il “programmatore” a
tempo pieno)
• Saper programmare è un notevole valore aggiunto
per un professionista in qualunque area
dell’Ingegneria (e non solo)
Fondamenti di Programmazione
Roadmap
• 0. Primi passi con Java
¾ Introduzione alla tecnologia Java
Fondamenti di Programmazione
Primi passi con Java
3
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
La “tecnologia Java”
• Con il termine “Java technology” si fa
riferimento a due concetti ben distinti:
¾ Un linguaggio di programmazione
¾ Un insieme di piattaforme/tecnologie che
offrono strumenti e permettono l’utilizzo di
programmi scritti in Java in diverse situazioni
(dalle applicazioni Web ai cellulari)
Fondamenti di Programmazione
Le piattaforme Java: SE
• Java SE (Standard Edition): piattaforma base
destinata alla realizzazione di applicazioni
"stand-alone" su calcolatori convenzionali e
simili
• Due componenti principali
– JRE (Java Runtime Environment): strumenti per
l’esecuzione di programmi Java già sviluppati
– JDK (Java Development Kit): strumenti base per
lo sviluppo di programmi (include JRE)
Fondamenti di Programmazione
Primi passi con Java
4
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Le piattaforme Java: SE
Fondamenti di Programmazione
Altre piattaforme/tecnologie
Java
• Java EE (Enterprise Edition): piattaforma
molto estesa per applicazioni client-server
operanti in rete (web e non solo)
• Java ME (Micro Edition): piattaforma ridotta
per applicazioni su dispositivi dalle risorse
limitate (cellulari, palmari, …)
• Java FX: tecnologia molto recente orientata a
scripting e dispositivi mobili
Fondamenti di Programmazione
Primi passi con Java
5
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Altre piattaforme/tecnologie
Java
• Java Embedded: varianti di Java SE e Java
ME per applicazioni embedded (ovvero
“nascoste” dentro dispositivi di ogni genere
dalle stampanti alle automobili)
• Java Card: versione ridottissima per Smart
Card
• Java TV
• Java DB
Fondamenti di Programmazione
Evoluzione di Java SE
• 1996: JDK 1.0
• 1997: JDK 1.1
• 1998: Java 2 (SDK 1.2)
• 1999: J2SE 1.3 (SDK 1.3)
• 2002: J2SE 1.4 (SDK 1.4)
• 2004: J2SE (1.)5.0 (JDK 5.0) – “Tiger”
• Dicembre 2006: Java SE 6 (JDK 6)
• Luglio 2011: Java 7 (JDK 7)
Fondamenti di Programmazione
Primi passi con Java
6
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Evoluzione di Java SE
• Le variazioni introdotte nelle versioni
da 1.2 a 1.4 non hanno riguardato gli aspetti
fondamentali del linguaggio trattati nel corso
• La versione 1.5 ha introdotto variazioni significative
anche su aspetti fondamentali (che non sono state
ancora recepite in tutti i contesti applicativi)
• La versione 6 non introduce variazioni sostanziali
• La versione 7 introduce alcune variazioni limitate
• Il materiale presentato nei lucidi fa riferimento alle
versioni 5-6 (con indicazioni sulle differenze rispetto
alle versioni precedenti ed alla versione 7)
Fondamenti di Programmazione
Roadmap
• 0. Primi passi con Java
¾ Introduzione alla tecnologia Java
¾ Il primo programma Java
Fondamenti di Programmazione
Primi passi con Java
7
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Il primo programma Java
public class Buongiorno
{
public static void main (String args[])
args[])
{
System.out.println
("Buongiorno!");
System.out.println("Buongiorno!");
}
}
Fondamenti di Programmazione
Il primo programma Java
• E’ costituito da una sola classe la cui
definizione consiste del solo metodo main
• L’esecuzione di qualunque applicazione Java
stand-alone coincide con l’esecuzione del
metodo main di una classe
• Il metodo main in questo esempio è costituito
da una sola istruzione di stampa a video
Fondamenti di Programmazione
Primi passi con Java
8
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Il primo programma Java
Parola riservata (modificatore Parola riservata che precede
di accesso alla classe)
la definizione di una classe
Nome della classe
public class Buongiorno
{
public static void main (String args[])
args[])
{
System.out.println
("Buongiorno!");
System.out.println("Buongiorno!");
}
}
Graffe che racchiudono la definizione della
classe (body o corpo della classe)
Definizione del metodo main
Fondamenti di Programmazione
Il metodo main
Intestazione (detta anche signature o firma) del metodo main
public static void main (String args[])
args[])
{
System.out.println
("Buongiorno!") ;
System.out.println("Buongiorno!")
}
Graffe che racchiudono
il corpo (body) del metodo
Unica istruzione contenuta
nel corpo del metodo main
Fine istruzione
Fondamenti di Programmazione
Primi passi con Java
9
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Il metodo main
Parola riservata (modificatore
di accesso al metodo)
Parola riservata (livello
di definizione del metodo)
Nome del metodo
Lista argomenti (o parametri)
Parola riservata (tipo
formali del metodo main
restituito del metodo)
public static void main (String args[])
args[])
{
System.out.println
System.out.println ( "Buongiorno!" ) ;
}
Invocazione del metodo predefinito
println per la stampa a video
Lista argomenti (o parametri)
attuali passati al metodo println
Fondamenti di Programmazione
Dalla carta al calcolatore:
modello base
• Produzione del codice sorgente (file .java –
editor qualunque)
• Compilazione del codice sorgente: produzione
del bytecode (file .class – compilatore)
• Esecuzione = interpretazione del bytecode da
parte di un interprete software (JVM: Java
Virtual Machine)
Fondamenti di Programmazione
Primi passi con Java
10
Modulo di Fondamenti di Programmazione
Who is who
PROGRAMMATORE
codice sorgente
P. Baroni - P.Martinelli - M. Rossi - A. Viola
comprensione del problema
conoscenze tecniche
creatività
COMPILATORE
codice intermedio (bytecode)
INTERPRETE (JVM)
chiamate di sistema
SISTEMA
OPERATIVO
Parte indipendente
Parte dipendente
dalla piattaforma
hardware/software di base
instruction set
HARDWARE
Fondamenti di Programmazione
Roadmap
• 0. Primi passi con Java
¾ Introduzione alla tecnologia Java
¾ Il primo programma Java
¾ Uso di più classi
Fondamenti di Programmazione
Primi passi con Java
11
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Il secondo programma Java
• Un programma Java è costituito da una o
(normalmente) più classi
• La capacità di progettare e sviluppare
programmi di media complessità costituiti da
più classi è l’obiettivo formativo finale del
corso da raggiungere per passi successivi
• Cominciamo con un semplice esempio
Fondamenti di Programmazione
Il secondo programma Java
public class Ossequioso
{
public void saluta ()
{
System.out.println
("Buongiorno!");
System.out.println("Buongiorno!");
}
}
Fondamenti di Programmazione
Primi passi con Java
12
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
La classe Ossequioso
Parola riservata (modificatore Parola riservata che precede
di accesso alla classe)
la definizione di una classe
Nome della classe
public class Ossequioso
{
public void saluta ()
{
System.out.println
("Buongiorno!");
System.out.println("Buongiorno!");
}
}
Graffe che racchiudono la definizione della
classe (body o corpo della classe)
Definizione del metodo saluta
Fondamenti di Programmazione
Il metodo saluta
Intestazione (detta anche signature o firma) del metodo saluta
public void saluta ()
{
System.out.println
("Buongiorno!") ;
System.out.println("Buongiorno!")
}
Graffe che racchiudono
il corpo (body) del metodo
Unica istruzione contenuta
nel corpo del metodo saluta
Fine istruzione
Fondamenti di Programmazione
Primi passi con Java
13
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Il metodo saluta
Parola riservata (modificatore
di accesso al metodo)
Il livello di definizione
del metodo è implicito
Nome del metodo
Parola riservata (tipo
restituito del metodo)
Lista (vuota) di argomenti
(o parametri) formali
del metodo saluta
public
void saluta ()
{
System.out.println
System.out.println ( "Buongiorno!");
}
Invocazione del metodo predefinito Lista argomenti (o parametri)
println per la stampa a video
attuali passati al metodo println
Fondamenti di Programmazione
La classe Ossequioso
• La classe Ossequioso (come la maggior
parte delle classi Java) non è pensata per
essere eseguita da sola (non ha main
program)
• La sua definizione consiste di un solo metodo
di nome saluta
• La classe Ossequioso dovrà essere utilizzata
insieme ad (almeno) un’altra classe
Fondamenti di Programmazione
Primi passi con Java
14
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
La classe Ossequioso
• Normalmente una classe rappresenta il prototipo
generico di una famiglia di oggetti simili
• La (per ora fin troppo semplice) classe Ossequioso
rappresenta il prototipo di tutti gli oggetti capaci di
trasmettere un saluto (per ora sempre lo stesso)
• Un elemento concreto di una classe viene detto
istanza della classe
• La seconda classe del programma dovrà creare
un’istanza di Ossequioso ed invocare su di essa
l’esecuzione del metodo saluta
Fondamenti di Programmazione
Il secondo programma Java
public class BuongiornoMain
{
public static void main (String [ ] args)
args)
{
Ossequioso maggiordomo;
maggiordomo = new Ossequioso();
maggiordomo.saluta();
}
}
Fondamenti di Programmazione
Primi passi con Java
15
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
La classe BuongiornoMain
Parola riservata (modificatore Parola riservata che precede
di accesso alla classe)
la definizione di una classe
Nome della classe
public class BuongiornoMain
{
public static void main (String args[])
args[])
{
Ossequioso maggiordomo;
maggiordomo = new Ossequioso();
maggiordomo.saluta();
}
}
Graffe che racchiudono la definizione della
classe (body o corpo della classe)
Definizione del metodo main
Fondamenti di Programmazione
La classe BuongiornoMain
• La classe BuongiornoMain contiene il solo
metodo main e può quindi essere "eseguita"
• Il metodo main di BuongiornoMain richiede
l’esistenza della classe Ossequioso e
rappresenta uno dei più tipici schemi di
utilizzo di una classe da parte di un’altra
Fondamenti di Programmazione
Primi passi con Java
16
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
La classe BuongiornoMain
public static void main (String args[])
args[])
{
Definizione di una variabile
Ossequioso maggiordomo;
Assegnazione della variabile
maggiordomo = new Ossequioso();
maggiordomo.saluta();
Invocazione del
metodo saluta
}
Fondamenti di Programmazione
Definizione di una variabile
Ossequioso maggiordomo ;
Tipo della variabile
Nome della variabile
• Viene definita una variabile di nome maggiordomo e di
tipo Ossequioso
• La definizione di una variabile di tipo Ossequioso non
porta a creare automaticamente un’istanza di Ossequioso
• La variabile maggiordomo per ora e’ solo una locazione di
memoria priva di contenuto e predisposta per contenere un
riferimento ad un oggetto di tipo Ossequioso
Fondamenti di Programmazione
Primi passi con Java
17
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Assegnazione
maggiordomo
=
new Ossequioso();
Nome della variabile che Operatore di
assegnazione
“riceve” l’assegnazione
Valore assegnato alla variabile
• Viene assegnato un valore alla variabile maggiordomo
• Il valore assegnato e’ il risultato dell’
dell’uso dell’
dell’operatore
new
Fondamenti di Programmazione
L’operatore new
new Ossequioso();
Parola riservata che indica la
Nome di
costruzione di un nuovo oggetto una classe
Lista degli argomenti utilizzati
per la costruzione
(in questo caso nessuno)
• L’oggetto costruito e’ istanza di una classe
e ne rispecchia la definizione
• Tecnicamente l’operatore new invoca uno dei
costruttori della classe passandogli una lista di
argomenti
• Se il programmatore non definisce costruttori ne
esiste uno di “default” che fa il minimo indispensabile
Fondamenti di Programmazione
Primi passi con Java
18
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Costruzione di un oggetto
CODICE
MEMORIA
maggiordomo
Ossequioso maggiordomo;
null
maggiordomo=new Ossequioso();
saluta()
{ ... }
Istanza della classe Ossequioso
riferita dalla variabile maggiordomo
Fondamenti di Programmazione
Invocazione di un metodo
maggiordomo.saluta();
Nome di una variabile che
riferisce un oggetto
Lista argomenti
Separatore Nome di un
attuali passati al
metodo definito
metodo
nella classe di cui
l’oggetto e’ istanza
• A partire da una variabile che riferisce un oggetto si può
invocare un metodo dell’oggetto
• La definizione del metodo è quella stabilita nella classe di
cui l’oggetto è istanza
• La lista degli argomenti attuali è vuota come lo era quella
degli argomenti formali
Fondamenti di Programmazione
Primi passi con Java
19
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Invocazione di un metodo
CODICE
MEMORIA
maggiordomo
...
maggiordomo.saluta();
}
saluta()
{ ... }
Fondamenti di Programmazione
Roadmap
• 0. Primi passi con Java
¾ Introduzione alla tecnologia Java
¾ Il primo programma Java
¾ Uso di più classi
¾ Attributi e costruttori
Fondamenti di Programmazione
Primi passi con Java
20
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Definizione di attributi
costanti
• Non è consigliabile “cablare” dentro il codice il
valore prefissato di un dato
• Nella classe Ossequioso il dato “cablato” nel
codice è il saluto “Buongiorno!”
• E’ preferibile separare la definizione del saluto
dall’azione di presentarlo a video
• Questo richiede la definizione di un attributo
costante della classe Ossequioso
Fondamenti di Programmazione
Definizione di attributi
costanti
public class Ossequioso
{
private final String MIO_SALUTO = "Buongiorno!";
public void saluta ()
{
System.out.println
(MIO_SALUTO);
System.out.println(MIO_SALUTO);
}
}
Fondamenti di Programmazione
Primi passi con Java
21
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Definizione di attributi
costanti
Parola riservata (modificatore
Tipo dell’attributo Nome dell’attributo
di accesso all’attributo)
private final
String MIO_SALUTO = "Buongiorno!" ;
Parola riservata (indica
che l’attributo è immutabile)
Il livello di definizione
dell’attributo è implicito
Operatore di
assegnazione
Valore assegnato
all’attributo costante
Fondamenti di Programmazione
Definizione di attributi
variabili
• La classe Ossequioso nella versione fin qui
presentata è di limitatissima utilità poiche tutte le
sue istanze sarebbero di fatto uguali
• La classe Ossequioso sarebbe un po’ più utile se
fosse possibile creare diverse istanze di Ossequioso
ciascuna capace di presentare un saluto diverso (p.e.
in una diversa lingua)
• E’ necessario che Ossequioso abbia un attributo
variabile anziche’ di valore predefinito
Fondamenti di Programmazione
Primi passi con Java
22
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Definizione di attributi
variabili
public class Ossequioso
{
private String mioSaluto;
mioSaluto;
public void saluta ()
{
System.out.println
(mioSaluto);
System.out.println(
mioSaluto);
}
}
Fondamenti di Programmazione
Definizione di attributi
variabili
Parola riservata (modificatore
Tipo dell’attributo Nome dell’attributo
di accesso all’attributo)
private
L’assenza della parola
final indica che
l’attributo e’ variabile
String mioSaluto ;
Il livello di definizione
dell’attributo è implicito
Fondamenti di Programmazione
Primi passi con Java
23
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Nota terminologica
• Gli attributi (attributes) vengono anche
chiamati campi (fields) o data members della
classe
• Un attributo costante viene normalmente
chiamato costante
• Un attributo variabile viene normalmente
chiamato attributo
Fondamenti di Programmazione
Inizializzazione degli
attributi
• La versione appena presentata della classe
Ossequioso è incompleta: si definisce un
attributo variabile ma non il suo valore
• L’assegnazione dei valori agli attributi avviene
normalmente nella fase di costruzione di un
oggetto ad opera di metodi speciali detti
metodi costruttori
• Dobbiamo quindi dotare la classe Ossequioso
di un costruttore
Fondamenti di Programmazione
Primi passi con Java
24
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Metodi costruttori
public class Ossequioso
{
private String mioSaluto;
mioSaluto;
public Ossequioso (String
(String cosaDevoDire)
cosaDevoDire)
{
mioSaluto = cosaDevoDire;
cosaDevoDire;
}
public void saluta ()
{
System.out.println
(mioSaluto);
System.out.println(
mioSaluto);
}
}
Fondamenti di Programmazione
Il costruttore
Parola riservata (modificatore
di accesso al metodo costruttore)
Il nome del metodo uguale
al nome della classe indica che
si tratta di un costruttore
Lista di argomenti
(o parametri) formali
del costruttore
public Ossequioso (String
(String cosaDevoDire)
cosaDevoDire)
{
mioSaluto = cosaDevoDire;
cosaDevoDire;
}
All’attributo mioSaluto viene assegnato il valore dell’argomento cosaDevoDire
Fondamenti di Programmazione
Primi passi con Java
25
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Invocazione del costruttore
• A questo punto la classe Ossequioso è
completa ma è richiesta una modifica della
classe BuongiornoMain che rifletta il nuovo
modo di costruire le istanze della classe
Ossequioso
• Anziché usare il costruttore predefinito
usiamo quello definito da noi che richiede di
ricevere un argomento di tipo String
Fondamenti di Programmazione
Invocazione del costruttore
public class BuongiornoMain
{
private final static String SALUTO_ITA =
"Buongiorno!";
public static void main (String args[])
args[])
{
Ossequioso maggiordomo;
maggiordomo = new Ossequioso(SALUTO_ITA);
maggiordomo.saluta();
}
}
Fondamenti di Programmazione
Primi passi con Java
26
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Invocazione del costruttore
Definizione attributo costante
public class BuongiornoMain
{
private final static String SALUTO_ITA =
"Buongiorno!";
public static void main (String args[])
args[])
{
Ossequioso maggiordomo;
maggiordomo = new Ossequioso(SALUTO_ITA);
maggiordomo.saluta();
}
Invocazione del costruttore passando
come argomento attuale l’attributo
SALUTO_ITA
}
Fondamenti di Programmazione
Costruzione di un oggetto
CODICE
MEMORIA
SALUTO_ITA
...SALUTO_ITA="Buongiorno!"
...
Buongiorno!
maggiordomo
Ossequioso maggiordomo;
null
maggiordomo=
new Ossequioso(SALUTO_ITA);
Fondamenti di Programmazione
Primi passi con Java
27
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Costruzione di un oggetto
CODICE
BuongiornoMain
MEMORIA
SALUTO_ITA
...
Buongiorno!
maggiordomo=
new Ossequioso(SALUTO_ITA);
maggiordomo
null
CODICE
Ossequioso
…Ossequioso(String
…Ossequioso(String cosaDevoDire)
cosaDevoDire)
{
mioSaluto
...saluta()
{ ... }
mioSaluto=cosaDevoDire;
mioSaluto=cosaDevoDire;
}
Fondamenti di Programmazione
Invocazione del metodo
CODICE
BuongiornoMain
MEMORIA
SALUTO_ITA
...
Buongiorno!
maggiordomo.saluta()
maggiordomo
null
CODICE
Ossequioso
…saluta()
{
mioSaluto
...saluta()
{ ... }
System.out.println(
System.out.println(mioSaluto);
mioSaluto);
}
Fondamenti di Programmazione
Primi passi con Java
28
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Roadmap
• 0. Primi passi con Java
¾ Introduzione alla tecnologia Java
¾ Il primo programma Java
¾ Uso di più classi
¾ Attributi e costruttori
¾ Uso di più istanze
Fondamenti di Programmazione
Due maggiordomi
• Un solo maggiordomo che ci ossequia non ci
basta più
• Creare due maggiordomi richiede di
modificare solo la classe BuongiornoMain:
avremo quindi due istanze distinte della
classe Ossequioso
Fondamenti di Programmazione
Primi passi con Java
29
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Due maggiordomi
public class BuongiornoMain
{
private final static String SALUTO_ITA = "Buongiorno!";
private final static String SALUTO_FRA = "Bonjour
!";
"Bonjour!";
public static void main (String args[])
args[])
{
Ossequioso maggiordomoIta,
maggiordomoIta, maggiordomoFra;
maggiordomoFra;
maggiordomoIta = new Ossequioso(SALUTO_ITA);
maggiordomoFra = new Ossequioso(SALUTO_FRA);
maggiordomoIta.saluta();
maggiordomoIta.saluta();
maggiordomoFra.saluta();
maggiordomoFra.saluta();
}
E’ possibile definire piu’ variabili
}
dello stesso tipo su un’unica riga
separando i nomi con virgole
Fondamenti di Programmazione
Due maggiordomi
public class BuongiornoMain
{
private final static String SALUTO_ITA = "Buongiorno!";
private final static String SALUTO_FRA = "Bonjour
!";
"Bonjour!";
public static void main (String args[])
args[])
{
Ossequioso maggiordomoIta,
maggiordomoIta, maggiordomoFra;
maggiordomoFra;
maggiordomoIta = new Ossequioso(SALUTO_ITA);
maggiordomoFra = new Ossequioso(SALUTO_FRA);
maggiordomoIta.saluta();
maggiordomoIta.saluta();
maggiordomoFra.saluta();
maggiordomoFra.saluta();
}
}
Fondamenti di Programmazione
Primi passi con Java
30
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Due maggiordomi
SALUTO_ITA
SALUTO_FRA
Buongiorno!
maggiordomoIta
null
Bonjour!
maggiordomoFra
null
Fondamenti di Programmazione
Due maggiordomi
public class BuongiornoMain
{
private final static String SALUTO_ITA = "Buongiorno!";
private final static String SALUTO_FRA = "Bonjour
!";
"Bonjour!";
public static void main (String args[])
args[])
{
Ossequioso maggiordomoIta,
maggiordomoIta, maggiordomoFra;
maggiordomoFra;
maggiordomoIta = new Ossequioso(SALUTO_ITA);
maggiordomoFra = new Ossequioso(SALUTO_FRA);
maggiordomoIta.saluta();
maggiordomoIta.saluta();
maggiordomoFra.saluta();
maggiordomoFra.saluta();
}
}
Fondamenti di Programmazione
Primi passi con Java
31
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Due maggiordomi
SALUTO_ITA
SALUTO_FRA
Buongiorno!
maggiordomoIta
null
Bonjour!
maggiordomoFra
null
mioSaluto
...saluta()
{System.out.println
System.out.println
(mioSaluto);
mioSaluto); }
Fondamenti di Programmazione
Due maggiordomi
public class BuongiornoMain
{
private final static String SALUTO_ITA = "Buongiorno!";
private final static String SALUTO_FRA = "Bonjour
!";
"Bonjour!";
public static void main (String args[])
args[])
{
Ossequioso maggiordomoIta,
maggiordomoIta, maggiordomoFra;
maggiordomoFra;
maggiordomoIta = new Ossequioso(SALUTO_ITA);
maggiordomoFra = new Ossequioso(SALUTO_FRA);
maggiordomoIta.saluta();
maggiordomoIta.saluta();
maggiordomoFra.saluta();
maggiordomoFra.saluta();
}
}
Fondamenti di Programmazione
Primi passi con Java
32
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Due maggiordomi
SALUTO_ITA
SALUTO_FRA
Buongiorno!
maggiordomoIta
null
Bonjour!
maggiordomoFra
null
mioSaluto
mioSaluto
...saluta()
{System.out.println
System.out.println
(mioSaluto);
mioSaluto); }
...saluta()
{System.out.println
System.out.println
(mioSaluto);
mioSaluto); }
Fondamenti di Programmazione
Due maggiordomi
public class BuongiornoMain
{
private final static String SALUTO_ITA = "Buongiorno!";
private final static String SALUTO_FRA = "Bonjour
!";
"Bonjour!";
public static void main (String args[])
args[])
{
Ossequioso maggiordomoIta,
maggiordomoIta, maggiordomoFra;
maggiordomoFra;
maggiordomoIta = new Ossequioso(SALUTO_ITA);
maggiordomoFra = new Ossequioso(SALUTO_FRA);
maggiordomoIta.saluta();
maggiordomoIta.saluta();
maggiordomoFra.saluta();
maggiordomoFra.saluta();
}
}
Fondamenti di Programmazione
Primi passi con Java
33
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Due maggiordomi
SALUTO_ITA
SALUTO_FRA
Buongiorno!
maggiordomoIta
null
Bonjour!
maggiordomoFra
null
mioSaluto
mioSaluto
...saluta()
{System.out.println
System.out.println
(mioSaluto);
mioSaluto); }
...saluta()
{System.out.println
System.out.println
(mioSaluto);
mioSaluto); }
Fondamenti di Programmazione
Due maggiordomi
public class BuongiornoMain
{
private final static String SALUTO_ITA = "Buongiorno!";
private final static String SALUTO_FRA = "Bonjour
!";
"Bonjour!";
public static void main (String args[])
args[])
{
Ossequioso maggiordomoIta,
maggiordomoIta, maggiordomoFra;
maggiordomoFra;
maggiordomoIta = new Ossequioso(SALUTO_ITA);
maggiordomoFra = new Ossequioso(SALUTO_FRA);
maggiordomoIta.saluta();
maggiordomoIta.saluta();
maggiordomoFra.saluta();
maggiordomoFra.saluta();
}
}
Fondamenti di Programmazione
Primi passi con Java
34
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Due maggiordomi
SALUTO_ITA
SALUTO_FRA
Buongiorno!
maggiordomoIta
Bonjour!
maggiordomoFra
null
null
mioSaluto
mioSaluto
...saluta()
{System.out.println
System.out.println
(mioSaluto);
mioSaluto); }
...saluta()
{System.out.println
System.out.println
(mioSaluto);
mioSaluto); }
Fondamenti di Programmazione
Roadmap
• 0. Primi passi con Java
¾ Introduzione alla tecnologia Java
¾ Il primo programma Java
¾ Uso di più classi
¾ Attributi e costruttori
¾ Uso di più istanze
¾ Tirando le somme
Fondamenti di Programmazione
Primi passi con Java
35
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Tirando le somme:
la classe con il metodo main
• Un programma Java stand-alone e’ costituito
da almeno una classe che contiene il metodo
main e normalmente da una o più altre classi
• La classe che contiene il metodo main
normalmente non contiene molto altro di più
e il suo scopo è dare l’avvio all’esecuzione
• La classe che contiene il metodo main non è
concepita per essere istanziata
Fondamenti di Programmazione
Tirando le somme:
le classi istanziabili
• Esistono classi (come Ossequioso) il cui scopo è
rappresentare il prototipo generico di molteplici
oggetti concreti (detti istanze) aventi
caratteristiche generali simili ma proprietà
specifiche distinte
• La creazione di istanze avviene utilizzando
l’operatore new
• La definizione della classe specifica le operazioni
che possono essere eseguite dalle istanze della
classe
Fondamenti di Programmazione
Primi passi con Java
36
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Definizione di una classe
• La definizione di una classe comprende la
definizione di attributi e la definizione di
metodi
• Se la classe è concepita per essere
istanziabile normalmente tra i metodi vi sono
uno o più metodi costruttori (identificabili
perché hanno lo stesso nome della classe)
Fondamenti di Programmazione
Definizione di una classe
Definizione di attributi (due in questo caso)
public class BuongiornoMain
{
private final static String SALUTO_ITA = "Buongiorno!";
private final static String SALUTO_FRA = "Bonjour
!";
"Bonjour!";
public static void main (String args[])
args[])
{
Ossequioso maggiordomoIta,
maggiordomoIta, maggiordomoFra;
maggiordomoFra;
maggiordomoIta = new Ossequioso(SALUTO_ITA);
maggiordomoFra = new Ossequioso(SALUTO_FRA);
maggiordomoIta.saluta();
maggiordomoIta.saluta();
maggiordomoFra.saluta();
maggiordomoFra.saluta();
}
}
Definizione di metodi (uno solo in questo caso)
Fondamenti di Programmazione
Primi passi con Java
37
Modulo di Fondamenti di Programmazione
P. Baroni - P.Martinelli - M. Rossi - A. Viola
Definizione di una classe
Definizione di attributi (uno in questo caso)
public class Ossequioso
{
private String mioSaluto;
mioSaluto;
Uno dei metodi e’ un costruttore
public Ossequioso (String
(String cosaDevoDire)
cosaDevoDire)
{
mioSaluto = cosaDevoDire;
cosaDevoDire;
}
public void saluta ()
{
System.out.println
(mioSaluto);
System.out.println(
mioSaluto);
}
}
Definizione di metodi (due in questo caso)
Fondamenti di Programmazione
Uno schema tipico
• La classe BuongiornoMain illustra uno schema
generico utilizzato da molti programmi Java: il
metodo main crea istanze di una o più altre
classi e quindi invoca i loro metodi
• Tutti gli aspetti introdotti in questo primo
esempio richiedono approfondimenti e
completamenti che saranno forniti in modo
sistematico nel seguito del corso
Fondamenti di Programmazione
Primi passi con Java
38