Upload
alex-di-matteo
View
8
Download
0
Embed Size (px)
DESCRIPTION
linguaggio java
Citation preview
Le basi del linguaggio
JavaProf.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 un’operazione di compilazione.
Ambiente di programmazione con JDK (Java Development Kit) si possono scrivere e
compilare applet e applicazioni Java.
il compilatore e l’interprete sono eseguiti da riga di
comando.
software di tipo IDE (Integrated Development
Environment), cioè ambienti che facilitano lo sviluppo
dei programmi attraverso un’interfaccia grafica e una
modalità di programmazione visuale.
librerie contenenti classi e metodi
Struttura di un programma
Java
un’applicazione può essere costituita da una o
più classi.
una si differenzia dalle altre perchè contiene il
metodo main().
l’esecuzione di un’applicazione 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>;
L’assegnamento:
<tipo> <nome variabile> = <valore iniziale>;
int prezzo;
double altezza = 1.83;
Costanti
Una costante può assumere un solo valore
durante tutta l’esecuzione 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: +, -, *, /.
L’operatore % e usato per calcolare il resto.
Operatori di incremento e di decremento: ++ e – –.
L’assegnamento di un valore a una variabile viene eseguito usando l’operatore di assegnamento =.
Le stringhe possono essere concatenate tra loro usando l’operatore di concatenazione +.
i++;
Operatori di confronto Operatori di confronto: l’operatore di uguaglianza è
rappresentato da due simboli di uguale (==).
La disuguaglianza (diverso da) e espressa usando
l’operatore !=.
Gli altri operatori di confronto sono <, <=, >, e >=.
if (voto == 6)
{
System.out.println("sufficiente");
}
Operatori booleani L’operatore && (oppure &) indica l’operazione
di AND.
L’operatore || (oppure |) indica l’operazione di
OR.
La negazione NOT viene espressa con
l’operatore !.
Standard output
System.out rappresenta un oggetto associato
allo standard output. Esiste anche un oggetto
associato allo standard error che e System.err.
System.out.println("messaggio da visualizzare");
Standard input System.in gestisce il flusso di dati inseriti da tastiera.
classe BufferedReader
lettura di una stringa:
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader tastiera = new BufferedReader(input);
String nome;
nome = tastiera.readLine();
Struttura di sequenza
La struttura di sequenza viene realizzata posizionando le
istruzioni una di seguito all’altra 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
• for
do
{
// istruzioni
}
while (condizione);
for (inizializzazione; condizione; aggiornamento)
{
// istruzioni
}
Eccezioni Un’eccezione e una situazione anomala che si verifica
durante l’esecuzione 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 all’utilizzo di un
riferimento che possiede il valore null
IndexOutOfBoundException: errore nell’indice 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 dall’elemento su cui si basa, l’oggetto.
OOPVantaggi
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 l’informatica.
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 l’oggetto, utili per descrivere le sue
proprietà e definirne il suo stato.
I metodi rappresentano le funzionalità che
l’oggetto mette a disposizione.
Definizione delle classi
Diagramma delle classi
La classe e la descrizione astratta degli oggetti attraverso
gli attributi e i metodi.
<nome classe>
<attributo1>
<attributo2>
. . .
<metodo1>
<metodo2>
. . .
I simboli utilizzati negli
schemi grafici rispettano gli
standard del linguaggio
UML (Unified Modeling
Language)
Istanza
Diagramma degli oggetti
Per utilizzare un oggetto occorre crearlo come esemplare
della classe, cioè come istanza di una classe.
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.
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 dell’oggetto.
Incapsulamento
Dichiarazione di una classe
class NomeClasse
{
// attributi
// metodi
}
Dichiarazione di un oggetto dichiarazione di un oggetto:
creazione dell’istanza:
NomeClasse nomeOggetto;
nomeOggetto = new NomeClasse();
Dichiarazione di un attributo dichiarazione di un attributo:
Esempi:
livelloDiVisibilità tipo nomeAttributo;
private int x, y, z;
public double altezza = 15.76;
Livelli di visibilità
public
l’attributo è accessibile da qualsiasi altra classe
private
permette di nascondere l’attributo all’interno
dell’oggetto
protected
è visto all’esterno solo dalle classi che appartengono
alla stessa libreria oppure dalle sottoclassi della
classe in cui è stato dichiarato l’attributo.
Altre caratteristiche
staticindica un attributo legato alla classe
finalse 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 dell’esecuzione 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:
publicpuò essere richiamato da qualunque altra classe
privatenon 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 L’allocazione dell’oggetto riserva lo spazio per
memorizzare gli attributi dell’oggetto e viene codificata con
l’operatore 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 un’istanza della classe Cerchio usando il
costruttore e indicando un valore di inizializzazione
per l’attributo raggio.
Cerchio ruota = new Cerchio(0.41);
Utilizzo degli oggetti Accesso agli attributi di un oggetto con l’operatore punto:
Invocazione di un metodo:
In ogni classe è implicitamente presente un oggetto speciale identificato dalla parola chiave this, per indicare l’oggetto a cui il costruttore si riferisce.
nomeOggetto.attributo
nomeOggetto.metodo(parametri)
Information hiding
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.
Il termine information hiding indica il mascheramento
delle modalità di implementazione di un’oggetto,
rendendone disponibile all’esterno solo le funzionalità.
Esempioclass 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:
per esempio, l’interfaccia della classe Automobile:
I dettagli sulle caratteristiche e la struttura dell’oggetto
sono nascosti all’interno, garantendo l’information
hiding (mascheramento dell’informazione).
L’interfaccia di una classe indica l’elenco dei metodi
pubblici, cioè l’insieme delle funzionalità utilizzabili dalle
istanze della classe.
public Automobile()
public int getMarcia()
public void setMarcia(int m)
EreditarietàL’ereditarietà 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 un’altra usando
l’ereditarietà 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 ObjectClasse da cui vengono derivate tutte le altre
Polimorfismo
Due tipi di polimorfismo:
l’overriding, o sovrapposizione dei metodi,
l’overloading, o sovraccarico dei metodi.
Il polimorfismo indica la possibilità per i metodi di
assumere forme, cioè implementazioni, diverse all’interno
della gerarchia delle classi.
LibrerieLe librerie sono un insieme di classi già compilate che possono essere richiamate e usate all’interno dei programmi. Java usa il termine package.
Esempi:
• java.applet
• java.awt
• java.io
• java.lang
• java.net
• java.util
LibreriePer riferirsi a una classe contenuta in un particolare package:
Per evitare di ripetere più volte il nome del package:
comando import
NomePackage.NomeClasse
import java.awt.Button
Button b;
b = new Button();
;
LibreriePer importare tutte le classi contenute nel package java.io:
Il package java.lang contiene la dichiarazione delle classi
di base del linguaggio Java.
import java.io.*;;
Classe StringInclusa nel package java.lang.
Per usare le stringhe in Java si deve creare un oggetto
di classe String.
altro modo per allocare le stringhe:
String nome = new String("Elena");
String nome = "Laura";
Classe String