Interfacce e Polimorfismo

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Interfacce e Polimorfismo"

Transcript

1 Interfacce e Polimorfismo

2 Interfacce Dichiarazioni di tipi riferimento che descrivono oggetti in modo astratto Specificano solo le firme dei metodi tralasciando tutti gli aspetti di implementazione

3 Interfacce interface Poly public Poly somma (Poly p); public Poly derivata(); public int grado(); public boolean equals (Poly p); public double coefficient(int degree);

4 Interfacce interface Collection<E> public void add(e element); public void remove(e element); public boolean find(e element);...

5 Classi implementano Interfacce La keyword implements indica che una classe implementa una interfaccia class ArrayPoly implements Poly... class TreeSet<E> implements Collection<E>...

6 Classi implementano Interfacce Una classe che implementa una interfaccia deve implementare tutti i metodi dell interfaccia Tutti I metodi dell interfaccia devono essere dichiarati public nella classe Nulla vieta che la classe dichiari altri metodi oltre quelli dell interfaccia che implementa

7 Classi implementano Interfacce Una interfaccia può essere implementata da più classi class ArrayPoly implements Poly... class ListPoly implements Poly...

8 Classi implementano Interfacce Una interfaccia può essere implementata da più classi class HashMap<E> implements Collection<E>... class TreeSet<E> implements Collection<E>...

9 Conversioni di tipo Una interfaccia rappresenta tutte le classi che la implementano Il tipo interfaccia si può associare a tutti gli oggetti delle classi che la implementano Continua

10 Conversioni di tipo Possiamo assegnare un riferimento di tipo classe ad una variabile di tipo interfaccia purchè la classe implementi l interfaccia Collection<Double> c = new TreeSet<Double>(); Collection<Double> d = new HashMap<Double>(); Poly p = new ArrayPoly(); Poly q = new ListPoly(); Continua

11 Conversioni di tipo La conversione è lecita solo in determinate situazioni Poly x = new TreeSet<Double>(); // ERRORE Problema: TreeSet<Double>() non implementa Poly

12 Conversioni di Tipo Sottotipo (<:) La relazione che permette di decidere quando è lecito convertire un tipo riferimento in un altro Per il momento diciamo S <: T sse S è una classe, T è una interfaccia S implementa T. Principio di sostituibilità Ovunque ci si aspetti un riferimento di un tipo è lecito utilizzare un rifetimento di un sottotipo Continua

13 Conversioni di Tipo Assumiamo S <: T Regola di assegnamento Un riferimento di tipo S si puo sempre assegnare ad una variabile di tipo T Un riferimento di tipo classe può sempre essere assegnato ad una variabile di tipo interfaccia che la classe implementa Regola di passaggio di parametri Un riferimento di tipo S si puo sempre passare per un parametro di tipo T Un riferimento di tipo classe può sempre essere passato per un parametro di tipo interfaccia che la classe implementa

14 Conversioni di Tipo Le conversioni abilitate dalla regola C <: I sse C implementa I sono corrette garantiscono che le proprietà che valgono utilizzando valori di tipo I valgono usando valori di tipo C Dimostrazione intuitiva: Se C implementa I, C deve definire tutti i metodi dichiarati da I (e dichiararli public) Quindi tutti le invocazioni di metodo ammesse da I trovano effettivamente un metodo definito in C Continua

15 Polimorfismo dynamic dispatch Le regole di conversione di tipo garantiscono che una variabile di tipo interfaccia ha sempre come valore un riferimento di una classe che implementa l interfaccia Se una interfaccia è implementata da più classi, il tipo dei valori legati alla variabile può cambiare Poly p; p = new ListPoly(...); p = new ArrayPoly(...); Continua

16 Polimorfismo dynamic dispatch Possiamo invocare ognuno dei metodi dell interfaccia: int g = p.grado(); Quale metodo invoca?

17 Polimorfismo dynamic dispatch int g = p.grado(); Se p riferisce un ListPoly, invoca il metodo ListPoly.grado() Se p riferisce un ArrayPoly, invoca il metodo ArrayPoly.grado(); Polimorfismo (molte forme): il metodo invocato dipende dipende dal tipo del riferimento legato alla variabile Continua

18 Esempio Costruiamo una applicazione per disegnare un insieme di forme geometriche contenute in una componente grafico: definiamo GWin, una classe che descrive un contenitore di forme geometriche disegnate mediante una invocazione del metodo paint() per esemplificare, consideriamo due tipi di forme: Quadrato e Cerchio

19 Forme grafiche class Quadrato... public void draw(graphics2d g) // Istruzioni per il disegno... class Cerchio... public void draw(graphics2d g) // Istruzioni per il disegno...

20 GWin Un contenitore di Quadrati e Cerchi /** Una finestra che contiene Quadrati e Cerchi */ class GWin /** Disegna tutte le forme di questo component */ public void paint() /* disegna su g */ /** Componente grafica su cui disegnare */ private Graphics2D g;

