Sei sulla pagina 1di 59

Le basi del linguaggio

Java
Prof.ssa Mastrocesare e Prof. Notarantonio

Compilazione e
interpretazione
Quando si compila il codice sorgente scritto in
Java, il compilatore genera il codice compilato,
chiamato bytecode.

E un codice generato per una macchina


astratta, detta Java Virtual Machine (JVM).

Per essere eseguito su una macchina reale, il


codice compilato (bytecode) deve essere
interpretato.

Compilazione e
interpretazione

Java e un linguaggio interpretato, anche se la


produzione del bytecode e effettuata con
unoperazione di compilazione.

Ambiente di programmazione
con JDK (Java Development Kit) si possono scrivere e
compilare applet e applicazioni Java.

il compilatore e linterprete sono eseguiti da riga di


comando.

software di tipo IDE (Integrated Development


Environment), cio ambienti che facilitano lo sviluppo
dei programmi attraverso uninterfaccia grafica e una
modalit di programmazione visuale.

librerie contenenti classi e metodi

Struttura di un programma
Java
unapplicazione pu essere costituita da una o
pi classi.

una si differenzia dalle altre perch contiene il


metodo main().

lesecuzione di unapplicazione Java comincia


eseguendo questo metodo.

Struttura di un programma
Java
class <nome classe>
{
public static void main(String args[])
{
// dichiarazioni di variabili
.
.
.
// istruzioni
.
.
.
}
}

Metodo main
public indica che il metodo e pubblico ed e
visibile

void indica che non ci sono valori di ritorno


static indica che il metodo e associato alla
classe e non pu essere richiamato dai singoli
oggetti della classe.

Identificatori e parole chiave


Gli identificatori sono i nomi che il
programmatore assegna per identificare le
variabili, i metodi e le classi.

Le parole chiave sono un insieme di parole


riservate di Java che non possono essere
usate come identificatori.

Variabili
Le variabili:
<tipo> <nome variabile>;
int prezzo;

Lassegnamento:
<tipo> <nome variabile> = <valore iniziale>;

double altezza = 1.83;

Costanti
Una costante pu assumere un solo valore
durante tutta lesecuzione del programma:
final double YARD_METRO = 0.914;

Il casting
Il casting e il meccanismo che consente al
programmatore di indicare la conversione da un tipo di
dato a un altro tipo.

floatNum = 13.278f;
intNum = (int) floatNum;

Operatori
Le operazioni aritmetiche: +, -, *, /.
Loperatore % e usato per calcolare il resto.
Operatori di incremento e di decremento: ++ e .
i++;

Lassegnamento di un valore a una variabile viene


eseguito usando loperatore di assegnamento =.

Le stringhe possono essere concatenate tra loro


usando loperatore di concatenazione +.

Operatori di confronto
Operatori di confronto: loperatore di uguaglianza
rappresentato da due simboli di uguale (==).
if (voto == 6)
{
System.out.println("sufficiente");
}

La disuguaglianza (diverso da) e espressa usando


loperatore !=.

Gli altri operatori di confronto sono <, <=, >, e >=.

Operatori booleani
Loperatore && (oppure &) indica loperazione
di AND.

Loperatore || (oppure |) indica loperazione di


OR.

La negazione NOT viene espressa con


loperatore !.

Standard output
System.out.println("messaggio da visualizzare");

System.out rappresenta un oggetto associato


allo standard output. Esiste anche un oggetto
associato allo standard error che e System.err.

Standard input
System.in gestisce il flusso di dati inseriti da tastiera.

classe BufferedReader
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader tastiera = new BufferedReader(input);

lettura di una stringa:


String nome;
nome = tastiera.readLine();

Struttura di sequenza
La struttura di sequenza viene realizzata posizionando le
istruzioni una di seguito allaltra e separandole con il
punto e virgola.
Ogni dichiarazione e istruzione deve terminare con il
punto e virgola.

Struttura di selezione
La struttura di selezione:
if (condizione)
{
// istruzioni eseguite se la condizione e vera
}
else
{
// istruzioni eseguite se la condizione e falsa
}

Selezione multipla
La struttura di selezione multipla:
switch (espressione)
{
case valore1: // istruzioni
break;
case valore2: // istruzioni
break;
. . . .
default: // istruzioni
break;
}

