Il linguaggio JAVA Caratteristiche principali di Java

Il linguaggio JAVA
Linguaggio orientato agli oggetti, con caratteristiche simili ai linguaggi C e C++.
Progettato per essere semplice, portabile su piattaforme hardware e sistemi operativi diversi.
Permette di sviluppare
– programmi stand-alone detti applications (ad esempio il browser Hot Java)
– applets, programmi pensati per essere integrati nelle pagine HTML
scaricati da World Wide Web
eseguiti da un browser Web sulla macchina cliente
Sviluppato da Sun Microsystems all’inizio degli anni ’90.
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 1
JAVA
Caratteristiche principali di Java
Indipendenza dalla piattaforma capacità di “muoversi” da un calcolatore ad un altro in modo semplice.
Nel codice sorgente
– dati primitivi sono definiti con dimensioni consistenti su tutte le piattaforme
– librerie (classi) per le funzioni di base
Nel codice binario
– Bytecodes, codifica “intermedia” tra codice sorgente e codice eseguibile, interpretata sulla macchina client
Programma orientato agli oggetti
Organizzazione del software
Programmazione modulare
Riutilizzo del codice
Semplicità
Rinuncia ai puntatori
Stringhe ed array sono oggetti
Gestione della memoria automatica
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 2
JAVA
Creazione di una applicazione Java
L’applicazione più classica (e inutile?) del mondo
class HelloWorld {
public static void main (String args[]) {
System.out.println("Hello World!");
}
}
1. Memorizzare l’applicazione nel file testo HelloWorld.java
2. Compilare il file sorgente:
javac HelloWorld.java
Si ottiene il file HelloWorld.class (bytecode)
3. Eseguire l’applicazione
java HelloWorld
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 3
JAVA
Creazione di una applet Java
La applet più classica (e inutile?) del mondo
import java.awt.Graphics;
public class HelloWorldApplet extends java.applet.Applet {
public void paint (Graphics g) {
g.drawString("Hello World!", 5, 25);
}
}
1. Memorizzare l’applicazione nel file testo HelloWorldApplet.java
2. Compilare il file sorgente:
javac HelloWorldApplet.java
Si ottiene il file HelloWorldApplet.class (bytecode)
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 4
JAVA
Creazione di una applet Java
3. Inserire la applet in una pagina HTML
<HTML>
<HEAD>
<TITLE>Hello to Everyone!</TITLE>
</HEAD><BODY>
<P>My applet says:
<APPLET CODE="HelloWorldApplet.class" WIDTH=150 HEIGHT=25></APPLET>
</BODY>
</HTML>
4. Visualizzare la applet mediante
– browser che supporti Java
– appletviewer del JDK (Java Development Kit).
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 5
JAVA
Programmazione ad oggetti in Java
Un programma Java è costituito da un insieme di classi
Una classe Java è caratterizzata da
– attributi, che ne caratterizzano l’aspetto, lo stato, le qualità
variabili di istanza descrivono gli attributi specifici di ogni singolo oggetto
variabili di classe descrivono gli attributi associati alla classe ed a tutti i suoi oggetti
– metodi, funzioni che ne descrivono il comportamento
possono essere definite solo all’interno di una classe
metodi di classe e di istanza
La libreria di classi è un insieme di classi “elementari” che forniscono oggetti e comportamenti “minimi” necessari allo sviluppo di applicazioni (supporto per tipi di dati, per accesso alla rete, per la grafica).
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 6
JAVA
Esempio: creazione di una classe
/* motorcycle class */
class Motorcycle {
String make;
String color;
boolean engineState;
public static void main (String args[]) {
Motorcycle m = new Motorcycle();
m.make = "Yamaha RZ350";
m.color = "yellow";
System.out.println("Calling showAtts...");
m.showAtts();
System.out.println("--------");
System.out.println("Starting engine...");
m.startEngine();
System.out.println("--------");
System.out.println("Calling showAtts...");
m.showAtts();
System.out.println("--------");
System.out.println("Starting engine...");
m.startEngine();
}
// variabili di istanza
void showAtts() {
// metodo
System.out.println("This motorcycle is a "
+ color + " " + make);
if (engineState == true)
System.out.println("The engine is on.");
else
System.out.println("The engine is off.");
}
void startEngine() {
if (engineState == true)
System.out.println("The engine is already on.");
else {
engineState = true;
System.out.println("The engine is now on.");
}
}
}
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 7
JAVA
Programmazione ad oggetti in Java
Ereditarietà: ogni classe eredita le caratteristiche (metodi e attributi) della sua superclasse.
esiste solo l’ereditarietà singola
la classe a livello gerarchico più alto è la classe Object
Subclassing: ogni classe definita come sottoclasse di una classe eredita tutte le sue caratteristiche
è necessario definire solo le differenze rispetto alle sue superclassi
se la superclasse non è indicata, è implicitamente Object
Interfaccia: insieme di metodi, privi di una definizione specifica, la cui implementazione è definita all’interno
delle classi
permettono di implementare l’ereditarietà multipla
Package: permettono di raggruppare classi ed interfacce.
librerie di classe del JDK nel package java
per far riferimento ad una classe in un package si usa la notazione puntata
Esempio: java.awt.color
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 8
JAVA
Esempio: creazione di una gerarchia tra classi
Data la classe Motocicletta, si vuole definire la classe Automobile.
– Invece di copiare parte dei comportamenti che sono comuni a Motocicletta, si crea una superclasse
Veicolo
– Si suddivide la classe Veicolo in Veicoli A Propulsione Umana e
Veicoli A Propulsione Meccanica
– Si suddivide la classe Veicoli A Propulsione Meccanica in Due Ruote e Quattro Ruote
A quale classe si associa l’attributo Colore?
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 9
JAVA
Meccanismo dell’ereditarietà
Creazione di un oggetto (istanza di una classe)
creazione di un “template”, di un insieme di variabili che comprende quelle definite nella classe corrente e
quelle definite in tutte le superclassi di tale classe.
Il nuovo oggetto ha accesso a tutti i metodi della sua classe e di tutte le sue superclassi.
Quando un metodo è invocato
scelto dinamicamente, a partire dalla classe cui l’oggetto appartiene, risalendo attraverso tutte le sue superclassi.
Un metodo può essere “ridefinito” (overriding)
creazione di un metodo con le stesse “caratteristiche” (signature, cioè nome, tipo e numero degli argomenti)
di un metodo già esistente in una superclasse, ma con funzionalità diverse
nasconde il metodo della superclasse
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 10
JAVA
Creazione di una sottoclasse
Le applet sono sottoclassi della classe Applet
ereditano automaticamente i metodi caratteristici della classe Applet (gestione del mouse, della tastiera, delle
finestre . . . )
La classe Applet fa parte del package java.applet.
L’unico package automaticamente disponibile è java.lang
tutti gli altri devono essere esplicitamente importati
import java.awt.Graphics;
import java.awt.Font;
import java.awt.Color;
public class HelloAgainApplet extends java.applet.Applet {
Font f = new Font("Times Roman", Font.BOLD,36);
public void paint (Graphics g) {
g.setFont(f);
g.setColor(Color.red);
g.drawString("Hello World!", 5, 25);
}
}
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 11
JAVA
Istruzioni
Le istruzioni sono i costrutti elemantari del linguaggio.
Terminano sempre con un ’;’
Esempi:
int i=1;
import jawa.awt.Font;
System.out.println("Questa motocicletta e‘ una " + marca + " " + colore);
m.engineState = true;
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 12
JAVA
Variabili
Sono caratterizzati da un nome, un tipo ed un valore
Variabili
– di istanza definiscono un attributo di un oggetto
– di classe caratterizzano tutte le istanze della classe
– locali, dichiarate e utilizzate nella definizione di metodi
esistono solo durante l’esecuzione del metodo
Non esistono variabili globali
Devono sempre essere dichiarate prima di essere utilizzate
I nomi
– devono iniziare con lettere, ’ ’, ’$’ (non con numeri)
– possono poi comprendere lettere, numeri, simboli
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 13
JAVA
Tipo delle variabili
Otto tipi primitivi (non sono oggetti):
byte (8), short (16), int (32), long (64)
float (32), double (64)
conformi allo standard IEEE 754
char (16)
set di caratteri Unicode char rappresentato su 16 bit
boolean
le variabili booleane non sono numeri
Nome di una classe
Array
Non esiste il costrutto typedef
per definire un tipo si definisce una classe
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 14
JAVA
Dichiarazione di variabili
Costituita da tipo e nome di variabili
Le variabili locali devono essere inizializzate prima di essere lette
Le variabili di istanza e di classe hanno un valore iniziale predefinito
– istanze di classe: null
– variabili numeriche: 0
– caratteri: ‘0’
– variabili booleane: false
Esempi:
int x,y,z;
int miaEta;
String mioNome;
boolean sono_stanco;
boolean sei_brutto = true;
int x, y, z = 0;
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 15
JAVA
Costrutti elementari
L’operatore di assegnazione è
’=’
Commenti
– su più linee
– su una sola linea
/*
*/
//
Letterali:
interi:
reali:
booleani:
caratteri:
stringhe:
4, -4, 8L, 0074, 0xFA
5.6674, 2.56f, 3.4F, 10e45, .36E-2
true, false
’a’, ’%’, n, t, b, r, f, , ’, ", ddd, xdd, udddd
"Ciao, io sono una stringa", "", "Stringa t allineata", "Javau2122"
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 16
JAVA
Espressioni ed operatori
operatori aritmetici:
assegnazioni:
operatori di confronto:
operatori logici:
operatori sui bit:
operatori su stringhe:
+
x=y=0
==
&&
&
&=
+
x=x+2
!=
||
|
|=
*
/
x+=y x-=y
>
<
!
=
%
x*=y x/=y
<=
>=
<<
>>
x++ ++x x--
--x
>>> <<= >>= >>>=
L’operatore di concatenazione tra stringhe converte automaticamente qualunque operando in un oggetto stringa.
– gli oggetti sono convertiti invocando il metodo toString()
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 17
JAVA
Precedenza degli operatori
Le parentesi modificano la precedenza.
. [] ()
++ -- ! instanceof
new (type)expression
* / %
<< >> >>>
< >
== !=
&
|
&&
||
? :
= += -= *= /= %= &= |= <<= >>= >>>=
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 18
JAVA
Oggetti
Gli oggetti sono creati come istanze di una classe precedentemente definita.
Per creare un oggetto si usa il costrutto new
String str
= new String();
Random r
= new Random();
Motorcycle m = new Motorcycle();
La chiamata new
1. crea una nuova istanza dell’oggetto
2. alloca la memoria necessaria a tale oggetto
3. chiama un metodo denominato costruttore
L’allocazione (e la disallocazione) della memoria relativa ad un oggetto sono automatiche:
la new alloca la memoria necessaria per l’oggetto in heap
la disallocazione avviene mediante un meccanismo di garbage collection: quando un oggetto non ha più nessun
riferimento verso di se, la memoria corrispondente è disallocata
Le parentesi sono obbligatorie. Eventuali argomenti sono usati per assegnare un valore iniziale all’istanza.
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 19
JAVA
Metodo costruttore
Il costruttore è un metodo speciale che inizializza una istanza di una classe:
inizializza le variabili dell’oggetto
crea eventuali altri oggetti necessari
esegue tutte le operazioni necessarie alla “vita” dell’oggetto
Più costruttori possono essere specificati per una classe, ciascuno con numero e tipo di argomenti diverso.
import java.util.Date;
class CreateDates {
public static void main (String args[]) {
Date d1, d2, d3;
Date 1: Wed Feb 19 16:39:06 CET 2003
Date 2: Wed Sep 01 07:30:00 CEST 1971
Date 3: Wed Oct 16 17::05:00 CET 1996
d1 = new Date();
System.out.println("Date 1: " + d1);
d2 = new Date(71, 8, 1, 7, 30);
System.out.println("Date 2: " + d2);
d3 = new Date("October 16 1996 5:05 PM");
System.out.println("Date 3: " + d3);
}
}
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 20
JAVA
Variabili di istanza
Per accedere a una variabile, si utilizza la notazione “puntata”
myObject.var
myObject.var.state
Per assegnare un valore ad una variabile:
myObject.var.state = true;
Esempio: la classe Point.
import java.awt.Point;
class TestPoint {
public static void main (String args[]) {
Point thePoint = new Point(10,10);
System.out.println("X is " + thePoint.x);
System.out.println("Y is " + thePoint.y);
System.out.println("Setting X to 5.");
thePoint.x = 5;
System.out.println("Setting y to 15.");
thePoint.y = 15;
System.out.println("X is " + thePoint.x);
System.out.println("Y is " + thePoint.y);
}
}
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 21
JAVA
Variabili di classe
Sono variabili associate alla classe nel suo insieme, non alle istanze.
Tutte le istanze possono accedere alle variabili di classe, ma non ne possiedono una copia
Per definire una variabile di classe, si usa la parola chiave static.
class MembrodiFamiglia {
static string cognome = "Bettini";
String nome;
int eta;
}
Per accedere a una variabile di classe, si utilizza la notazione “puntata” come per le variabili di istanza. È
possibile utilizzare
– il nome della classe (caldamente suggerito)
– il nome di una variabile di istanza (caldamente sconsigliato)
MembrodiFamiglia papa = new MembrodiFamiglia();
System.out.println("Il cognome della famiglia e‘: " + papa.cognome);
System.out.println("Il cognome della famiglia e‘: " + MembrodiFamiglia.cognome);
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 22
JAVA
Metodi
Per invocare un metodo
si usa la notazione puntata
il nome del metodo deve essere seguito da () anche se non ha argomenti
è possibile annidare chiamate a metodi insieme a riferimenti a variabili
mioOggetto.metodoUno (Arg1, arg2, arg3);
mioOggetto.metodosenzaarg ();
mioOggetto.getClass().getName();
mioOggetto.var.metodoDue(arg1, arg2);
La chiamata System.out.println() è un ottimo esempio di chiamata annidata che coinvolge metodi e variabili.
System è una classe appartenente al package java.lang che descrive comportamenti specifici del sistema.
System.out è una variabile di classe che contiene una istanza della classe PrintStream che punta all’uscita
standard del sistema.
Le istanze della classe PrintStream contengono un metodo println() che stampa oggetti stringa sull’uscita.
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 23
JAVA
Esempio: metodi della classe String
class TestString {
public static void main (String args[]) {
String str = "Now is the winter of our discontent";
System.out.println("The string is: " + str);
System.out.println("Length of this string: " +str.length());
System.out.println("The character at position 5: " + str.charAt(5));
System.out.println("The substring from positions 11 to 18: " +
str.substring(11,18));
System.out.println("The index of the character d: " +str.indexOf(’d’));
System.out.println("The index of the beginning of the substring \"winter\": "
+ str.indexOf("winter"));
System.out.println("The string in upper case: " + str.toUpperCase());
}
}
The string is: Now is the winter of our discontent
Length of this string : 35
The character at position 5: s
The substring from positions 11 to 18: winter
The index of the character d: 25
The index of the beginning of the substring ”winter”: 11
The string in upper case: NOW IS THE WINTER OF OUR DISCONTENT
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 24
JAVA
Metodi di classe
Sono metodi specifici di una classe, non di una istanza.
Per chiamare un metodo di classe si può usare il nome della classe oppure di una variabile di istanza.
String s, s2;
s = "pippo";
s2 = s.valueOf(5);
s2 = String.valueOf(5);
// assegno ad s2 la stringa 5
// assegno ad s2 la stringa 5
valueOf() è un metodo della classe String, che converte un oggetto in stringa e lo ritorna in un oggetto di
tipo stringa. Non opera direttamente su una istanza dell’oggetto stringa.
La classe Math, definita nel package java.lang contiene un insieme di metodi di classe che realizzano le
funzioni matematiche. Non esistono istanze della classe Math.
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 25
JAVA
“Riferimento” ad oggetti
L’assegnazione di oggetti a variabili ed il passaggio di oggetti come parametri di metodi avviene sempre per
riferimento.
Non esiste aritmetica dei puntatori in Java.
Esempio
import java.awt.Point;
class ReferenceTest {
public static void main (String args[]) {
Point pt1, pt2;
pt1 = new Point(100,100);
System.out.println("pt1.x = " + pt1.x + " and pt1.y = " + pt1.y);
pt2 = pt1;
pt1.x = 200;
pt1.y = 200;
System.out.println("pt2.x = " + pt2.x + " and pt2.y = " + pt2.y);
}
}
Dopo le ultime due assegnazioni, anche pt2 contiene i valori 200, 200.
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 26
JAVA
Conversioni di tipo (cast)
Il cast è il meccanismo utilizzato per convertire tipi. Il risultato del cast è un nuovo oggetto (o valore); l’oggetto
originario non è modificato.
Esistono tre tipi di cast:
tra tipi primitivi
– il tipo boolean non può essere convertito in nessun altro
– è necessario specificare esplicitamente il cast solo per conversioni a tipi più “piccoli”
(tipo) valore
(int) (x/y);
tra oggetti
– ammesso solo se esiste relazione di ereditarietà
– è necessario specificare esplicitamente il cast solo per conversioni a tipi più “grandi”
MelaVerde melav;
Mela
mela;
melav = new MelaVerde();
mela = melav;
melav = (MelaVerde) mela;
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 27
JAVA
Conversioni di tipo (cast)
tra oggetti e tipi primitivi
– classi speciali corrispondenti ai tipi primitivi, contenute nel package java.lang consentono la creazione
di oggetti corrispondenti a valori
– metodi nelle classi speciali consentono la conversione di oggetti nei corrispondenti valori
Integer oggettoIntero = new Integer(35);
int unIntero = oggettoIntero.intValue();
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 28
JAVA
Operatori di confronto tra oggetti
Gli operatori di confronto operano solo tra tipi primitivi.
Le uniche eccezioni sono gli operatori == e !=.
verificano se i due operandi fanno riferimento allo stesso oggetto
Per altri tipi di confronto è necessario realizzare metodi specifici.
Java non permette l’operator overloading!
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 29
JAVA
Esempio
class EqualsTest {
public static void main (String args[]) {
String str1, str2;
str1 = "she sells sea shells by the sea shore.";
str2 = str1;
System.out.println("String1: " + str1);
System.out.println("String2: " + str2);
System.out.println("Same object? " + (str1 == str2));
String1: she sells sea shells by the sea shore.
String2: she sells sea shells by the sea shore.
Same object? true
String1: she sells sea shells by the sea shore.
String2: she sells sea shells by the sea shore.
Same object? false
Same value? true
str2 = new String(str1);
System.out.println("String1: " + str1);
System.out.println("String2: " + str2);
System.out.println("Same object? " + (str1 == str2));
System.out.println("Same value? " + str1.equals(str2));
}
}
Assegnando la stessa espressione letterale a str1 e a str2, Java avrebbe riconosciuto le due stringhe come un unico
oggetto e assegnato alle due variabili lo stesso oggetto.
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 30
JAVA
Operazioni con oggetti
Per copiare due oggetti:
metodo clone(): crea una nuova istanza della stessa classe dell’istanza che lo chiama, copiando i valori delle
variabili. Ritorna un oggetto della classe Object; si deve effettuare un cast alla classe originale.
Point pt1, pt2, pt3;
pt1 = new Point (0,0);
pt2 = new Point (100, 100);
pt3 = (Point) pt2.clone();
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 31
JAVA
Operazioni con oggetti
Per determinare la classe di un oggetto:
String name = obj.getClass().getName();
Il metodo getClass(), definito nella classe Object, restituisce un oggetto della classe Class che possiede
un metodo getName().
Il metodo getName() ritorna una stringa che rappresenta il nome della classe dell’oggetto.
L’operatore instanceof ha come operandi un oggetto ed il nome di una classe. Ritorna un valore booleano (true
se l’oggetto è un oggetto della classe specificata, false altrimenti).
pt instanceof String
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 32
JAVA
Le classi di libreria: java class libraries
Sono le classi sicuramente presenti in qualunque JDK (Java Development Kit).
Package
java.lang
Descrizione
Classi attinenti il linguaggio.
Classi di uso generale.
Classi di I/O, gestione file e stream.
Supporto alla rete.
Abstract Window Toolkit
per la gestione delle interfacce grafiche.
java.applet Classi che gestiscono le applet.
java.util
java.io
java.net
java.awt
Object, String, System, Integer
Float, Character
Date, Vector, Hashtable.
Socket, URL.
Window, Menu, Button
Font, CheckBox, Image
Applet, AudioClip.
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 33
JAVA
Istruzioni complesse
Blocchi di istruzioni: sono insiemi di istruzioni elementari racchiuse tra . È possibile dichiarare variabili (locali)
all’interno dei blocchi.
Istruzioni condizionali (come nel linguaggio C).
if (condizione)
blocco istruzioni;
else
blocco istruzioni;
Il test sulla condizione torna un valore booleano, non un intero.
Operatore condizionale: è un operatore ternario (come nel linguaggio C); è una espressione che ritorna un valore.
int smaller = x < y ? x : y;
È l’operatore a più bassa priorità (escludendo l’assegnazione).
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 34
JAVA
Istruzione switch
Corrisponde ad una serie di if annidati (come nel linguaggio C).
switch (test) {
case primo_valore:
istruzioni;
break;
case secondo_valore:
istruzioni;
break;
....
default:
istruzioni;
break;
}
Il test può essere effettuato solo su tipi primitivi (che sia possibile ridurre a int con un cast), non su oggetti.
L’unica relazione controllabile è quella di uguaglianza.
I break sono necessari per delimitare il blocco di istruzioni da eseguire.
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 35
JAVA
Istruzioni di ciclo
for (inizializzazione; controllo; incremento) {
istruz1;
istruz2;
...
}
nella parte di inizializzazione è possibile dichiarare variabili locali al ciclo
while (condizione) {
istruz1;
istruz2;
...
}
do {
istruz1;
istruz2;
...
} while (condizione);
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 36
JAVA
Istruzioni Break e Continue
Le parole chiave break e continue permettono di uscire dal ciclo se si verificano condizioni “anomale” all’interno
del corpo del ciclo.
Con break si termina il ciclo direttamente
while (count < array1.length) {
if (array1[count] == 0)
break;
array2[count] = array1[count];
count++;
}
Con continue si salta all’inizio della prossima iterazione del loop
while (count < array1.length) {
if (array1[count] == 0) {
count++;
continue;
}
array2[count2++] = array1[count++];
}
Si può specificare un’etichetta dopo le istruzioni break e continue
si esce dal ciclo e si salta all’istruzione successiva all’etichetta
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 37
JAVA
Array
Gli array permettono di memorizzare una lista di elementi.
Gli elementi di un array devono essere tutti dello stesso tipo. Possono essere sia tipi primitivi che oggetti.
Gli array in Java sono oggetti.
Creazione di un array:
1. Dichiarazione di una variabile che contiene l’array:
String paroleDifficili[];
Point puntidelPerimetro[];
int[]
tempi;
2. Creazione dell’oggetto array:
con new (inizializza a 0, false, ’0’, null)
String[] nomi = new String[10];
con inizializzazione diretta:
String[] peperoncini = {"jalapeno", "anaheim", "thai"};
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 38
JAVA
Array
Accesso ai singoli elementi mediante indice
indice parte da 0
nomi[10] = "Luca";
intarray[0] = 15;
Java verifica che gli indici non superino gli estremi dell’array
– durante la compilazione (se l’indice è costante)
– a tempo di esecuzione
l’interprete Java riconosce l’errore e genera un’eccezione
È possibile controllare la lunghezza di un array per evitare di uscire dai limiti
int len = nomi.length;
// Ottengo 11
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 39
JAVA
Array
Un array di oggetti è un array di “puntatori” agli oggetti.
quando si assegna un valore ad un elemento dell’array si crea un puntatore all’oggetto
Gli array multidimensionali non sono supportati esplicitamente
è possibile dichiarare array di array
int[][] coords = new int[12][12];
coords[0][0] = 1;
coords[0][1] = 2;
Elena Baralis, Andrea Bianco, Maurizio Munaf ò
Politecnico di Torino
INTRODUZIONE ALLA PROGRAMMAZIONE JAVA – 40
JAVA