21 Domanda Che struttura utilizziamo per memorizzare le forme contenute nella GWin? Come definiamo il metodo paint() in modo che disegni tutte le forme della componente?

22 Risposte definiamo una nuova interfaccia: Shape interface Shape void draw(graphics2d g); Ridefiniamo le classi Quadrato e Cerchio in modo che implementino Shape Memorizziamo gli oggetti della componente in una ArrayList<Shape>

23 Shapes class Quadrato implements Shape... public void draw(graphics2d g) // Istruzioni per il disegno... class Cerchio implements Shape... public void draw(graphics2d g) // Istruzioni per il disegno...

24 GWin Mantiene una ArrayList<Shape> class GWin private Graphics2D g; private ArrayList<Shape> shapes; // crea una GWin con un insieme di forme public GWin(Shape... shapes) Graphics2D g = new Graphics2D(); this.shapes = new ArrayList<Shape>(); for (Shape s:shapes) this.shapes.add(s); // disegna tutte le componenti della GWin public void paint() for (Shape s:shapes) s.draw(g);

25 Diagramma delle Classi Quadrato Car Cerchio GWin Shape

26 Ancora Interfacce

27 Esempio Definiamo una classe DataSet che permette di condurre alcune semplici analisi su un insieme di conti bancari calcolo della media degli importi del saldo calcolo del conto con il valore massimo tra i saldi Continua

28 DataSet public class DataSet public void add(bankaccount x) if (x == null) return; sum = sum + x.getbalance(); if (count == 0 maximum.getbalance() < x.getbalance()) maximum = x; count++; public BankAccount getmaximum() return maximum; public double average() return (count>0)? sum /count : Double.NaN; private double sum; private BankAccount maximum; private int count;

29 Esempio Data Analysis Ora ripetiamo l esempio per definire una versione della classe DataSet che permette di condurre alcune semplici analisi su un insieme di corsi universitari: calcolo della media del numero di studenti per corso calcolo del corso con massimo numero di studenti class Corso //... public double iscritti() //...

30 DataSet versione per Corso public class DataSet public void add(corso x) if (x == null) return; sum = sum + x.iscritti(); if (count == 0 maximum.iscritti() < x.iscritti()) maximum = x; count++; public Corso getmaximum() return maximum; public double average() return (count>0)? sum/count : Double.NaN; private double sum; private Corso maximum; private int count;

31 Interfacce riuso di codice Il meccanismo di analisi dei dati è sempre lo stesso; si basa sull estrazione di una misura la differenza è solo nell implementazione del metodo che fornisce la misura Possiamo uniformare: è sufficiente stabilire una modalità uniforme per estrarre la misura. interface Measurable double getmeasure();

32 Measurable BankAccounts public class BankAccount implements Measurable public double getmeasure() return getbalance(); //... Continua

33 Measurable Corsi class Corso implements Measurable public double getmeasure() return iscritti(); //...

34 DataSet versione generica public class DataSet public void add(measurable x) if (x == null) return; sum = sum + x.getmeasure(); if (count == 0 maximum.getmeasure() < x.getmeasure()) maximum = x; count++; public Measurable getmaximum() return maximum; public double average() return sum/count; private double sum; private Measurable maximum; private int count;

35 DataSet Diagramma UML Corso implementa dipende

36 Interfacce multiple Una classe può implementare più di una interfaccia In quel caso deve definire, public, tutti i metodi delle interfacce che implementa E automaticamente sottotipo di ciascuna delle interfacce che implementa

37 Measurable Shapes class Quadrato implements Shape, Measurable... public void draw(graphics2d g)... public double getmeasure()... class Cerchio implements Shape, Measurable... public void draw(graphics2d g)... public void getmeasure()...

38 Measurable Shapes Ora possiamo passare Quadrati e Cerchi sia all interno della classe Gwin per essere disegnati, sia all interno della classe DataSet per essere misurati

39 Conversioni di tipo Una interfaccia rappresenta tutte le classi che la implementano Più in generale: un supertipo rappresenta tutti i suoi sottotipi Continua

40 Conversioni di tipo Principio di sostituibilità Un riferimento di un sottotipo può essere usato ovunque ci si aspetti un riferimento di un supertipo Può causare perdita di informazione nel contesto in cui ci aspettiamo il supertipo, non possiamo usare solo I metodi del supertipo perdiamo la possibilità di utilizzare gli eventuali metodi aggiuntivi del sottotipo Continua

41 Ancora Shapes class Car implements Shape... public void draw(graphics2d g)... public String brand()... class Smiley implements Shape... public void draw(graphics2d g)... public String mood()...

42 Sottotipi e perdita di informazione Consideriamo public static void printbrand(list<shape> l) for (Shape s : l) // stampa la marca di tutte le macchine di l System.out.println(s.brand()); Continua

43 Sottotipi e perdita di informazione Certamente non possiamo fare così public static void printbrand(list<shape> l) for (Shape s : l) // stampa la marca di tutte le macchine di l System.out.println( s.brand() ); // TYPE ERROR! Continua

