OCA JAVA 7 SE PROGRAMMER I - centrostudiulisse.it · Lavorare con i metodi e l’incapsulamento ......

35
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

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

DOMANDE?

Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata

35