Struttura di ripetizione
while
while (condizione)
{
// istruzioni
}

Struttura di ripetizione
do while
do
{
// istruzioni
}
while (condizione);

for
for (inizializzazione; condizione; aggiornamento)
{
// istruzioni
}

Eccezioni
Uneccezione e una situazione anomala che si verifica
durante lesecuzione del programma.
try
{
// istruzioni da controllare
}
catch(eccezione)
{
// operazioni da eseguire se si verifica l'eccezione
}

Eccezioni predefinite
ArithmeticException: segnala errori aritmetici
NullPointerException: errore dovuto allutilizzo di un
riferimento che possiede il valore null

IndexOutOfBoundException: errore nellindice di un


array

IOException: generico errore di input/output.

Classi e oggetti

Oggetti
La programmazione orientata agli oggetti,
OOP (Object-Oriented Programming), prende il nome
dallelemento su cui si basa, loggetto.

OOP
Vantaggi

facilita di lettura e di comprensione del codice


rapidit nella manutenzione
robustezza
riusabilit del codice

Oggetti
Gli oggetti rappresentano le entit del
problema o della realt che si vuole
automatizzare con linformatica.

Un oggetto e in grado di memorizzare le


informazioni che riguardano il suo stato

E possibile associare a un oggetto un insieme


di operazioni che esso pu compiere.

Attributi e metodi
Gli attributi rappresentano gli elementi che
caratterizzano loggetto, utili per descrivere le sue
propriet e definirne il suo stato.
I metodi rappresentano le funzionalit che
loggetto mette a disposizione.

Definizione delle classi


La classe e la descrizione astratta degli oggetti attraverso
gli attributi e i metodi.

Diagramma delle classi


<nome classe>
<attributo1>
<attributo2>
. . .
<metodo1>
<metodo2>
. . .

I simboli utilizzati negli


schemi grafici rispettano gli
standard del linguaggio
UML (Unified Modeling
Language)

Istanza
Per utilizzare un oggetto occorre crearlo come esemplare
della classe, cio come istanza di una classe.

Diagramma degli oggetti


auto1

velocit = 60
colore = rosso
numero di porte = 5
livello del carburante =
posizione della marcia = 3

Ogni classe possiede un


particolare metodo
predefinito, detto
costruttore, che viene
attivato quando si crea un
oggetto.

Incapsulamento
Il termine incapsulamento indica la propriet degli oggetti
di incorporare al loro interno sia gli attributi che i metodi,
cio le caratteristiche e i comportamenti delloggetto.

Dichiarazione di una classe


class NomeClasse
{
// attributi
// metodi
}

Dichiarazione di un oggetto
dichiarazione di un oggetto:
NomeClasse nomeOggetto;

creazione dellistanza:
nomeOggetto = new NomeClasse();

Dichiarazione di un attributo
dichiarazione di un attributo:
livelloDiVisibilit tipo nomeAttributo;

Esempi:
private int x, y, z;
public double altezza = 15.76;

Livelli di visibilit
public
lattributo accessibile da qualsiasi altra classe
private
permette di nascondere lattributo allinterno
delloggetto
protected
visto allesterno solo dalle classi che appartengono
alla stessa libreria oppure dalle sottoclassi della
classe in cui stato dichiarato lattributo.

Altre caratteristiche
static
indica un attributo legato alla classe

final
se lo si vuole rendere una costante, in modo che possa
assumere un unico valore.

Dichiarazione dei metodi


livelloDiVisibilit tipoRestituito nomeMetodo (parametri)
{
// variabili
// istruzioni
}

Esempio
Il metodo che esegue la somma di due numeri interi
passati come parametri:
public int addizione (int a, int b)
{
int sum;
sum = a+b;
return sum;
}

Valore di ritorno
Il tipo del valore di ritorno indica quale sar il valore
restituito al termine dellesecuzione del metodo.

Un metodo pu anche non restituire alcun valore: parola


chiave void.

public void setRaggio(double r)


{
raggio = r;
}

Istruzione return
public int max(int a, int b)
{
if (a > b)
{
return a;
}
else
{
return b;
}
}

Livelli di visibilit
I livelli di visibilit di un metodo:

public
pu essere richiamato da qualunque altra classe

private
non pu essere richiamato esternamente alla classe in
cui dichiarato