44 Cast Permette di modificare il tipo associato ad una espressione ((Car)s).brand() Un cast è permesso dal compilatore solo se applica conversioni tra tipi compatibili Compatibili = sottotipi (per il momento) Anche quando permesso dal compilatore, un cast può causare errore a run time Se s non è un Car errore a run time Continua

45 Tipo statico e Dinamico Tipo statico e tipo dinamico di una variabile tipo statico: quello dichiarato tipo dinamico: il tipo del riferimento assegnato alla variabile Il tipo dinamico può cambiare durante l esecuzione, ma le regole garantiscono che Il tipo dinamico di una variabile è sempre un sottotipo del tipo statico della variabile Continua

46 Cast (T)var causa errore in compilazione se T non è compatibile con il tipo statico di var in esecuzione (ClassCastException) se T non è compatibile con il tipo dinamico di var Continua

47 Cast Shape s = new Car(); OK: Car sottotipo di Shape Car c = (Car) s Compila correttamente il tipo dichiarato di s è Shape Car e Shape sono compatibili Esegue correttamente s è un Car (il tipo dinamico di s è Car) Continua

48 Cast Shape s = new Car(); OK: Car sottotipo di Shape Smiley c = (Smiley) s Compila correttamente il tipo dichiarato di s è Shape Smiley e Shape sono compatibili Errore a run time s non è uno Smiley Continua

49 Cast Attenzione anche qui public static void printbrand(list<shape> l) for (Shape s : l) // ClassCastException se s instance of Smiley System.out.println( ((Car)s).brand() ); Continua

50 instanceof Permette di determinare il tipo dinamico di una variabile x istanceof T è true solo se x ha tipo dinamico T Quindi permette di evitare errori in esecuzione if (x instanceof T) return (T) x Esegue correttamente, perchè x è sicuramente un T

51 Cast Questo, finalmente, è corretto public static void printbrand(list<shape> l) for (Shape s : l) if (s instanceof Car) System.out.println( ((Car)s).brand() );

52 Domanda Come disegnare solo le Shapes che sono Cars?

53 Risposta // disegna tutte le Cars della GWin public void paint() for (Shape c:shapes) if (c instanceof Car) c.draw(g);

