Anteprima
Vedrai una selezione di 3 pagine su 8
Metodi ausiliari progettare classi eccezioni java Pag. 1 Metodi ausiliari progettare classi eccezioni java Pag. 2
Anteprima di 3 pagg. su 8.
Scarica il documento per vederlo tutto.
Metodi ausiliari progettare classi eccezioni java Pag. 6
1 su 8
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Tali costanti sono di norma public e per ¤ Nel metodo invocato

accedere al loro valore si usa il nome della

classe seguito dal punto e dal nome della n PRIMA della sua esecuzione, tali valori

costante, Math.PI vengono usati in normali assegnazioni di valori

iniziali per le variabili parametro, che, però,

sono operazioni implicite e non figurano

Passaggio di parametri esplicitamente nel codice

n È un meccanismo simile alla restituzione del

valore, solo che la "variabile" utilizzata per

restituire un valore è implicita e non ha un

nome (ma ha un tipo…)

Parametri formali ed effettivi ¤ variabili locali (all’interno di un metodo)

¤ variabili parametro (dette parametri formali)

¤ variabili di esemplare o di istanza

¤ variabili statiche o di classe

¨ Vediamo ora qual è il loro ciclo di vita, cioè

quando vengono create e fin quando

continuano ad occupare lo spazio in memoria

riservato loro

Una variabile locale

¤ viene creata quando viene eseguito

l’enunciato in cui viene definita

¤ viene eliminata quando l’esecuzione del

programma esce dal blocco di enunciati in cui

la variabile era stata definita

¤ se non è definita all’interno di un blocco di

enunciati, viene eliminata quando l’esecuzione

del programma esce dal metodo in cui la

stato

Un metodo puo’ invece modificare lo di variabile viene definita

oggetto

un passato come parametro (implicito

o esplicito) Una variabile parametro (formale)

¤ viene creata quando viene invocato il metodo

¤ viene eliminata quando l’esecuzione del

metodo termina

riferimento

Ma non può modificare il

contenuto nella variabile oggetto che ne

costituisce il parametro effettivo Una variabile statica

¤ viene creata quando la macchina virtuale

Java carica la classe per la prima volta

¤ viene eliminata quando la classe viene

scaricata dalla macchina virtuale Java

In Java, il passaggio dei parametri è effettuato

valore

“per valore”, cioè il del parametro n ai fini pratici, possiamo dire che esiste

effettivo (usato nell’invocazione) viene sempre...

assegnato al parametro formale (cioè alla

variabile parametro) Una variabile di esemplare

questo impedisce che il valore del

¤

parametro effettivo (nel metodo ¤ viene creata quando viene creato l’oggetto a

invocante) possa essere modificato cui appartiene

¤ viene eliminata quando l’oggetto viene

eliminato

Ciclo di vita di una variabile ¨ Un oggetto viene eliminato dalla JVM quando

¨ In Java esistono quattro diversi tipi di variabili non esiste più alcun riferimento ad esso

¤ la zona di memoria riservata all’oggetto viene ¤ sono così visibili anche all’interno di classi

“riciclata”, cioè resa di nuovo libera, dal che si trovano nello stesso package (cioè di file

raccoglitore di rifiuti (garbage collector) della sorgenti che si trovano nella stessa cartella)

JVM, che controlla periodicamente se ci sono ¤ Esiste anche lo specificatore protected…

oggetti da eliminare Conoscere l’ambito di visibilità e il ciclo di

Le variabili di esemplare e le variabili vita di una variabile è molto importante per

statiche, se non sono inizializzate capire quando e dove è possibile usare di

esplicitamente, vengono inizializzate nuovo il nome di una variabile che è già

automaticamente ad un valore predefinito stato usato

¤ zero per le variabili di tipo numerico e ¨ Le regole appena viste consentono di usare,

carattere in metodi diversi della stessa classe, variabili

¤ false per le variabili di tipo booleano locali o variabili parametro con gli stessi

nomi, senza creare alcun conflitto, perché

¤ null per le variabili oggetto ¤ i rispettivi ambiti di visibilità non sono

Le variabili parametro vengono inizializzate sovrapposti

copiando il valore dei parametri effettivi usati

nell’invocazione del metodo

non

¨ Le variabili locali vengono inizializzate Consigli per la progettazione di una

automaticamente, ed il compilatore effettua un Classe

controllo semantico impedendo che vengano 1. Stabilire quali sono le caratteristiche

utilizzate prima di aver ricevuto un valore essenziali degli oggetti della classe, e

fare un elenco delle operazioni che

sarà possibile compiere su di essi:

Ambito di visibilita’ di una variabile astrazione

processo di l'interfaccia

¨ L’ambito di visibilità di una variabile indica 2. Definire e scrivere

pubblica.

la parte di codice nel quale è lecito usare la Ovvero, scrivere l'intestazione

variabile (per leggerne il valore e/o assegnarle della classe, definire i costruttori ed i

un valore) metodi pubblici da realizzare, e scrivere

firma

la (specificatore di accesso, tipo di

¨ Per le variabili locali e le variabili valore restituito, nome del metodo,

parametro, l’ambito di visibilità è quello che eventuali parametri espliciti) di ciascuno

determina anche il relativo ciclo di vita di essi. variabili di esemplare

¨ Per le variabili statiche e le variabili di 3. Definire le ed