protected
visibile solo dalle classi che appartengono alla
stessa libreria oppure dalle sottoclassi della classe in
cui dichiarato

Creazione di oggetti
Lallocazione delloggetto riserva lo spazio per
memorizzare gli attributi delloggetto e viene codificata con
loperatore new seguito dal nome della classe.

Viene attivato in modo implicito un particolare metodo


predefinito, detto costruttore della classe, che consente di
creare un oggetto.

Cerchio tavolo = new Cerchio();

Creazione di oggetti
Creare unistanza della classe Cerchio usando il
costruttore e indicando un valore di inizializzazione
per lattributo raggio.
Cerchio ruota = new Cerchio(0.41);

Utilizzo degli oggetti


Accesso agli attributi di un oggetto con loperatore punto:
nomeOggetto.attributo

Invocazione di un metodo:
nomeOggetto.metodo(parametri)

In ogni classe implicitamente presente un oggetto


speciale identificato dalla parola chiave this, per indicare
loggetto a cui il costruttore si riferisce.

Information hiding
Il termine information hiding indica il mascheramento
delle modalit di implementazione di unoggetto,
rendendone disponibile allesterno solo le funzionalit.

Metodi per leggere e modificare il valore degli


attributi:

get: leggere il valore di un attributo e


restituirlo

set: modificare il valore di un attributo.

Esempio

class Automobile
{
private final int POSIZIONE_MAX = 6;
private int posMarcia;
public Automobile()
{
posMarcia = 1;
}
public int getMarcia()
{
return posMarcia;
}

public void setMarcia(int m)


{
if ((m >= 1) && (m <= POSIZIONE_MAX))
{
posMarcia = m;
}
}
}

Interfaccia
il termine interfaccia riferito alle classi:
Linterfaccia di una classe indica lelenco dei metodi
pubblici, cio linsieme delle funzionalit utilizzabili dalle
istanze della classe.

per esempio, linterfaccia della classe Automobile:


public Automobile()
public int getMarcia()
public void setMarcia(int m)

I dettagli sulle caratteristiche e la struttura delloggetto


sono nascosti allinterno, garantendo linformation
hiding (mascheramento dellinformazione).

Ereditariet
Lereditariet rappresenta la possibilit di creare nuove classi
a partire da una classe gi esistente (classe base). La nuova
classe eredita tutti gli attributi e i metodi della classe base e
pu essere arricchita con nuovi attributi e nuovi metodi. La
classe cos ottenuta si chiama classe derivata..

Sottoclasse e superclasse
La classe che stata derivata da unaltra usando
lereditariet prende il nome di sottoclasse.

La classe generatrice di una sottoclasse si chiama


superclasse o sopraclasse.

Grafo di gerarchia

Classe derivata
La nuova classe si differenzia dalla sopraclasse:

per estensione: la sottoclasse aggiunge nuovi


attributi e metodi

per ridefinizione: la sottoclasse ridefinisce i metodi


ereditati (overriding del metodo)

Dichiarazione di una
sottoclasse
class NomeSottoClasse extends NomeSopraClasse
{
. . .
}

Classe Object
Classe da cui vengono derivate tutte le altre

Polimorfismo
Il polimorfismo indica la possibilit per i metodi di
assumere forme, cio implementazioni, diverse allinterno
della gerarchia delle classi.
Due tipi di polimorfismo:

loverriding, o sovrapposizione dei metodi,


loverloading, o sovraccarico dei metodi.

Librerie
Le librerie sono un insieme di classi gi compilate
che possono essere richiamate e usate allinterno
dei programmi. Java usa il termine package.
Esempi:
java.applet
java.awt
java.io

java.lang
java.net

java.util

Librerie
Per riferirsi a una classe contenuta in un particolare package:
NomePackage.NomeClasse

Per evitare di ripetere pi volte il nome del package:


comando import
import java.awt.Button
Button b;
b = new Button();
;

Librerie
Per importare tutte le classi contenute nel package java.io:
import java.io.*;;

Il package java.lang contiene la dichiarazione delle classi


di base del linguaggio Java.

Classe String
Inclusa nel package java.lang.

Per usare le stringhe in Java si deve creare un oggetto


di classe String.
String nome = new String("Elena");

altro modo per allocare le stringhe:


String nome = "Laura";

Classe String