Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 1 Estensione di classi: il Contratto INTERFACCIA E REALIZZAZIONE Che cosa realizza una.

Slides:



Advertisements
Presentazioni simili
Java base V: La gestione delle Eccezioni
Advertisements

Costruttori e Distruttori
Universita di Camerino
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Massa Laura Mela Enrica
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
1 Semantica Operazionale di un frammento di Java: lo stato.
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Le gerarchie di tipi.
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Fondamenti di Informatica
2 luglio 2006URM2 – ING- OOP0304 OL G. Cantone e A. Lomartire 1 Programmazione Orientata agli Oggetti Processi, task e thread Java (ed esempi) Università
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Introduzione al linguaggio C++ 5 lezioni
Fisica computazionale I - 21 OPERATORI. Fisica computazionale I - 22 OGGETTI Gli oggetti sono strutture di dati che possono essere create, attraverso.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Introduzione al linguaggio Java
AA 2005/06 Informatica Programmazione M.A. Alberti-L. Capra 1 Le eccezioni in Java Programmazione Corso di laurea in Informatica.
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 6 1 Programmi concorrenti: quanto è lungo un millisecondo? In un normale personal computer.
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Progettazione dei sistemi interattivi (A.A. 2004/05) - Lezione 3 1 La relazione di ereditarietà Punto di vista insiemistico: la relazione di ereditarietà
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Oggetti e dati primitivi
AA2003/04 © M.A. Alberti Programmazione Eccezioni 1 Le eccezioni in Java Programmazione Corso di laurea in Informatica.
Oggetti e dati primitivi Programmazione Corso di laurea in Informatica.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Eccezioni.
Sistemi Operativi GESTIONE DEI PROCESSI.
Java base IV: Java e la programmazione O.O.
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice.
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
AlgoLab - Ereditarieta' Ereditarietà e polimorfismo in Java Laboratorio di Algoritmi 02/03 Prof. Ugo de Liguoro.
Cosa è una applicazione distribuita?
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Programmazione concorrente
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Le eccezioni F. Bombi 01/11/ Errori e situazioni impreviste situazioni eccezionali In un programma situazioni eccezionali possono.
I nomi in Java F. Bombi 18 novembre novembre 2003.
Astrazione procedurale ed eccezioni
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Programmazione ad oggetti
Programmazione ad oggetti
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Eccezioni Metodi parziali Eccezioni: Usi e Metodi parziali Eccezioni: rimuovere i requires Eccezioni: rimuovere i requires Eccezioni: definizione, sollevamento,
Capitolo 12 Thread Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Gestione dei thread in Java
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
1 Progettazione dettagliata di un Tipo di Dato Astratto: l’ambiente di metodi.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
LIP: 22 Marzo 2005 Eccezioni. Eccezioni-Richiami Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
1 Elementi di programmazione concorrente in Java: i threads.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
La Programmazione ad Oggetti
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Eccezioni in Java. Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel linguaggio allo scopo.
Transcript della presentazione:

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 1 Estensione di classi: il Contratto INTERFACCIA E REALIZZAZIONE Che cosa realizza una classe Come si comportano i suoi oggetti Specializzare senza rompere il contratto

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 2 Ridefinizone dei metodi: Overriding RIMPIAZZARE LIMPLEMENTAZIONE DEI METODI DELLA SUPERCLASSE Non rompere il contratto significa: Mantenere la stessa signature Stesso tipo di ritorno Non lanciare eccezioni non coperte dalla clausola throws del supermetodo Dare almeno lo stesso accesso del supermetodo

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 3 Nascondere campi: Hiding RIMPIAZZARE I CAMPI DELLA SUPERCLASSE Dichiarare un campo in una classe con lo stesso nome di un campo della superclasse Il campo della superclasse diventa non più accessibile (nascosto) se non attraverso un riferimento del tipo della superclasse Quando si accede a un campo di un oggetto, il tipo specificato nella dichiarazione del riferimento alloggetto governa quale campo è effettivamente considerato

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 4 class Articolo { public String str = Super; public void show () { System.out.println (Articolo: + str); } class Alimento extends Articolo { public String str = Extend; public void show () { System.out.println (Alimento: + str); } public static void main (String[] args) { Alimento ext = new Alimento(); Articolo sup = ext; sup.show(); ext.show(); System.out.println (super.str = + sup.str); System.out.println (ext.str = + ext.str); } Risultato dellesecuzione della classe Alimento Alimento: Extend super.str = Super ext.str = Extend scelta del metodo guidata dal tipo dellistanza (binding dinamico) selezione di campo guidata dal tipo del riferimento (early binding)

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 5 Metodi e classi dichiarati final final class NonEstensibile { // campi // matodi } Non è possibile ereditare da NonEstensibile final int somma (int m, int n) { return (m + n); } Non è possibile ridefinire il metodo somma( ) Sicurezza: non è possibile violare il contratto Implementazione definitiva Restrizione: minore flessibilità duso della classe Effetto sul binding

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 6 Metodi e classi dichiarati abstract abstract class Benchmark { abstract void benchmark (); public void repeat (int count) { long start = System.currentTimeMillis( ); for (int i = 0; i < count; i++) this.benchmark( ); return ( System.currentTimeMillis( ) - start); } Non è possibile creare istanze di una classe astratta Una classe astratta definisce limplementazione dei metodi solo in parte, lasciando alle sottoclassi il compito di implementare alcuni metodi Ogni metodo non implementato viene dichiarato abstract

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 7 Valori iniziali e costruttori class Veicolo { public int matricola; public String proprietario = nessuno; public float velocita = 0.0; public float direzione = 0.0; public static int prossima_matricola = 0; Veicolo () {/* costruttore no-arg */ matricola = prossima_matricola ++; } /* costruttore con argomenti per passare valori iniziali */ Veicolo (String nome, float vel_iniz, float direz_iniz) { this (); proprietario = nome; velocita = vel_iniz; direzione = direz_iniz; }

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 8 Valori iniziali e costruttori (continua) Veicolo auto1 = new Veicolo(); Veicolo auto2 = new Veicolo(Rossi, 0.0, 35.0); auto1.proprietario = Bianchi; auto1.velocita = 45.9; auto1.direzione = 90; auto1 auto2 0 Bianchi Rossi

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 9 Criteri per la realizzazione di costruttori La classe non ha uno stato iniziale ragionevole senza parametri Passare uno stato iniziale è conveniente La costruzione di un oggetto può costituire una operazione costosa, per cui è preferibile creare listanza direttamente nello stato iniziale opportuno Si può controllare luso della classe variando la dichiarazione di accessibilità dei costruttori

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 10 Accesso diretto ai dati contro incapsulamento class Veicolo { private int matricola; private String proprietario = nessuno; private float velocita = 0.0; private float direzione = 0.0; public static int prossima_matricola = 0; public void accelera (float incremento) { velocita += incremento; } public void sterza (float delta) { direzione += delta; } public void parti (float velocita, float direzione) { this.velocita = velocita; this.direzione = direzione; }

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 11 Vantaggi dellincapsulamento Luso è più semplice: non devo conoscere la struttura dei dati E possibile nascondere i dati rendendoli read-only private int matricola; public int matricola () { return matricola; } La rappresentazione interna dei dati può essere modificata senza alterare il contratto della classe

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 12 Le eccezioni Che fare quando si presenta una situazione non prevista nellesecuzione di un programma? 1) Segnalare la condizione di errore attraverso la restituzione di valori atipici 2) Ignorare il problema, tanto si assume che gli errori non si presentino 3) Aggiungere la gestione degli errori attraverso verifica di determinate condizioni e istruzioni per il recovery dallerrore verificatosi In JAVA la gestione degli errori può essere fatta usando il meccanismo delle eccezioni, che sono oggetti che possono essere creati e lanciati (throw) in determinate condizioni, e che possono essere catturati (catch) dal codice scritto appositamente per la loro gestione

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 13 Le eccezioni controllate (checked exceptions) Le eccezioni sono oggetti in JAVA Classi predefinite di eccezioni: Throwable e sua sottoclasse Exception E possibile definire proprie classi di eccezioni Un metodo che può lanciare eccezioni deve dichiarare nella nella sua intestazione il tipo di eccezioni eventualmente lanciate, cosicché chi chiama quel metodo può prepararsi a gestire quelle eccezioni

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 14 Usare le eccezioni: il paradigma try- catch-finally try prova ad eseguire qualcosa: se genera eccezione allora catch prendi loggetto eccezione prodotto e cerca di gestire lerrore finally esegui operazioni di ripristino prima di terminare

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 15 Le eccezioni controllate (checked exceptions) class ElementoNonPresente extends Exception { String elemento; ElementoNonPresente (String nome) { elemento = nome; } class Tabella { final int MAX = 50; String[] table = new String[MAX]; public int cerca (String nome) throws ElementoNonPresente { for (int i = 0; i < MAX; i++) if (table[i].equals(nome)) return i; throw new ElementoNonPresente(nome); }

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 16 Le eccezioni controllate (checked exceptions) class ElencoStudenti { Tabella elenco = new Tabella(); public int matricola (String nome) throws ElementoNonPresente { int mat; try { mat = elenco.cerca(nome); return mat; } catch (ElementoNonPresente eccezione) { System.out.println(Lo studente + nome + non esiste); throw eccezione; }

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 17 Le eccezioni non controllate (unchecked exceptions) Oltre alle eccezioni dichiarate, un metodo può lanciare anche lanciare eccezioni di tipo RuntimeException e Error, o sottoclassi di queste, che sono eccezioni non dichiarate e non controllate.

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 18 Programmazione concorrente in JAVA: i threads I threads (trame): oggetti eseguibili Possibilità di lanciare lesecuzione di due o più tasks concorrentemente ESEMPIO: una applet, mentre trasferisce files da remoto, continua a rispondere ai comandi GUI (cliccare bottoni, scegliere comandi da menù, etc.) Una trama è un programma che gira allinterno di un programma, con il suo stack di esecuzione e il suo processore virtuale Ogni thread ha un proprio processore (virtuale) e un proprio stack di esecuzione, ma tutti i thread condividono lo stesso heap di memoria, per cui i dati sono comuni

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 19 La classe Thread Thread operatore = new Thread ( ); Il costruttore Thread( ) crea una nuova istanza della classe Thread. Per mandare effettivamente in esecuzione la trama, si deve inviare ad operatore il messagggio operatore.start( ); Quando un oggetto di tipo Thread è attivato da start( ), questi chiama a sua volta il metodo run( ) della classe cui loggetto appartiene Il metodo run( ) non viene mai eseguito manualmente Alla fine dellesecuzione di run( ) la trama termina e finisce di esistere Limplementazione standard di run( ) non fa nulla

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 20 Creare trame Per poter creare ed eseguire una trama, di solito si estende la classe Thread per poter ridefinire il metodo run( ) La classe Thread contiene inoltre i metodi standard: - stop ( ) blocca lesecuzione di una trama - suspend ( ) sospende lesecuzione di una trama - resume ( ) riprende lesecuzione di una trama - sleep (int tempo) interrompe lesecuzione di una trama per un certo numero di millisecondi

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 21 class PingPong extends Thread { String word; int delay; PingPong (String che_dire, int intervallo) { word = che_dire; delay = intervallo; } public void run ( ) { try { for ( ; ; ) { System.out.print (word + ); sleep (delay); } } catch (InterruptedException e) { return; } public static void main (String[ ] args) { new PingPong (ping, 33).start( ); new PingPong (PONG, 100).start( ); }

Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 22 Concorrenza e consistenza dei dati POTER ACCEDERE AGLI STESSI DATI È MOLTO UTILE, MA PUÓ COMPORTARE SERI PROBLEMI DI CONSISTENZA a1 = A.getSaldo( ) a1 = a1 + deposito A.setSaldo(a1) a2 = A.getSaldo( ) a2 = a2 + deposito A.setSaldo(a2)