54 Polinomi Polinomi ( interface Poly public Poly somma (Poly p); public Poly derivata(); public int grado(); public boolean equals (Object q) public boolean equals (Poly p); public double coefficient(int degree);

55 Polinomi equals() Notiamo le due versioni entrambi sono necessarie Dimostrano un aspetto interessante dell interazione tra il meccanismi di polimorfismo (dynamic dispatch) e di risoluzione dell overloading

56 Dynamic dispatch vs overloading Dynamic dispatch: Il metodo da invocare per rispondere ad un messaggio è deciso a tempo di esecuzione Notiamo bene Il metodo da invocare è deciso a runtime il compilatore decide se esiste un metodo da invocare Overloading: Nel caso esista più di un metodo, il compilatore decide staticamente il tipo del metodo da invocare

57 Dynamic dispatch vs overloading interface I public String m(boolean b); public String m(double d); class A implements I public String m(boolean b) return A.m(boolean) ; public String m(double d) return A.m(double) ; class B implements I public String m(boolean b) return B.m(boolean) ; public String m(double d) return B.m(double) ;

58 Polinomi equals() Consideriamo: Poly p = new ArrayPoly(); Object q = new ListPoly(); p.equals(q); Data la dichiarazione q:object la chiamata p.equals(q)viene associata alla firma Poly.equals(Object) edinamincamente, poi, viene dispacciata al corpo del metodo ArrayPoly.equals(Object)

59 Interfacce standard Listeners Le librerie Java forniscono molte interfacce standard, che possono essere utilizzare nella programmazione Un insieme interessante di queste interfacce è legata al framework Swing, ed utilizzata per la programmazione ad eventi, tipica delle applicazioni con interfaccia grafica

60 Eventi, Sorgenti, e Listeners Una interfaccia utente deve gestire una moltitudine di eventi eventi da tastiera, del mouse, click su pulsanti, Opportuno poter discriminare diversi eventi componenti specifiche devono poter essere programmate senza preoccuparsi che di eventi specifici Necessario avere meccanismi per gestire eventi in modo selettivo Un meccanismo per dichiarare quali eventi si intendono gestire Continua

61 Eventi, Sorgenti, e Listeners Listener: Oggetto che viene notificato dell occorrere di un evento I suoi metodi descrivono le azioni da eseguire in risposta ad un evento Sorgente di eventi: Oggetto che origina eventi, o li emette, Notifica l evento ai propri listeners Vari tipi di sorgenti Componenti visuali: JButton, JTextField,... Timer, Continua

62 Eventi, Sorgenti, e Listeners Ogni sorgente genera un insieme ben definito di eventi determinato dal tipo della sorgente Eventi di basso livello mouse-down/up/move, key-press/release, component-resize/move, Eventi semantici ActionEvent: click su un JButton, doppioclick su un JListItem, tick di un Timer TextEvent: JTextField modificato da uno o più mouse/key events Continua

63 Eventi, Sorgenti, e Listeners Gestione mirata degli eventi Una applicazione può decidere quali eventi gestire tra quelli generati da ciascuna sorgente Registra su ciascuna componente solo i listeners degli eventi che intende gestire Continua

64 Eventi, Sorgenti, e Listeners Esempio: utilizziamo una componente JButton per realizzare un pulsante: associamo a ciascun pulsante un ActionListener Ricordiamo: public interface ActionListener void actionperformed(actionevent event); Dobbiamo fornire una classe il cui metodo actionperformed contiene le istruzioni da eseguire quando il pulsante viene premuto Continua

65 Eventi, Sorgenti, e Listeners event contiene informazioni sull evento (ad esempio l istante in cui è avvenuto) Associamo il listener al pulsante, registrandolo sul pulsante: ActionListener listener = new ClickListener(); button.addactionlistener(listener); addactionlistener(): un metodo di JButton void addactionlistener(actionlistener l);

66 File ClickListener.java 01: import java.awt.event.actionevent; 02: import java.awt.event.actionlistener; 03: 04: /** 05: Un action listener che stampa un messaggio 06: */ 07: public class ClickListener implements ActionListener 08: 09: public void actionperformed(actionevent event) 10: 11: System.out.println("I was clicked."); 12: 13:

67 File ClickApp.java import java.awt.event.actionlistener; import javax.swing.jbutton; import javax.swing.jframe; public class ClickApp public static void main(string[] args) JFrame frame = new JFrame(); JButton button = new JButton("Click me!"); frame.add(button); button.addactionlistener(new ClickListener()); frame.setsize(frame_width, FRAME_HEIGHT); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.setvisible(true); private static final int FRAME_WIDTH = 100; private static final int FRAME_HEIGHT = 60;

68 File ClickListener.java Output:

69 Eventi del mouse mousepressed, mousereleased: invocati quando un pulsante del mouse viene premuto o rilasciato mouseclicked: invocato quando un pulsante del mouse viene cliccato mouseentered, mouseexited: il mouse è entrato o è uscito dall area della componente

70 Eventi del mouse Catturati da MouseListeners public interface MouseListener // un metodo per ciascun mouse event su una componente void mousepressed(mouseevent event); void mousereleased(mouseevent event); void mouseclicked(mouseevent event); void mouseentered(mouseevent event); void mouseexited(mouseevent event); Continua

71 Eventi del mouse Se vogliamo che una componente reagisca ad eventi del mouse dobbiamo registrare un MouseListener sulla componente: public class MyMouseListener implements MouseListener // Implementa i cinque metodi MouseListener listener = new MyMouseListener(); component.addmouselistener(listener); Continua

72 Mouse Events class MousePressListener implements MouseListenere public void mousepressed(mouseevent event) int x = event.getx(); int y = event.gety();... // implementazione degli altri metodi dell interfaccia Tutti i metodi devono essere implementati; implementazione vuota se inutili

73 ActionListener Descrive oggetti che svolgono il ruolo di gestori di eventi: rimane attesa (in ascolto) di un evento, per poi rispondere con una azione al momento in cui l evento si manifesta interface ActionListener void actionperformed(actionevent event);

74 Eventi di un timer Eventi notificati ad un ActionListener associato al timer Il gestore viene attivato ad ogni tick del timer public interface ActionListener void actionperformed(actionevent event); actionperformed() invocato ad ogni tick event: contiene informazione sull evento Continua

75 Eventi di un timer La gestione dell evento avviene nel metodo actionperformed() Gestioni diverse realizzate da classi diverse che implementano ActionListener class TimerListener implements ActionListener public void actionperformed(actionevent event) // Eseguito ad ogni tick. Continua

76 Eventi di un timer Per associare un particolare listener al timer è necessario registrare il listener sul timer TimerListener listener = new TimerListener(); Timer t = new Timer(interval, listener); tra due tick Ora possiamo far partire il timer t.start(); // Esegue in un thread separato

77 Esempio: countdown Un timer che esegue il countdown

78 CountDownListener public class CountDownApp public static void main(string[] args) CountDownListener listener = new CountDownListener(10); // Millisecondi tra due tick final int DELAY = 1000; Timer t = new Timer(DELAY, listener); t.start(); JOptionPane.showMessageDialog(null, "Quit?"); System.exit(0);

79 CountDownListener Inizializza un contatore al valore passato nel costruttore Ad ogni invocazione del metodo actionperformed() controlla il valore del contatore e dà in output il messaggio corrispondente decrementa il contatore

80 CountDownListener class CountDownListener implements ActionListener public CountDownListener(int initialcount) count = initialcount; public void actionperformed(actionevent event) if (count >= 0) System.out.println(count); if (count == 0) System.out.println("Liftoff!"); count--; private int count;

Interfacce. Dichiarazioni di tipi riferimento che descrivono oggetti in modo astratto Specificano solo le firme dei metodi.

Interfacce. Dichiarazioni di tipi riferimento che descrivono oggetti in modo astratto Specificano solo le firme dei metodi. Interfacce Interfacce Dichiarazioni di tipi riferimento che descrivono oggetti in modo astratto Specificano solo le firme dei metodi tralasciando tutti gli aspetti di implementazione Interfacce interface

Dettagli

Subtype Polymorphism. Conversioni di tipo. Conversioni di tipo. Subtyping. Conversioni di tipo. Interfacce e subtype polimorfismo

Subtype Polymorphism. Conversioni di tipo. Conversioni di tipo. Subtyping. Conversioni di tipo. Interfacce e subtype polimorfismo Subtype Polymorphism Interfacce e subtype polimorfismo Tipi, sottotipi e conversioni di tipo Polimorfismo e dinamic dispatch Conversioni di tipo Variabile: locazione con un tipo associato Tipo della variabile

Dettagli

Programmazione ad Eventi

Programmazione ad Eventi Programmazione ad Eventi Eventi, Sorgenti, e Listeners Una interfaccia utente deve gestire una moltitudine di eventi eventi da tastiera, del mouse, click su pulsanti, Opportuno poter discriminare diversi

Dettagli

Programmazione ad Eventi

Programmazione ad Eventi Programmazione ad Eventi Eventi, Sorgenti, e Listeners Una interfaccia utente deve gestire una moltitudine di eventi eventi da tastiera, del mouse, click su pulsanti, Opportuno poter discriminare diversi

Dettagli

Interfacce e polimorfismo

Interfacce e polimorfismo Interfacce e polimorfismo La classe DataSet Serve a computare la media di un insieme di valori numerici public class DataSet Costruisce un insiemevuoto public DataSet() sum = 0; count = 0; minimum = 0;

Dettagli

Gestione degli eventi

Gestione degli eventi Gestione degli eventi Input di un programma Da console gestito rigidamente da programma Sequenza di input definita dal programma Con interfaccia grafica Utente ha più libertà Sequenza di input in qualsiasi

Dettagli

Interfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato

Interfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato Interfacce 1 Interfacce Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato costituito dall intestazione senza il corpo della definizione

Dettagli

Capitolo 9 Interfacce e polimorfismo

Capitolo 9 Interfacce e polimorfismo Capitolo 9 Interfacce e polimorfismo Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Obiettivi del capitolo Conoscere le interfacce Saper effettuare conversioni tra riferimenti

Dettagli

Interfacce. Organizzazione di una classe. Organizzazione di una classe. Classi di un progetto. Classi di un progetto

Interfacce. Organizzazione di una classe. Organizzazione di una classe. Classi di un progetto. Classi di un progetto come strumento di progetto Scelta delle classi di un progetto Criteri di coesione e accoppiamento e riuso di codice Organizzazione di una classe Organizzazione di una classe public class ClassTemplate

Dettagli

Interfacce e polimorfismo

Interfacce e polimorfismo Interfacce e polimorfismo La classe DataSet /** Serve a calcolare la media di un insieme di valori numerici, il minimo e il massimo */ public class DataSet { /** Default: insieme vuoto */ public DataSet()

Dettagli

Interfacce vs Inner Classes

Interfacce vs Inner Classes Interfacce vs Inner Classes Classi interne nelle loro diverse forme locali Interne statiche Utilizzo congiunto con interfacce Gestione di eventi Implementazione di iteratori Classi locali Classi che hanno

Dettagli

Scope e visibilità per classi

Scope e visibilità per classi Packages Scope e visibilità per classi Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Packages Package:

Dettagli

Eventi e listener per i componenti grafici

Eventi e listener per i componenti grafici Eventi e listener per i componenti grafici Raffaella Brighi, a.a. 2005/06 Corso di Laboratorio II. A.A. 2005-06 CdL Operatore Informatico Giuridico. Eventi e listener Eventi e listener (ascoltatori) sono

Dettagli

DataSet. Interfacce e Polimorfismo. DataSet per BankAccount. DataSet per BankAccount. DataSet per Coin. DataSet per Coin

DataSet. Interfacce e Polimorfismo. DataSet per BankAccount. DataSet per BankAccount. DataSet per Coin. DataSet per Coin DataSet Interfacce e Polimorfismo Riconsideriamo la classe DataSet Semplicemente si può aggiungere ad un oggetto DataSet dei valori con un metodo add Si può poi chiedere in qualunque momento la media dei

Dettagli

Interfacce e Polimorfismo

Interfacce e Polimorfismo Interfacce e Polimorfismo C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo trad. Nicola Fanizzi corso di Programmazione, CdS: Informatica TPS Dip. di Informatica, Università degli

Dettagli

Lezione n.12 LPR Informatica Applicata GUI programming

Lezione n.12 LPR Informatica Applicata GUI programming Università degli Studi di Pisa Lezione n.12 LPR Informatica Applicata GUI programming 19/05/2008 Laura Ricci UNA SEMPLICE INTERFACCIA PER INSTANT MESSAGING JAVA GUI: COMPONENTI BASE import java.awt.*;

Dettagli

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A. 2005-06

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A. 2005-06 Raffaella Brighi, a.a. 2005/06 Eventi e listener Corso di Laboratorio II. A.A. 2005-06 Eventi e listener Un evento è un oggetto che rappresenta il verificarsi di un azione dell utente o del sistema(es

Dettagli

Java SE 6. Programmazione grafica (3)

Java SE 6. Programmazione grafica (3) Java SE 6 Programmazione grafica (3) diegozabot@yahoo.it ursula.castaldo@gmail.com Event Listeners (1) Se vogliamo che una classe risponda a degli eventi utente, deve implementare l'interfaccia che si

Dettagli

Capitolo 9 Interfacce e polimorfismo

Capitolo 9 Interfacce e polimorfismo Capitolo 9 Interfacce e polimorfismo Obiettivi del capitolo Conoscere le interfacce Saper effettuare conversioni tra riferimenti a classi e a interfacce Capire il concetto di polimorfismo Utilizzare le

Dettagli

Concetti principali Ereditarietà e (overriding) di metodi. Ereditarietà e costruttori Livelli di accesso protected e package La classe Object

Concetti principali Ereditarietà e (overriding) di metodi. Ereditarietà e costruttori Livelli di accesso protected e package La classe Object Ereditarietà Concetti principali Ereditarietà e (overriding) di metodi Dynamic dispatch e polimorfismo Ereditarietà e costruttori Livelli di accesso protected e package La classe Object metodi tostring,

Dettagli

Capitolo 9 Interfacce e polimorfismo

Capitolo 9 Interfacce e polimorfismo Capitolo 9 Interfacce e polimorfismo Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Obiettivi del capitolo Conoscere le interfacce Saper effettuare conversioni tra riferimenti

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

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

Progettodiclassie Interfacce

Progettodiclassie Interfacce Progettodiclassie Interfacce Scelta delle classi di un progetto Criteri di coesione e accoppiamento Interfacce Tipi, sottotipi e conversioni di tipo Polimorfismo e dinamic dispatch Interfacce come strumento

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Ereditarietà E' un meccanismo per estendere le funzionalità di una classe con nuovi campi e nuovi metodi Chiamiamo superclasse:

Dettagli

DataSet. ... public BankAccount getmaximum() { return x; }... private BankAccount maximum;... } DataSet

DataSet. ... public BankAccount getmaximum() { return x; }... private BankAccount maximum;... } DataSet DataSet DataSetadd DataSet BankAccount public class DataSetBankAccount { public void add(bankaccount x) { sum = sum + x.getbalance(); if (count == 0 maximum.getbalance() < x.getbalance()) maximum = x;

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi

Dettagli

Linguaggi di Programmazione II Matricole con le due ultime cifre dispari

Linguaggi di Programmazione II Matricole con le due ultime cifre dispari Cognome e Nome: Numero di Matricola: Spazio riservato alla correzione 1 2 3 4 5 6 totale /5 /10 /10 /30 /25 /20 /100 Non usare altri fogli, usare solo lo spazio sottostante. Fogli differenti da questo

Dettagli

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili Riuso di classi Spesso si ha bisogno di classi simili Si vuole cioè riusare classi esistenti per implementare attributi e metodi leggermente diversi Non è pratico copiare la classe originaria e modificarne

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

Dettagli

Ereditarietà (ancora)

Ereditarietà (ancora) Ereditarietà (ancora) Costruttori di sottoclasse Il costruttore di una sottoclasse provvede ad inizializzare la struttura delle istanze della sottoclasse Come abbiamo visto, questa include la parte definita

Dettagli

Ereditarietà (ancora)

Ereditarietà (ancora) Ereditarietà (ancora) Costruttori di sottoclasse Il costruttore di una sottoclasse provvede ad inizializzare la struttura delle istanze della sottoclasse Come abbiamo visto, questa include la parte definita

Dettagli

Scope e visibilità per classi

Scope e visibilità per classi Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Packages Package:

Dettagli

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I { Interfacce Una interfaccia è un astrazione per un insieme di funzioni pubbliche delle quali si definisce solo la segnatura, e non le istruzioni. Un interfaccia viene poi implementata da una o più classi

Dettagli

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica Introduzione Ereditarietà in Sintesi È uno dei concetti chiave della programmazione orientata agli

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma

Dettagli

Oggetti. Interfacce e sottotipi

Oggetti. Interfacce e sottotipi Programmazione a Oggetti Interfacce e sottotipi Sommario Classi e Interfacce Subtyping/polimorfismo Tipi Statici e Tipi Dinamici Dynamic Method Lookup Sviluppo del Software Suddivisa in due fasi: 1. Specifica:

Dettagli

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE La Gestione degli Eventi Ogni oggetto grafico è predisposto ad essere sollecitato in qualche modo dall utente (per esempio un pulsante può essere premuto).

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

Unità B2 Gestione eventi 2

Unità B2 Gestione eventi 2 (A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: MouseListener MouseAdapter TextListener KeyListener KeyAdapter ItemListener getkeycode() getkeychar() (B) CONOSCENZA E COMPETENZA

Dettagli

Controllo del layout. Per disporre in modo più strutturato utilizziamo pannelli con diverse politiche di disposizione (layout)

Controllo del layout. Per disporre in modo più strutturato utilizziamo pannelli con diverse politiche di disposizione (layout) Controllo del layout Ovvero, controllo della disposizione dei componenti all interno di una finestra Abbiamo visto applicazioni con una disposizione di componenti elementare I pannelli che abbiamo utilizzato

Dettagli

Overloading - Overriding

Overloading - Overriding 1 Overloading - Overriding Overloading: Funzioni con uguale nome e diversa firma possono coesistere. move(int dx, int dy) move(int dx, int dy, int dz) Overriding: Ridefinizione di una funzione in una sottoclasse

Dettagli

24 - Possibili approfondimenti

24 - Possibili approfondimenti 24 - Possibili approfondimenti 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

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

Laurea in Informatica. "Programmazione Distribuita" - Prof. Scarano. A.A Università di Salerno 1. Organizzazione della lezione

Laurea in Informatica. Programmazione Distribuita - Prof. Scarano. A.A Università di Salerno 1. Organizzazione della lezione Lezione 6 Ereditarietà Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno 2 La progettazione OOP: suggerimenti Mantenere sempre, sempre, sempre

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 25 Ereditarietà A. Miola Maggio 2012 http://www.dia.uniroma3.it/~java/fondinf/ Ereditarietà 1 Contenuti q Livelli di astrazione

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 C2.1 Animazioni 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Utilizzo di elementi grafici ed eventi Utilizzo classe Canvas 2 1 Introduzione

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

Applicazioni grafiche e finestre

Applicazioni grafiche e finestre Applicazioni grafiche e finestre / SampleFrame.java package sampleswingjavaapp; import java.awt.flowlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jbutton;

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

Grafica ed eventi. Più movimento alle classi

Grafica ed eventi. Più movimento alle classi Grafica ed eventi Più movimento alle classi 1 ActionListener Listener: è una classe che implementa ActionListener e definisce actionperformed( ) Per aggiungere un ActionListener ad un oggetto c c.addactionlistener(listener);

Dettagli

Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()

Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA

Dettagli

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125 Capitolo 6 Uso della gerarchia c 2005 Pearson Education Italia Capitolo 6-1 / 125 Sommario: Uso della gerarchia 1 Notazione UML per le classi 2 Introduzione alla gerarchia 3 Gerarchia e tipi La gerarchia

Dettagli

Programmazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo

Programmazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo Programmazione orientata agli oggetti Subtyping e polimorfismo 1 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti

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

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura: Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata

Dettagli

Bank account. private double balance; 11/2/2011

Bank account. private double balance; 11/2/2011 Il Linguaggio Java Ereditarietà Bank account class BankAccount { public BankAccount() { balance = 0; } public void deposit(double amount) { balance += amount; } public void withdraw(double amount) { balance

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Interfacce Classi diverse possono condividere funzionalità comuni. Es: classi che descrivono diverse forme geometriche possono

Dettagli

I L IN I GU G AGG G I G O

I L IN I GU G AGG G I G O JAVA IL LINGUAGGIO Tipi e variabili Ogni valore nel linguaggio ha un tipo Ogni variabile deve essere dichiarata ed associata ad un tipo: String greeting = "Hello, World!"; PrintStream printer = System.out;

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

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java AA 2018/2019 Tutor Lorenzo Rosa lorenzo.rosa@unibo.it 2 Programma Introduzione al calcolatore e Java Linguaggio Java, basi e

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

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

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 B2 Gestione eventi (2) 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti AWT o Swing Programmazione ad eventi 2 1 Introduzione Continuiamo la

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

Ereditarietà. Linguaggi di Programmazione: Paradigmi di Programmazione. Ereditarietà. Sottoclassi. Ereditarietà. Controllo statico dei tipi

Ereditarietà. Linguaggi di Programmazione: Paradigmi di Programmazione. Ereditarietà. Sottoclassi. Ereditarietà. Controllo statico dei tipi Linguaggi di Programmazione: Paradigmi di Programmazione Ereditarietà Meccanismo per lo sviluppo incrementale di programmi Consente di estendere classi preesistenti aggiungendo o modificando componenti

Dettagli

Programmazione II. Lezione 18. Daniele Sgandurra 11/1/2011.

Programmazione II. Lezione 18. Daniele Sgandurra 11/1/2011. Programmazione II Lezione 18 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 11/1/2011 1/26 Programmazione II Lezione 18 11/1/2011 Sommario 1 2/26 Programmazione II Lezione 18 11/1/2011 Parte I 3/26 Programmazione

Dettagli

Gestione degli eventi in Java

Gestione degli eventi in Java Gestione degli eventi in Java package java.awt.event.* Il modello degli eventi I componenti dell awt generano eventi in seguito alle azioni dell utente movimento del mouse click pressione di un tasto etc.

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

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

Corso di Progettazione del Software

Corso di Progettazione del Software T. Mancini & M. Scannapieco S.JOO.3 Java: le classi Object e Class February 2, 2008 p. 1/12 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 B1 Gestione eventi 1 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti AWT o Swing Programmazione ad eventi 2 1 Introduzione Le interfacce create

Dettagli

Informatica Ereditarietà Java. Ereditarietà

Informatica Ereditarietà Java. Ereditarietà Ereditarietà L'ereditarietà consente allo sviluppatore di riutilizzare il codice già scritto creando sottoclassi a partire da classi già definite. La sottoclasse eredita tutti gli attributi e tutti i metodi

Dettagli

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007 Cognome............................. Nome................................ Programmazione Compitino del 17 gennaio 2007 Matricola............................ NOTA: Negli esercizi 1, 2, 3, 4 fate riferimento

Dettagli

Programmazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo

Programmazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo Programmazione orientata agli oggetti Subtyping e polimorfismo 1 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti

Dettagli

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

OCA JAVA 8 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 8 SE PROGRAMMER

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

Interazioni col mondo: eventi

Interazioni col mondo: eventi Interazioni col mondo: eventi Le interazioni di una GUI con il mondo esterno sono segnalate tramite eventi: click del mouse, inserimento di testo, selezione/attivazione... Gli eventi che memorizzano queste

Dettagli

Programmazione a Oggetti Metodologie di Programmazione 14 Maggio 2012

Programmazione a Oggetti Metodologie di Programmazione 14 Maggio 2012 Programmazione a Oggetti Metodologie di Programmazione 14 Maggio 2012 Nome: Matricola: Metodologia di Programmazione [ ] Programmazione a Oggetti [ ] Istruzioni Scrivete il vostro nome sul primo foglio.

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

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 08 Ereditarietà A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Ereditarietà 1 Contenuti!Livelli di astrazione

Dettagli

Interfacce, Polimorfismo, Ereditarietà

Interfacce, Polimorfismo, Ereditarietà Interfacce, Polimorfismo, Ereditarietà Interfacce Polimorfismo Ereditarietà 1 DataSet Riconsideriamo la classe DataSet Semplicemente si può aggiungere ad un oggetto DataSet dei valori con un metodo add

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

Programmazione ad Oggetti. JFrame è la classe di base per le finestre Fornisce tutte le caratteristiche di una finestra vuota

Programmazione ad Oggetti. JFrame è la classe di base per le finestre Fornisce tutte le caratteristiche di una finestra vuota Programmazione ad Oggetti Interfacce grafiche V 1.2 Marco Torchiano 2005 JFrame JFrame è la classe di base per le finestre Fornisce tutte le caratteristiche di una finestra vuota Barra del titolo Pulsanti

Dettagli

Gestione di eventi ed interfacce utente grafiche

Gestione di eventi ed interfacce utente grafiche Gestione di eventi ed interfacce utente grafiche Eventi Ogni volta che l utente esegue un azione un clic del mouse la pressione di un tasto sulla tastiera la modifica di una finestra la selezione di un

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

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

interfacce ed eventi intercettare il mouse ed altri eventi

interfacce ed eventi intercettare il mouse ed altri eventi interfacce ed eventi intercettare il mouse ed altri eventi interfacce: premessa il termine "interfaccia" occorre in Java con due significati, collegati ma distinti 1. interface, parola chiave di Java e

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

Riassunto. GUI in Java con l AWT 1. Cos è una GUI. Oggi: GUI in Java, l AWT. GUI in Java. Un esempio. Stefano Mizzaro 1

Riassunto. GUI in Java con l AWT 1. Cos è una GUI. Oggi: GUI in Java, l AWT. GUI in Java. Un esempio. Stefano Mizzaro 1 Riassunto GUI in Java con l AWT 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione, lezione 23 15 febbraio

Dettagli

Progetto di classi: Metodi Costruttori Documentazione e commenti Variabili di istanza (campi)

Progetto di classi: Metodi Costruttori Documentazione e commenti Variabili di istanza (campi) Classi Progetto di classi: Dalla specifica dell interfaccia, alla definizione dell implementazione Metodi Costruttori Documentazione e commenti Variabili di istanza (campi) Progetto di una classe Un conto

Dettagli

JFrame. Chiusura della finestra. JFrame - Esempio. Tipologia di GUI. Linee guida. Programmazione ad Oggetti 6/12/09. finestre

JFrame. Chiusura della finestra. JFrame - Esempio. Tipologia di GUI. Linee guida. Programmazione ad Oggetti 6/12/09. finestre JFrame JFrame è la classe di base per le finestre Programmazione ad Oggetti Interfacce grafiche Fornisce tutte le caratteristiche di una finestra vuota Barra del titolo Pulsanti standard Bordo ridimensionabile

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

17 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce 17 - 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