Organizzazione della lezione. Organizzazione della lezione. Lezione 5 Programmazione generica e eccezioni

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Organizzazione della lezione. Organizzazione della lezione. Lezione 5 Programmazione generica e eccezioni"

Transcript

1 Organizzazione della lezione Lezione 5 Programmazione generica e eccezioni Vittorio Scarano Corso di Programmazione Distribuita ( ) Laurea di I livello in Informatica Università degli Studi di Salerno La classe Object: madre di tutte le classi Il metodo equals Il metodo tostring Programmazione generica La classe ArrayList Le classi wrapper Le eccezioni motivazioni come si creano, lanciano, catturano 2 Organizzazione della lezione La classe Object La classe Object: madre di tutte le classi E la radice di ogni classe costruita Il metodo equals Il metodo tostring Programmazione generica La classe ArrayList Le classi wrapper Le eccezioni motivazioni come si creano, lanciano, catturano In pratica ogni classe Java eredita da Object inutile specificarlo tramite public class Prova extends Object { Rappresenta una maniera elegante per offrire servizi a tutte le classi create dal programmatore e la possibilità di ridefinire questi servizi attraverso l override dei metodi di Object 3 4

2 Alcuni usi semplici e già visti della classe Object Una variabile Object può fare riferimento a qualsiasi oggetto: Object obj = new Employee ( Tizio, 25000, 1987, 10, 1); Per poter usare però i metodi specifici dell oggetto è necessario convertirlo esplicitamente Employee e = (Employee ) obj ; Servizi offerti da Object: metodo equals : permette di verificare la uguaglianza tra oggetti metodo tostring permette la stampa di un oggetto 5 Organizzazione della lezione La classe Object: madre di tutte le classi Il metodo equals Il metodo tostring Programmazione generica La classe ArrayList Le classi wrapper Le eccezioni motivazioni come si creano, lanciano, catturano 6 Il metodo equals Obiettivi: verificare se un oggetto è uguale ad un altro La implementazione del metodo da parte di Object: controlla se due oggetti puntano o meno alla stessa area di memoria strategia generica (e efficace) ma che deve essere ampliata per trattare i casi specifici della classe Tipicamente, del metodo viene fatto override definendo cosa si intende per uguaglianza nel caso specifico Le specifiche del linguaggio Java per (1) equals (1) (1) il metodo deve essere riflessivo: per ogni riferimento x non nullo, x.equals(x) deve restituire true (2) il metodo deve essere simmetrico: per qualsiasi riferimento x e y, x.equals(y) deve restituire true sse y.equals(x) restituisce true (3) il metodo deve essere transitivo: per qualsiasi riferimento x, y e z, se x.equals(y) è true e y.equals(z) è true allora x.equals(z) restituisce true 7 8

3 Le specifiche del linguaggio Java per (2) equals (2) (4) il metodo deve essere consistente se gli oggetti a cui fanno riferimento x e y non sono cambiati, allora chiamate ripetute a x.equals(y) danno sempre lo stesso risultato (5) per ogni riferimento x non nullo, il metodo x.equals(null) deve restituire false 9 L esempio della classe Employee Employee.java import java.util.*; // per Date e Calendar public class Employee { public Employee (String n, double s, int year, int month, int day) { name = n; salary = s; GregorianCalendar cal = new GregorianCalendar(year, month-1, day); hireday = cal.gettime(); //..Uno dei metodi di accesso public String getname () { return name; private String name; private double salary; private Date hireday; Il costruttore stesso nome della classe assegna i campi dell oggetto che costruisce Un metodo di accesso restituisce il nome Campi della istanza una stringa (Nome) un double (salario) data di assunzione tutti campi privati 10 L esempio della classe Manager La dipendenza tra le due classi Manager.java public class Manager extends Employee { public Manager (String n, double s, int year, int month, int day) { super (n, s, year, month, day); bonus = 0; //.. Metodi acc./mod. public double getbonus () { return bonus; public void setbonus(double b) { bonus = b; //. Metodo override public double getsalary() { double bs=super.getsalary(); return bs+bonus; // Variabili istanza private double bonus; Il costruttore richiama il costruttore della superclasse assegna il valore del campo bonus Accesso/Modifica restituisce il bonus assegna il bonus Metodo che fa override il salario è la somma del salario da impiegato e il bonus Variabile istanza 11 Employee - name : String - salary : double - hireday : Date «constructor» +Employee(n: String, s:double, year: int, month: int, day: int) «misc» + getname() : String + getsalary() : double + gethireday() : Date extends Manager - bonus : double «constructor» +Manager(n: String, s:double, year: int, month: int, day: int) «misc» + getbonus() : double + setbonus(b:double) : void + getsalary() : double Qualsiasi oggetto della sottoclasse è anche un oggetto della superclasse 12

4 Cosa è il metodo equals per Employee? Il metodo equals della classe Employee Deve controllare: se l oggetto passato (parametro esplicito) è null restituisce false (regola 5) se le classi dei due oggetti non corrispondono restituisce false se tutti i campi dei due oggetti sono uguali restituisce true altrimenti restituisce false Attenzione: se l oggetto passato appartiene ad una sottoclasse il test deve restituire false! 13 Employee.java import java.util.*; // per Date e Calendar public class Employee {. public boolean equals (Object otherobj) { // per efficienza if (this == otherobj) return true; // regola 5 if (otherobj == null) return false; // se le classi non corrispondono.. false! if (getclass()!= otherobj.getclass()) return false; // ok, otherobj è Employee non nullo Employee other = (Employee) otherobj; return ( name.equals(other.name) && salary == other.salary && hireday.equals(other.hireday) ) Parametri esplicito implicito (l oggetto) Per ottimizzare: controlla se riferiscono alla stessa locazione il caso più comune Regola 5 Uguaglianza di classi Ora è possibile il controllo effettivo sui singoli campi 14 Cosa è il metodo equals per Manager? Il metodo equals della classe Manager E una sottoclasse di Employee, quindi se non sono uguali in quanto Employee allora non sono uguali (restituisci false) se risultano uguali in quanto Employee dobbiamo controllare che risultino uguali anche in quanto Manager (campi specifici della estensione a Manager) Si deve utilizzare il metodo equals della superclasse Manager.java public class Manager extends Employee { public boolean equals (Object otherobj) { if (!super.equals(otherobj)) return false; Manager other = (Manager) otherobj; return bonus==other.bonus; Controlliamo se risultano diversi in quanto Employee in questo caso saranno diversi come Manager Attenzione: il metodo della superclasse ha anche già controllato che this e otherobj appartengano alla stessa classe! Controllo il singolo campo specifico 15 16

5 Organizzazione della lezione Il metodo tostring La classe Object: madre di tutte le classi Restituisce una stringa che è il valore dell oggetto Il metodo equals Il metodo tostring Programmazione generica La classe ArrayList Le classi wrapper Le eccezioni motivazioni come si creano, lanciano, catturano Possibile fare override del metodo fornito da Object che fornisce solo il nome della classe e la locazione di memoria dove è memorizzato l oggetto Convenzione utilizzata: il nome della classe seguito da tutti i valori dei campi, racchiusi tra [..] Esempio: Employee e; System.out.println (e); 17 Employee[name= Tizio, salary=10000, hireday= 10 agosto 2000 ] 18 Un esempio con la classe EmployeeTest Senza aggiungere tostring a Employee EmployeeTest.java import java.util.*; public class EmployeeTest {public static void main(string[] args) { Employee[] staff = new Employee[3]; staff [0]=new Employee ("Gianni", 30000,1987, 12, 10); staff [1]=new Employee ("Giorgio", 35000, 1985, 10, 31); staff [2]=new Manager ("Ugo", 28000, 2000, 1, 1); for (int i=0; i< staff.length; i++) System.out.println ( "Nome:"+ staff[i].getname() + " Salario:" + staff[i].getsalary() + " Assunto:"+ staff[i].gethireday() ); for (int i=0; i< staff.length; i++) System.out.println(staff[i]); Come al solito: riempimento dell array stampa dell array Utilizzo del metodo tostring notare che uno dei tre è della classe Manager 19 C:\>javac Employee.java Manager.java C:\>javac EmployeeTest.java C:\>java EmployeeTest Nome:Gianni Salario: Assunto:Thu Dec 10. Nome:Giorgio Salario: Assunto:Thu Oct 31. Nome:Ugo Salario: Assunto:Sat Jan 01. Employee@ed645 Employee@1a698a Manager@7077e C:\> Metodo tostring definito in Object: nome della classe e locazione di memoria 20

6 Il metodo tostring della classe Employee Con il metodo tostring a Employee Employee.java import java.util.*; // per Date e Calendar public class Employee {. public String tostring () { return getclass().getname() + [name= + name +,salary= + salary +,hireday= +hireday + ] ; Stampa il nome della classe Aggiunge i parametri la classe Date offre anche essa un metodo tostring usato per stampare hireday C:\>javac Employee.java C:\>java EmployeeTest Nome:Gianni Salario: Assunto:Thu Dec 10. Nome:Giorgio Salario: Assunto:Thu Oct 31. Nome:Ugo Salario: Assunto:Sat Jan 01. Employee[name=Gianni,salary= ,hireDay= ] Employee[name=Giorgio,salary= ,hireDay= ] Manager[name=Ugo,salary= ,hireDay ] C:\> Metodo tostring definito in Employee: nome della classe e valori dei campi Il metodo tostring della classe Manager Con il metodo tostring a Manager Manager.java public class Manager extends Employee {. public String tostring () { return getclass().getname() + [name= + getname() +,salary= + getsalary() +,hireday= + gethireday() +,bonus= + bonus + "]" ; Stampa il nome della classe Aggiunge i parametri compreso bonus deve necessariamente usare i metodi di accesso get() per leggere i campi private della superclasse 23 C:\>javac Manager.java C:\>java EmployeeTest Nome:Gianni Salario: Assunto:Thu Dec 10. Nome:Giorgio Salario: Assunto:Thu Oct 31. Nome:Ugo Salario: Assunto:Sat Jan 01. Employee[name=Gianni,salary= ,hireDay= ] Employee[name=Giorgio,salary= ,hireDay= ] Manager[name=Ugo,salary= ,hire,bonus=0.0] C:\> Metodo tostring definito in Employee oppure in Manager : nome della classe e valori dei campi 24

7 Organizzazione della lezione Programmazione generica La classe Object: madre di tutte le classi Il metodo equals Il metodo tostring Programmazione generica La classe ArrayList Le classi wrapper Le eccezioni motivazioni come si creano, lanciano, catturano Permessa dalla esistenza di una superclasse comune a tutti gli oggetti e, quindi, di alcuni metodi comuni Un esempio: come scrivere un metodo che cerchi un elemento in un array e restituisce l indice, se trovato, oppure -1 static int find (Object [ ] a, Object key) { for (int i=0; i < a.length; i++) if (a[i].equals(key)) return i; return -1; funziona con array di Employee, array di Date, array di Stack (se implementiamo equals!) etc.! Dimensione dinamica degli array La classe ArrayList e gli array Importante caratteristica degli array: permette il dimensionamento a run-time degli array Possibile (anche se in maniera complessa) in altri linguaggi In Java è semplice: Problema: int actualsize =.; Employee[ ] staff = new Employee[actualSize]; una volta stabilita la dimensione (a run-time) è possibile cambiarla (ingrandendo o rimpicciolendo l array)? 27 Differenze: gli array sono parte del linguaggio Java la classe ArrayList è una classe di libreria del package java.util La classe ArrayList contiene elementi di tipo Object per aggiungere un elemento si usa il metodo add Esempio: ArrayList staff = new ArrayList(); staff.add (new Employee(.) ); staff.add (new Employee(.) ); Caratteristica fondamentale: l ArrayList alloca automaticamente spazio se risulta necessario 28

8 Alcuni metodi della classe ArrayList Accesso agli elementi della classe ArrayList Costruttore: permette di stabilire una capacità iniziale Metodo ensurecapacity() assicura che l array possa contenere x elementi prima di rilocarsi staff.ensurecapacity(200); Metodo trimtosize() liberare la memoria in eccesso Metodo size() ArrayList staff = new ArrayList(100); staff.trimtosize(); for (int i = 0; i < staff.size(); i++) restituisce il numero di elementi presenti 29 La semplicità degli ArrayList comporta un prezzo: l accesso agli elementi non è semplice come per array Per settare l i-mo elemento si deve usare: staff.set (i, tizio); laddove se staff fosse un array avremmo usato: staff[i] = tizio; Recuperare un elemento richiede un casting: Employee e = (Employee) staff.get(i); infatti il metodo get restituisce un Object 30 La pericolosità degli ArrayList Utilizzo degli elementi di ArrayList Insita nella capacità di usare Object! non vengono effettuati controlli a tempo di compilazione sulla consistenza ma solamente a run-time! Date birthday = new ; staff.set (i, birthday);. // continua in compilazione passa ma se poi facciamo. //continua Employee e = (Employee) staff.get(i); causiamo un errore a run-time 31 Attenzione: differenza tra il metodo ed il metodo staff.set (i, tizio); staff.add (i, tizio); set()assegna la posizione i-ma a tizio add() inserisce tizio spostando tutti gli elementi avanti di una posizione Disponibile anche: staff.add (tizio); che inserisce dopo l ultima posizione piena di staff 32

9 Organizzazione della lezione Motivazioni alle classi wrapper La classe Object: madre di tutte le classi Differenza sostanziale tra: Il metodo equals Il metodo tostring Programmazione generica La classe ArrayList Le classi wrapper Le eccezioni motivazioni come si creano, lanciano, catturano i tipi definiti (int, boolean, double, etc..) che fanno parte del linguaggio le classi definite dal programmatore (e quindi modificabili) che ereditano da Object Un problema: posso creare un ArrayList di interi? ArrayList list = new ArrayList(); list.add(44); //Errore! 33 no! è richiesto un Object e 44 è intero! 34 Le classi wrapper Metodi di utilità delle classi wrapper Permettono di creare un vero e proprio oggetto partendo da un tipo definito esiste una classe Integer che corrisponde a int esiste una classe Double che corrisponde a double, etc. Le classi wrapper sono final e i valori memorizzati non possono essere modificati non possiamo incrementare un oggetto Integer A cosa servono? Innanzitutto: ArrayList list = new ArrayList(); list.add(new Integer (44) ); //funziona! Le classi sono la posizione giusta per inserire metodi di utilità e costanti Conversione tra tipi di dato: Integer.doubleValue() Integer.floatValue() Integer.valueOf(), (converte stringa in intero) etc. Costanti utili: Integer.MIN_VALUE, Integer.MAX_VALUE 35 36

10 Un esempio di uso La classe DoubleArrayList Per usare ArrayList con double dobbiamo necessariamente utilizzare le classi wrapper Questo rende l accesso agli elementi alquanto farraginoso: ArrayList list = new ArrayList(); list.add(new Double (44.32) ); double x = ( (Double) list.get(i)).doublevalue(); Obiettivo: creare una classe ArrayList di Double 37 DoubleArrayList.java public class DoubleArrayList { public DoubleArrayList { list = new ArrayList(); // Metodi di accesso e mod. public void set (int n, double x) { list.set (n, new Double (x)); public void add (double x) { list.add (new Double(x)); public double get (int n) { return ((Double)list.get(n)).doubleValue(); public int size() { return list.size(); private ArrayList list; Costruttore: crea la variabile istanza list Metodi di accesso: set: crea un oggetto Double che viene inserito in list get: preleva il valore da list casting in Double ottiene il valore come double Variabile di istanza 38 Alcuni suggerimenti per la ereditarietà Organizzazione della lezione Inserire operazioni/campi comuni nella superclasse La classe Object: madre di tutte le classi questo è uno degli scopi: risparmiare tempo a scrivere codice Non sopravvalutare protected in effetti chiunque può scrivere sottoclassi, magari solamente per poter accedere a campi della superclasse! Non abusare troppo di istanceof usare il polimorfismo ed una accurata progettazione Il metodo equals Il metodo tostring Programmazione generica La classe ArrayList Le classi wrapper Le eccezioni motivazioni come si creano, lanciano, catturano 39 40

11 Il Mondo reale Il tipo di problemi da considerare In un mondo perfetto: Gli errori non capitano mai Invece i file da aprire non ci sono il nome di un utente risulta digitato scorrettamente etc. etc Un linguaggio di programmazione che si rispetti dovrebbe offrire strumenti per facilitare la gestione degli errori da parte del programmatore 41 Errori di input dell utente: digitazione di una URL scorretta sintatticamente, che la parte del programma che usa la rete cerca di utilizzare Errore dei dispositivi: stampante spenta o con carta terminata pagina HTML non disponibile ( sei collegato alla rete? ) Restrizioni fisiche: disk full Errori di codice pop da stack vuoti, divisione per zero 42 Il meccanismo delle eccezioni Propagazione delle eccezioni Quando una condizione eccezionale avviene ( eccezione ) il metodo crea un oggetto eccezione e lo affida (per la gestione) al sistema run-time L oggetto contiene varie informazioni su il tipo di eccezione dove è capitata etc. Il sistema run-time cerca qualcuno (gestore delle eccezioni) che sia in grado di trattare la eccezione altrimenti il programma termina Le eccezioni si propagano attraverso blocchi di metodi Java passando al metodo chiamante (sullo stack) e così via, fino a che: viene catturata e gestita oppure viene gestita dalla JVM che: stampa un messaggio di errore stampa le chiamate di metodi sullo stack (stack trace) esce 43 44

12 Le eccezioni in Java I vantaggi di questo meccanismo Eccezione: oggetto che indica condizioni eccezionali (errori) avvenuti nel programma Una eccezione viene: "lanciata" (throw) quando si segnala l'errore "colta" (catch) (o catturata) quando viene trattata Permette di gestire gli errori: con semplicità con efficienza in maniera strutturata/strutturale Separare il codice per la gestione degli errori dal codice normale I tipi di errore possono essere creati e raggruppati creando una gerarchia Gli errori possono essere trattati in locazioni specifiche: senza dover disperdere la gestione degli errori in tutto il codice Le eccezioni sono oggetti La classe Exception Istanza di una sottoclasse di java.lang.throwable Error : condizioni della macchina virtuale (esaurimento di risorse interne, etc.) non recuperabili e (di norma) da non cogliere Exception :condizioni recuperabili del programma Eccezioni incontrollate (specifiche del linguaggio) Eccezioni controllate (specifiche di applicazione) 47 Le condizioni recuperabili in RuntimeException si trovano problemi come: cast difettoso, accesso ad array fuori dai limiti, uso ed accesso di un puntatore nullo, etc. tutti i problemi causati dal programmatore! in Exception si trovano problemi come: lettura dopo la fine di un file, apertura di un URL sintatticamente errato, oggetto Class per cui la stringa non indica una classe esistente, etc. tutti i problemi causati dall utente/dall ambiente 48

13 Informazioni sulle eccezioni Metodi che lanciano eccezioni Le eccezioni (come oggetti) hanno dati e metodi che possono essere usati. Esempi: Throwable ha un messaggio String assegnabile dal costruttore InterruptedIOException contiene un intero bytestransferred che indica quanto I/O è stato compiuto 49 Nella dichiarazione di un metodo si dichiara i modificatori di accesso del metodo il tipo di metodo (static, abstract, etc.) il tipo del parametro restituito il tipo ed il nome dei parametri formali il tipo di eccezioni che quel metodo può generare Questo permette/obbliga chi usa il metodo a fare il catch della eccezione public void read_file() throws IOException {.. 50 Cosa si deve dichiarare come eccezione Come lanciare una eccezione In generale non si devono dichiarare tutte le eccezioni Throwable Quattro possibili situazioni: il metodo chiama un metodo che può lanciare una eccezione controllata il metodo può lanciare (generare) una eccezione controllata errore di programmazione (indice di array etc.) errore interno della JVM Ovviamente, si devono dichiarare le eccezioni dei primi due casi: Una situazione che può capitare in read_file() si sta leggendo un file che dovrebbe essere di 1024 byte ma dopo 657 byte il file termina In questo caso, esiste una eccezione EOFException (derivata da IOException) che segnala proprio queste condizioni In questo caso il metodo deve dichiarare: public void read_file() throws EOFException {.. per gli altri due, meglio cercare di risolvere i problemi! 51 52

14 Il metodo read_file Creazione di classi di eccezioni public void read_file() throws EOFException {.. //. legge il file while ( ) { if (ch == -1 && n < filelength) // incontro EOF inattesa { EOFException e = new EOFException(); throw e; Supponiamo che n sia il numero di caratteri letti filelength è la lunghezza del file Se si verifica la condizione di eccezione costruisco un oggetto della classe EOFException e lo lancio 53 E possibile creare delle eccezioni specializzate per la applicazione Basta derivarle da (o da una sua sottoclasse) Di solito: si assegna alla eccezione un messaggio esplicativo lo si passa al costruttore della superclasse si usa il metodo di per poter accedere alla stringa esplicativa 54 Una eccezione FileFormatException Gestione delle eccezioni: propagazione class FileFormatException extends IOException { public FileFormatException () { super(); public FileFormatException (String s) { super (s); if ( ) throw new FileFormatException( Formato errato nel file dati ); Costruttori senza argomenti con una stringa di commento che viene passata al costruttore della superclasse Un esempio di uso 55 Se un metodo usa un altro metodo che può lanciare una eccezione, ci sono solo due possibilità può trattarla può propagarla Il compilatore controlla la correttezza del trattamento delle eccezioni Se si propaga, il metodo va scritto con throws public void gestionefiledati() throws EOFException {.. //. legge il file read_file(); 56

15 Gestione delle eccezioni: cattura (catch)( Un esempio di cattura delle eccezioni Java fornisce un meccanismo per: racchiudere un intero blocco di codice al cui interno vengono intercettate le eccezioni e fornire (per ogni eccezione) colta le modalità di gestione try {. catch (.. ) { fornire un blocco di istruzioni che viene comunque eseguito (con o senza eccezioni) try {. catch (.. ) { finally { 57 public void gestionefiledati() {.. try { //. legge il file read_file(); catch (EOFException e) { // codice per trattare l'oggetto e catch (FileFormatException e) { // codice per trattare l'oggetto e finally { // comunque prima di uscire rilascia // risorse accedute..... L uso del metodo read_file() in un blocco try Vengono intercettate e gestite le eccezioni Possibile specificare la cattura in maniera diversificata 58 Uso di finally e delle catch L'uscita da un blocco try..catch.catch Tre possibilità il codice non lancia alcuna eccezione viene eseguito il blocco try, il blocco finally e poi continua il codice lancia una eccezione che viene catturata viene eseguito il blocco try (fino al lancio della eccezione) poi il blocco catch corrispondente, poi il blocco finally e poi continua il codice lancia una eccezione che non viene catturata viene eseguito il blocco try (fino al lancio della eccezione) poi il blocco finally e poi la eccezione viene lanciata al metodo chiamante La parte finally dello statement viene eseguita: normalmente al termine del blocco try con eccezioni colte e trattate da catch con eccezioni non colte e trattate ma propagate a causa di un break, continue o return attenzione! prima di un return viene eseguita la finally Di grande utilità per "ripulire" Concentra in una posizione tutte le operazioni si può usare anche senza catch 59 60

16 Alcuni suggerimenti sull uso delle eccezioni 1. Non sostituire controlli semplici Evitiamo alcuni abusi/errori nell uso delle eccezioni In pratica si verifica un uso smodato delle eccezioni invece di verificare l input dell utente, basta utilizzarlo (ad esempio come URL) e poi lasciare che (nel caso l input fosse scorretto) venga lanciata (e gestire) una C è di solito un costo (efficienza) nella gestione di una eccezione Un programmatore potrebbe essere tentato di usare, invece di: if (! s.empty() ) s.pop(); una gestione con eccezioni try { s.pop(); catch (EmptyStackException e) { Perché non è consigliabile 2. Non microgestire le eccezioni Efficienza: il tempo per intercettare una eccezioni (con tutto l accesso allo stack delle chiamte di metodi) risulta molto più lento Un esempio sulle due versioni mostrate (sullo stesso calcolatore) la versione con l richiede tempo 110 millisecondi la versione con la eccezione richiede millisecondi E inutile gestire eccezioni ripetute in un blocco separato. for (i = 0; i < 100; i++) { try { n = s.pop(); catch (StackEmptyException e) {.. try { out.writeint (n); catch (IOException e) {.. try { for (i = 0; i < 100; i++) { n = s.pop(); out.writeint (n); catch (StackEmptyException e) {.. catch (IOException e) {

17 3. Non soffocare le eccezioni 4. Propagare eccezioni non è un reato Spesso le eccezioni disturbano il programmatore si scrive un metodo che può lanciare (raramente) una eccezione il compilatore chiede di inserire throws sul metodo ma questo significa che tutti i metodi che usano quel metodo dovranno gestirla. Ecco la soluzione (errata!): soffocare la eccezione nella culla (eccezionicidio?) public metodo (String s) { try { // tutto il codice del metodo catch (Exception e) { //così non darà mai più fastidio 65 Spesso ci si sente forzati a trattare le eccezioni al più presto nella catena di chiamate di metodi Questo a volte può essere un errore progettuale solamente i metodi abbastanza in alto nella catena possono essere in grado di gestire la eccezione hanno maggiore conoscenza della semantica delle operazioni implementate e possono presentare verso l utente problema (e possibili soluzioni) che sono più comprensibili 66

La classe Object. L2-Linguaggi di Programmazione II-unina 1

La classe Object. L2-Linguaggi di Programmazione II-unina 1 La classe Object L2-Linguaggi di Programmazione II-unina 1 JAVA è dotata di una classe speciale, una classe cosmica, denominata Object Qualsiasi altra classe deriva da Object Object Una variabile di tipo

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Dettagli

GESTIONE DEGLI ERRORI

GESTIONE DEGLI ERRORI GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori

Dettagli

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

RETI DI CALCOLATORI Linguaggio Java: Eccezioni Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione

Dettagli

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di

Dettagli

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli,

Dettagli

Laboratorio di reti I

Laboratorio di reti I Laboratorio di reti I Stefano Brocchi brocchi@dsi.unifi.it 13 ottobre, 2009 Stefano Brocchi Laboratorio di reti I 13 ottobre, 2009 1 / 27 Introduzione Obiettivi del corso Aspetti di programmazione Java

Dettagli

Programmazione ad Oggetti

Programmazione ad Oggetti Programmazione ad Oggetti Java Eccezioni Eccezioni in breve Un eccezione è un oggetto che descrive una situazione anomala o di errore L eccezioni vengono lanciate da una parte di un programma e possono

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

Lezione 4 Programmazione Object-Oriented in Java

Lezione 4 Programmazione Object-Oriented in Java Lezione 4 Programmazione Object-Oriented in Java Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione La programmazione

Dettagli

Insegnamento di Laboratorio di algoritmi e strutture dati

Insegnamento di Laboratorio di algoritmi e strutture dati Insegnamento di Laboratorio di algoritmi e strutture dati Roberto Posenato ver. 0.6, 31/01/2008 1 / 25 Si comincia... 1 Esigenza... Definizione Tipi di eccezioni Sollevare eccezioni Gestire le eccezioni

Dettagli

Gestione delle eccezioni

Gestione delle eccezioni Gestione delle eccezioni Raffaella Brighi, a.a. 2007/08 Ereditarietà Corso di Algoritmi e programmazione. A.A. 2007-08 CdL Operatore Informatico Giuridico. Casi di insuccesso Vi sono numerosi problemi

Dettagli

Organizzazione della lezione. Organizzazione della lezione. Lezione 3 Programmazione Object-Oriented. Oriented in Java

Organizzazione della lezione. Organizzazione della lezione. Lezione 3 Programmazione Object-Oriented. Oriented in Java Organizzazione della lezione Lezione 3 Programmazione Object-Oriented Oriented in Java Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli

Dettagli

Ereditarietà (ultima)

Ereditarietà (ultima) Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction...

Dettagli

Gestione delle eccezioni

Gestione delle eccezioni Gestione delle eccezioni Le eccezioni sono un meccanismo per gestire situazioni anomale durante l esecuzione dei metodi. La gestione delle eccezioni deve garantire i seguenti principi: - le eccezioni non

Dettagli

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Programmazione Java Avanzata Programmazione Object- Oriented in Java Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Eccezioni Categorie di eccezioni checked unchecked Gestione delle eccezioni Clausola throws Costrutto try - catch - finally Comando

Dettagli

Il linguaggio Java. Le eccezioni

Il linguaggio Java. Le eccezioni Il linguaggio Java Le eccezioni Shit happens! Gli errori nei programmi si verificano Quello che è realmente importante è: cosa succede dopo che un errore si è verificato? TIGA 2 Eccezione Un'eccezione

Dettagli

Eccezioni predefinite

Eccezioni predefinite Eccezioni predefinite Java mette a disposizione molte eccezioni già confezionate, che descrivono la maggioranza dei problemi che possono verificarsi a run-time. Ognuna di queste è una classe. Tutte queste

Dettagli

Le eccezioni in Java

Le eccezioni in Java Eccezioni 1 Le eccezioni in Java i tipi di eccezione sono particolari classi che contengono solo il costruttore ci possono essere più costruttori overloaded sono definite in moduli separati da quelli che

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

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: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

Dettagli

Uguaglianza e copia di oggetti

Uguaglianza e copia di oggetti Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

16 - Ereditarietà, tipi e gerarchie

16 - Ereditarietà, tipi e gerarchie 16 - Ereditarietà, tipi e gerarchie Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito

Dettagli

Polimorfismo parametrico vs polimorfismo per inclusione

Polimorfismo parametrico vs polimorfismo per inclusione Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

Il linguaggio Java. La superclasse universale Object

Il linguaggio Java. La superclasse universale Object Il linguaggio Java La superclasse universale Object La classe Object La classe Object è la superclasse, diretta o indiretta, di ogni classe La classe Object definisce lo stato ed il comportamento base

Dettagli

Introduzione. Java. Errori. Errori

Introduzione. Java. Errori. Errori Java gestire gli errori con le eccezioni G. Prencipe prencipe@di.unipi.it Introduzione La filosofia generale di Java è che un programma con errori non deve girare Una grossa parte viene fatta (come avete

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Eccezioni ed asserzioni

Eccezioni ed asserzioni Eccezioni ed asserzioni I concetti relativi ad eccezioni, errori ed asserzioni e le relative gestioni, permettono allo sviluppatore di scrivere del software robusto, ovvero che riesca a funzionare correttamente,

Dettagli

Ereditarietà e Polimorfismo

Ereditarietà e Polimorfismo Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le

Dettagli

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1. OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,

Dettagli

Programmazione II. Lezione 13. Daniele Sgandurra 3/12/2010.

Programmazione II. Lezione 13. Daniele Sgandurra 3/12/2010. Programmazione II Lezione 13 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 3/12/2010 1/29 Programmazione II Lezione 13 3/12/2010 Sommario 1 Strutturare il Controllo 2 Java Oggetti e Classi 2/29 Programmazione

Dettagli

CloneNotSupportedException clone() Object clone() protected native Object clone() throws CloneNotSupportedException this

CloneNotSupportedException clone() Object clone() protected native Object clone() throws CloneNotSupportedException this Clonazione Importante esempio di eccezione controllata è CloneNotSupportedException che può essere lanciata dal metodo nativo clone() della classe Object. La dichiarazione di clone() è la seguente: protected

Dettagli

Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java

Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java 1 Specifica ed Implementazione di Tipi di Dato Astratti in Java cos è un tipo di dato astratto specifica di tipi di dati astratti un tipo

Dettagli

Programmazione a Oggetti. Eccezioni

Programmazione a Oggetti. Eccezioni Programmazione a Oggetti Eccezioni Sommario Eccezioni Generalità, motivazioni Eccezioni in Java Sollevamento Cattura Trattamento Eccezioni I programmi spesso si trovano ad operare in condizioni anomale:

Dettagli

OOP: L13: Eccezioni e loro trattamento in Java

OOP: L13: Eccezioni e loro trattamento in Java Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica A. Acc. 2005/2006 Programmazione Orientata agli Oggetti OOP: L13: Eccezioni e loro trattamento

Dettagli

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio)

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio) Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Riferimenti ad oggetti: Cosa si può fare con i riferimenti?

Dettagli

Eccezioni per codificare errori. Eccezioni. Gestione di eccezioni. lancio di eccezioni. checked e unchecked. cattura di eccezioni

Eccezioni per codificare errori. Eccezioni. Gestione di eccezioni. lancio di eccezioni. checked e unchecked. cattura di eccezioni Eccezioni Eccezioni per codificare errori lancio di eccezioni Eccezioni user defined checked e unchecked Gestione di eccezioni cattura di eccezioni Gestione degli errori Approccio tradizionale: codifica

Dettagli

SavingsAccount. BankAccount

SavingsAccount. BankAccount BankAccount public class BankAccount { private double balance; public BankAccount(){ this(0); public BankAccount(double initialbalance) { balance = initialbalance; public void deposit(double amount) {

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

STRUTTURE DATI: OLTRE GLI ARRAY LISTE STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

14 - Metodi e Costruttori

14 - Metodi e Costruttori 14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Esempi in Java di program.ne O-O

Esempi in Java di program.ne O-O Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico

Dettagli

La classe java.lang.object

La classe java.lang.object La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita

Dettagli

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),

Dettagli

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il

Dettagli

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona ed ed Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario ed scrittura su in Java ed ed di testo Scrivere stringhe su di testo

Dettagli

Programmazione con Java

Programmazione con Java Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:

Dettagli

Fondamenti di Informatica I

Fondamenti di Informatica I Sapienza Università di Roma, Facoltà di Ingegneria Corso di Fondamenti di Informatica I Canale 1 (A-K) Anno Accademico 2009-2010 Corso di Laurea in Ingegneria Informatica Docente: Camil Demetrescu Esercitatore:

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe

Dettagli

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona di Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona su Sommario di su di di di su Astrazione sugli oggetti di su Il concetto di classe Classe: realizza l astrazione

Dettagli

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere

Dettagli

Gestione delle Eccezioni

Gestione delle Eccezioni Gestione delle Eccezioni Condizioni di Errore Una condizione di errore in un programma può avere molte cause Errori di programmazione Divisione per zero, cast non permesso, accesso oltre i limiti di un

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di

Dettagli

Prova d Esame Compito A

Prova d Esame Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private static int counter=0; private int code; public

Dettagli

Esercitazione. Docente Ing. Mariateresa Celardo

Esercitazione. Docente Ing. Mariateresa Celardo Esercitazione Docente Ing. Mariateresa Celardo mariateresa.celardo@uniroma2.it Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore del motorino, velocità: un

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea

Dettagli

La fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo

La fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo Università di Roma La Sapienza, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Prof. Giuseppe De Giacomo & Monica Scannapieco Anno Accademico 2003/04 LA FASE DI PROGETTO E

Dettagli

Metodi. Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere:

Metodi. Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere: Metodi Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere: invocazione: esecuzione di un metodo assegnamento: cambia lo stato di un campo ripetizione:

Dettagli

Esempio 2: Subtyping

Esempio 2: Subtyping Esempio 2: Subtyping 22 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti mediante l aggiunta o la ridefinizione

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

Programmazione ad Oggetti. Java Parte II

Programmazione ad Oggetti. Java Parte II Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una

Dettagli

Introduzione alla programmazione con linguaggio Java {Dott.ssa E. Calabresu, Dr. M. Carta, Ing. M. Ennas, Ing. S. Piras, Ing. F.

Introduzione alla programmazione con linguaggio Java {Dott.ssa E. Calabresu, Dr. M. Carta, Ing. M. Ennas, Ing. S. Piras, Ing. F. Introduzione alla programmazione con linguaggio Java 2004 {Dott.ssa E. Calabresu, Dr. M. Carta, Ing. M. Ennas, Ing. S. Piras, Ing. F. Saba } Note di Copyright Queste trasparenze (slide) sono coperte dalle

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni

Dettagli

Introduzione. Java RTTI RTTI. Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime

Introduzione. Java RTTI RTTI. Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime Java riconoscere i tipi G. Prencipe prencipe@di.unipi.it Introduzione Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime In particolare determina il tipo

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

Le eccezioni sono eventi che si generano durante l esecuzione di un programma e in genere corrispondono a condizioni anomale.

Le eccezioni sono eventi che si generano durante l esecuzione di un programma e in genere corrispondono a condizioni anomale. Eccezioni Le eccezioni sono eventi che si generano durante l esecuzione di un programma e in genere corrispondono a condizioni anomale. Es.: divisioni per zero, indici array fuori range, malfunzionamento

Dettagli

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile

Dettagli

Programmazione II Compitino (Vers. B)

Programmazione II Compitino (Vers. B) Programmazione II Compitino (Vers. B) 15 gennaio 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Gestione delle eccezioni in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Gestione delle eccezioni in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 15 - Gestione delle eccezioni

Dettagli

RTTI Run-time type identification

RTTI Run-time type identification RTTI Run-time type identification Come determinare il tipo di un oggetto durante l'esecuzione RTTI 1 Ereditarietà Forma Linea Rettangolo Cerchio interface Forma { class Linea implements Forma { void ;

Dettagli

Definizione di classi. Walter Didimo

Definizione di classi. Walter Didimo Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

GESTIONE DEGLI ERRORI. Il gestore delle eccezioni

GESTIONE DEGLI ERRORI. Il gestore delle eccezioni Il gestore delle eccezioni GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. L approccio classico consiste nell inserire controlli (if else..) per cercare

Dettagli

Programmazione II Compitino (Vers. B)

Programmazione II Compitino (Vers. B) Programmazione II Compitino (Vers. B) 17 dicembre 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi

Dettagli

Eccezioni Precisazioni e approfondimenti

Eccezioni Precisazioni e approfondimenti Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di

Dettagli

Il linguaggio Java: aggiunte in Java 1.5

Il linguaggio Java: aggiunte in Java 1.5 .. Il linguaggio Java: aggiunte in Java 1.5 Una breve presentazione GENERICI Java 1.5 introduce i generici: classi che hanno un parametro di tipo. Nelle versioni precedenti a Java 1.5 si può definire:

Dettagli

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73 Capitolo 9 Tipi enumerativi, tipi generici e interfacce c 2005 Pearson Education Italia Capitolo 9-1 / 73 Sommario: Tipi enumerativi, tipi generici e interfacce 1 Definizione di tipi enumerativi La classe

Dettagli

Uso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Uso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Uso di classi e oggetti Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Tipi di dati Tipi primitivi: interi Java fornisce otto tipi primitivi indipendenti dall implementazione

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array e funzioni 2. Array e funzioni ricorsive 3. Array e confronto di array 2 Esercizio 1 Creare un programma che legga da

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E04 Esercizi sui problemi di ordinamento C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Algoritmi di Ordinamento

Dettagli

Programmazione è gestione di eventi

Programmazione è gestione di eventi FUNZIONI Ed Eventi Programmazione è gestione di eventi Evento 1 (tasto premuto) Evento 2 (mouse) Evento 3 (cambio frame) Oggetto Evento 4 (fine di un brano audio) Azioni per evento 1 1. Azione 1 2. Azione

Dettagli