variabili statiche.

esemplare, l’ambito di visibilità dipende dalla eventuali E`

dichiarazione public o private necessario individuare tutte le variabili

necessarie (quante? quali? dipende dalla

Se le variabili statiche e le variabili di classe!). Per ciascuna di esse si deve,

esemplare sono dichiarate poi, definire tipo e nome.

¤ public, sono visibili in ogni parte del Se un metodo non restituisce valori (ovvero il

programma tipo del valore restituito è void), scrivete

vuoto,

¤ private, sono visibili soltanto all’interno della inizialmente un corpo ovvero {}.

classe in cui sono definite ¨ Se un metodo restituisce valori non void,

¨ È anche possibile dichiararle senza indicare scrivete inizialmente un corpo fittizio

uno specificatore di accesso (accesso di contenente solo un enunciato di return:

default) ¨ {return 0;} per metodi che restituiscono

valori numerici o char

¨ {return false;} per metodi che restituiscono perché si comporta come una pila di piatti o di

valori booleani libri…

¨ {return null;} per metodi che restituiscono ¤ Quando un metodo in esecuzione invoca un

riferimenti ad oggetti. altro metodo viene aggiunto in cima alla pila il

record di attivazione del metodo invocato

4. Scrivere il codice dei metodi. ¤ Quando un metodo termina la sua esecuzione

Non appena si è realizzato un metodo, si deve viene tolto dalla pila e si torna ad eseguire il

compilare e correggere gli errori di metodo che l’aveva invocato (quindi quello

compilazione (se il corpo del metodo è immediatamente “sotto”) dal punto in cui

particolarmente lungo e complicato, compilare eravamo rimasti

anche prima di terminare il metodo). Lancio delle eccezioni

¨ Non aspettate di aver codificato tutta la

classe per compilare! ¨ Il meccanismo generale di segnalazione di

errori (o di condizioni di funzionamento

¤ Altrimenti vi troverete, molto probabilmente, anomale) in Java consiste nel “far lanciare”

a dover affrontare un numero elevato di errori, (throw) un’eccezione al metodo durante la cui

con il rischio di non riuscire a venirne a capo in esecuzione si è verificato il malfunzionamento

un tempo ragionevole (come quello a lancia

disposizione per la prova d'esame...). ¨ Quando un metodo un’eccezione…

5. Collaudare la classe ¤ l’esecuzione del metodo viene

immediatamente interrotta

classe di collaudo

¨ Ovvero scrivere una

contenente un metodo main, all'interno del ¤ l’eccezione viene “propagata” al metodo

quale vengono definiti e manipolati oggetti chiamante, che si “risveglia” (come se il

appartenenti alla classe da collaudare. metodo chiamato fosse terminato in modo

“normale”) ma viene a sua volta subito

E` possibile scrivere tutte le classi in un unico interrotto per la presenza dell'eccezione

file. In tal caso, il file .java deve contenere una

sola classe public. In particolare, la classe l’eccezione viene via via propagata fino al

contenente il metodo main deve essere public metodo main, che si “risveglia” ma viene a sua

mentre la classe (o le classi) da collaudare non volta subito interrotto

deve essere public (non serve scrivere private, n L’interruzione del metodo main provoca

semplicemente non si indica l'attributo public). l’arresto anormale del programma con la

Il file .java deve avere il nome della classe segnalazione, da parte dell’interprete,

public dell’eccezione che è stata la causa di tale

terminazione prematura

Record di attivazione Il lancio di un’eccezione è quindi un modo per

terminare un programma in caso di errore

¨ Quando un metodo entra in esecuzione viene

creata nella memoria Stack una zona riservata,

chiamata record di attivazione, che contiene le Gestire le eccezioni di input

informazioni di quel metodo:

¤ Parametri formali

¤ Variabili locali In questo esempio di conversione di stringhe in

¤ Punto di ritorno numeri, supponiamo che la stringa sia stata

introdotta dall’utente

Pila di attivazione ¤ Se la stringa non contiene un numero valido,

¨ La zona di memoria che contiene i record di il metodo parseInt lancia un’eccezione di tipo

attivazione dei metodi invocati si chiama Stack NumberFormatException

gestire

Sarebbe interessante poter tale non viene memorizzata in una variabile… dove

eccezione, segnalando l’errore all’utente e va a finire? Si può fare?

chiedendo di inserire nuovamente il dato ¨ È perfettamente lecito, la stringa restituita

anziché terminare

numerico, viene "abbandonata" e non sarà più disponibile

prematuramente il programma all’interno del programma in esecuzione (ma, in

intercettare

¤ Possiamo l’eccezione e effetti, non serve)

gestirla mediante il costrutto sintattico

try/catch Scanner: comportamenti anomali

A volte nextInt e nextDouble si comportano

in modo "strano"…

in realtà sempre in modo ben documentato,

cerchiamo di capire…

¤ Per prima cosa, leggono e "consumano" (cioè

eliminano dall'estremità iniziale del flusso su

caratteri di

cui opera lo Scanner) eventuali

spaziatura (che sono spazi, caratteri di

di che tipo è

Bisogna poi sapere l’eccezione tabulazione e caratteri di "andata a capo",

event

Dettagli
Publisher
A.A. 2020-2021
8 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher togna52 di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Rodà Antonio.