OCA JAVA 7 SE PROGRAMMER I - centrostudiulisse.it · Lavorare con i metodi e l’incapsulamento ......
Transcript of OCA JAVA 7 SE PROGRAMMER I - centrostudiulisse.it · Lavorare con i metodi e l’incapsulamento ......
Materiale redatto dal Prof. Fausto Dell’anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL’ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA)
Tel. Fax. 081.19970299 - 339.2365416 - 349.4152010 E-mail: [email protected] - www.centrostudiulisse.it
SOMMARIO
Fondamenti di Java
Usare i Data Type Java
Usare operatori e costrutti decisionali
Creare ed usare array
Usare i costrutti ciclici
Lavorare con i metodi e l’incapsulamento
L’ereditarietà
Eccezioni
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
2
FONDAMENTI DI JAVA
Definire lo scopo delle variabili
Definire la struttura di una classe Java
Creare applicazioni Java eseguibili con un metodo main
Importare altri package Java per renderli accessibili nel
proprio codice
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
3
FONDAMENTI DI JAVA
Definire lo scopo delle variabili
Prima di tutto: il nome può iniziare con caratteri alfabetici
underscore (‘_‘)
dollaro (‘$‘)
Tutto il resto è sbagliato! non può iniziare con un numero
non può contenere caratteri speciali (@, #...)
non può essere una keyword Java
può essere il nome di una classe (!)
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
4
FONDAMENTI DI JAVA
Keyword Java:
abstract continue for new switch
assert default goto package synchronized
boolean do if private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while
modificatori statement tipi ereditarietà
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
5
FONDAMENTI DI JAVA
Definire lo scopo delle variabili
Scopo di una variabile:
ambito di visibilità della variabile
dove può essere utilizzata (letta o scritta)
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
6
FONDAMENTI DI JAVA
Definire lo scopo delle variabili
Lo scopo di una variabile dipende da:
dove è dichiarata la variabile
variabili di classe
variabili di istanza
variabili locali o automatiche
come è dichiarata la variabile
modificatori di accesso
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
7
FONDAMENTI DI JAVA
Definire lo scopo delle variabili
variabili di classe
sono static
sono accessibili da tutte le istanze della classe
sono accessibili anche senza un’istanza
sono uniche e condivise da tutte le istanze
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
8
FONDAMENTI DI JAVA
Definire lo scopo delle variabili
variabili di classe
Automaticamente inizializzate
numeriche a 0
boolean a false
oggetti a null
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
9
FONDAMENTI DI JAVA
Definire lo scopo delle variabili
variabili di istanza
dichiarate in una definizione di classe
esterne ai metodi
ogni istanza ne ha una con lo stesso nome, ma diversa
dall’omonima di ogni altra istanza
muoiono con l’istanza
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
10
FONDAMENTI DI JAVA
Definire lo scopo delle variabili
variabili di istanza
Automaticamente inizializzate
numeriche a 0
boolean a false
oggetti a null
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
11
FONDAMENTI DI JAVA
Definire lo scopo delle variabili
variabili locali/automatiche
sono dichiarate all’interno di un metodo o di un blocco
(qualunque porzione di codice racchiusa tra parentesi graffe)
muoiono alla fine dell’esecuzione del metodo
possono avere il nome di una variabile d’istanza o di classe e
la nascondono
this risolve l’ambiguità fra variabili locali e variabili d’istanza o
di classe
se dichiarate in un try non sono visibili nel catch
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
12
FONDAMENTI DI JAVA
Definire lo scopo delle variabili
modificatori di accesso:
public
membro visibile dovunque attraverso un riferimento alla classe
protected membro visibile alla classe stessa, alle classi derivate o a classi nello stesso
package
default (nessun modificatore) membro visibile solo alle classi nello stesso package
private membro visibile solo all’interno della classe in cui è definito
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
13
FONDAMENTI DI JAVA
Definire lo scopo delle variabili
modificatori di accesso:
Il più delle volte le variabili (i campi) sono dichiarate
come private e i metodi sono dichiarati come public
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
14
FONDAMENTI DI JAVA
Definire la struttura di una classe Java
Oggetti
Classi
Istanze
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
15
FONDAMENTI DI JAVA
Definire la struttura di una classe Java
Oggetti
In Java TUTTO è un oggetto
Un oggetto ha uno stato che può cambiare
Un oggetto ha un comportamento definito
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
16
FONDAMENTI DI JAVA
Definire la struttura di una classe Java
Oggetti e garbage collection
Oggetto creato dalla JVM:
con il new si alloca memoria (detta heap, dove sono tutti gli oggetti)
con il costruttore si inizializza
Oggetto disponibile per gc quando non è più referenziato (non ci sono altri oggetti che lo utilizzano)
Si può forzare con System.gc()
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
17
FONDAMENTI DI JAVA
Definire la struttura di una classe Java
Classi
Pattern per la creazione di oggetti con caratteristiche
simili
contengono campi tipizzati (attributi o variabili)
contengono metodi che modificano lo stato dell’oggetto
e/o ritornano valori
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
18
FONDAMENTI DI JAVA
Definire la struttura di una classe Java
La keyword strictfp
usabile sia su metodi che su classi
forza la JVM allo standard IEEE 754 nel calcolo di
espressioni in virgola mobile
garantisce risultati conformi allo standard industriale
può causare una minor precisione
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
19
FONDAMENTI DI JAVA
Definire la struttura di una classe Java
Il metodo getClass
consente la reflection sugli oggetti java
dà la possabilità di esaminare la classe di un oggetto a runtime
è applicabile ad un’istanza di qualsiasi oggetto
diverso da forName, che è applicabile solo quando abbiamo il Canonical Name (package.nomeclasse)
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
20
FONDAMENTI DI JAVA
Definire la struttura di una classe Java
//un generico oggetto
Object o;
Class c = o.getClass();
//oppure da una stringa
Class c = "AppuntiSoftware".getClass();
if (!c.isPrimitive())
{
for(Class s = c; s != null; s = s.getSuperclass())
{
if("java.lang.Object".equals(s.getName()))
System.out.println(s.getName());
else
System.out.println(s.getName() + " estende");
}
}
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
21
FONDAMENTI DI JAVA
Definire la struttura di una classe Java
Istanze
possiedono membri che possono essere variabili,
costanti o metodi
un membro di un’istanza appartiene ad una singola
istanza e non all’intera classe
tutti i membri non statici sono membri di istanze
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
22
FONDAMENTI DI JAVA
Definire la struttura di una classe Java
Istanze
definite attraverso variabili con un nome identificativo
occupano un’area di memoria destinata ad un oggetto del tipo definito nella classe corrispondente
si creano con la parola chiave new seguita dal costruttore che ha il nome della classe
Class Tombola
{
int estratto;
int[] sacco;
}
Tombola t = new Tombola();
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
23
FONDAMENTI DI JAVA
Definire la struttura di una classe Java
Costruttore
ha lo stesso nome della classe
può avere parametri
assegna direttamente ad una variabile il suo contenuto
posso richiamare lo stesso costruttore quante volte voglio: ogni volta verrà creato un nuovo oggetto con un suo riferimento ad una nuova area di memoria
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
24
FONDAMENTI DI JAVA
Definire la struttura di una classe Java
Costruttore
con la parola chiave this posso referenziare l’oggetto corrente ed i suoi membri
attenzione a non confondere nomi di campi con nomi di parametri!
un costruttore può richiamare un altro costruttore
un costruttore non ha un tipo di ritorno (anche void è un tipo di ritorno)! un costruttore non è un metodo
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
25
FONDAMENTI DI JAVA
Creare applicazioni Java eseguibili
con un metodo main
File .java è l’estensione di default di un file contenente codice Java
File contenenti più di una classe un file può contenere la definizione di più classi
deve esistere una e una sola classe pubblica
tutte le altre devono essere private (o default)
la classe pubblica con il nome del file
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
26
FONDAMENTI DI JAVA
Creare applicazioni Java eseguibili
con un metodo main
Caratteristiche del metodo main
Deve essere public e static (l’ordine è irrilevante)
Dovrebbe ritornare void (sempre immediatamente prima del nome main)
Prende come parametro un array di String non va bene una singola stringa
Può essere final (se c’è, in genere va prima di tutto)
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
27
FONDAMENTI DI JAVA
Creare applicazioni Java eseguibili
con un metodo main
Collocazione corretta di un main eseguibile
Nella classe che dà il nome al file java
Compilare un eseguibile java
Si usa il comando javac
Lanciare un eseguibile java
Si usa il comando java seguito dal nome della classe e dagli eventuali argomenti
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
28
FONDAMENTI DI JAVA
Creare applicazioni Java eseguibili
con un metodo main
Argomenti di un main Il parametro args è sempre un array di stringhe (String[] args),
mai una singola String
Se non è passato nessun argomento al main il parametro args sarà un array di stringhe valido ma di lunghezza zero, non un oggetto null
Ogni argomento dopo il nome della classe di cui si esegue il main nella linea di comando è indicizzato in args a partire da 0 il nome della classe NON è il primo elemento di args
Attenzione all’eccezione ArrayIndexOutOfBoundsException
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
29
FONDAMENTI DI JAVA
Importare altri package Java per renderli
accessibili nel proprio codice
Il concetto di package (due definizioni equivalenti)
Luogo dove risiede un file Java con la definizione di una o
più classi
Insieme di file Java contenenti la definizione di classi
affini per ambito e/o utilizzo
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
30
FONDAMENTI DI JAVA
Importare altri package Java per renderli
accessibili nel proprio codice
Il concetto di package
Ogni classe risiede in un unico package e questo è
nominato in apertura della classe
Parola chiave: package alberatura.nomepackage
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
31
FONDAMENTI DI JAVA
Importare altri package Java per renderli accessibili nel proprio codice
Sintassi:
import static <package>.<classname>.*;
oppure
import static <package>.<classname>.<fieldname>;
Lo statement import static è valido solo per importare staticamente membri statici di una classe
Non si può importare staticamente un package
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
32
FONDAMENTI DI JAVA
Importare altri package Java per renderli accessibili nel proprio codice
Lo statement import è necessario se una classe non dichiarazioni di package e utilizza classi in package differenti
È possibile usare un solo carattere jolly («*»)
Senza import è possibile accedere ad un oggetto in un’altra classe usando il nome con l’alberatura per esteso (ad es. util.log4j.Logger)
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
33
FONDAMENTI DI JAVA
Importare altri package Java per renderli
accessibili nel proprio codice
Modificatori di accesso applicati alle classi
Anche una classe può essere
public
private
protected
senza modificatore
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
34