SlideShare a Scribd company logo
Listener Lezione sui listener e le classi interne dicembre 2008 Prof. Silvano Natalizi
Collegare due diversi bottoni – prima opzione Implementare due  metodi actionPerformed() Class MioDisegno implements ActionListener {  // codice Public void actionPerformed(ActionEvent event) { frame.repaint(); } Public void actionPerformed(ActionEvent event) { label.setTxt(“salute!”); } Ma questo è impossibile, non si può scrivere il medesimo metodo due volte. Il programma non si compila, inoltre come si fà a sapere quale dei due metodi richiamare ?
Registra il medesimo listener con entrambi i botton La cosa funzione, ma abbiamo un metodo che fa diverse cose, anziché una sola. Questo non è bene, perché un metodo deve svolgere un solo compito!
Creare due diverse classi ActionListener – terza opzione Il problema è che le classi listener non hanno accesso alle variabili della classe MioDisegno. Si può risolvere il problema creando i metodi getter, ma non è una soluzione gradevole.
Soluzione ottimale Sarebbe bello! Se le due differenti classi listener. potessero accedere alle variabili d’istanza della principale classe della grafica!!. Se queste classi quasi potessero appartenere alla classe principale, allora avremmo il meglio del mondo. Sarebbe un sogno, ma è solo una fantasia…
Classe interna Si può, si può !!!! Si può avere una classe all’interno di un’altra Ci si deve solo assicurare che la definizione della classe interna sia all’interno delle parentesi graffe della classe esterna. Class Esterna { Class Interna { Void go() { } } }
La classe interna La classe interna può usare tutte le variabili d’istanza della classe esterna, anche le variabili private. Pertanto la classe interna può usare i metodi e le variabili della classe esterna, come se questi fossero definiti al suo interno.
esempio

More Related Content

PPT
Classi_astratte_interfacce
PPT
Programmazione ad oggetti
PPTX
Programmazione ad oggetti
PPT
Programmaoggetti[1]
PDF
Lezione 10 - Programmazione Ad Oggetti, Vb Accenni
PPT
Programmazione ad oggetti
PDF
Selezione Scolastica Soluzioni
PPT
Corso Web2.0: Conclusioni
Classi_astratte_interfacce
Programmazione ad oggetti
Programmazione ad oggetti
Programmaoggetti[1]
Lezione 10 - Programmazione Ad Oggetti, Vb Accenni
Programmazione ad oggetti
Selezione Scolastica Soluzioni
Corso Web2.0: Conclusioni

More from Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA (20)

PPTX
Procedimentodisoluzione fisicaparticelle
PPTX
Proc solescercaparabolastaccasegmentosuassex
PPT
Problema fisica compito in classe
PPT
Esercizi sulla energia meccanica
PPT
Lezione Blog Didattici 27 4 2010
PDF
Lezione dappubblicaresulblogvale
PPT
Lezione programmazione database con java Servlet - quarta parte
PPT
Lezione jsp su come gestire una tabella relazionale con chiave esterna
PPT
Lezione jsp pdatabase crud quintaparte
PPT
Lezione js pdatabasecrudterzaparte
Procedimentodisoluzione fisicaparticelle
Proc solescercaparabolastaccasegmentosuassex
Problema fisica compito in classe
Esercizi sulla energia meccanica
Lezione Blog Didattici 27 4 2010
Lezione dappubblicaresulblogvale
Lezione programmazione database con java Servlet - quarta parte
Lezione jsp su come gestire una tabella relazionale con chiave esterna
Lezione jsp pdatabase crud quintaparte
Lezione js pdatabasecrudterzaparte
Ad

Recently uploaded (9)

PPTX
SLIDE-DE-CURSOS-OssssFICIAL-DA-EGEPI-.pptx
PDF
CHUYÊN ĐỀ BỔ TRỢ NGỮ ÂM, TỪ VỰNG NÂNG CAO - TIẾNG ANH 9 VÀ ÔN THI VÀO LỚP 10 ...
PDF
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 EXPLORE NEW WORLDS - CẢ NĂM...
PDF
16 CHUYÊN ĐỀ BÀI TẬP ÔN THI TUYỂN SINH VÀO 10 - MÔN TIẾNG ANH - THEO FORM ĐỀ ...
PDF
GIÁO ÁN KẾ HOẠCH BÀI DẠY CHÍNH KHÓA TIẾNG ANH 9 - CẢ NĂM - THEO CÔNG VĂN 5512...
PDF
GIÁO ÁN CHÍNH KHÓA TIẾNG ANH 9 - CẢ NĂM - THEO CÔNG VĂN 5512 (2 CỘT) NĂM HỌC ...
PPTX
Copia di PROGETTO VIOLENZA sulle donne PCTO
PDF
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 FRIENDS GLOBAL - CẢ NĂM (24...
PDF
Mazzoni-Reggi-2012-Effetto-Lucifero-Su-Wikipedia.pdf
SLIDE-DE-CURSOS-OssssFICIAL-DA-EGEPI-.pptx
CHUYÊN ĐỀ BỔ TRỢ NGỮ ÂM, TỪ VỰNG NÂNG CAO - TIẾNG ANH 9 VÀ ÔN THI VÀO LỚP 10 ...
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 EXPLORE NEW WORLDS - CẢ NĂM...
16 CHUYÊN ĐỀ BÀI TẬP ÔN THI TUYỂN SINH VÀO 10 - MÔN TIẾNG ANH - THEO FORM ĐỀ ...
GIÁO ÁN KẾ HOẠCH BÀI DẠY CHÍNH KHÓA TIẾNG ANH 9 - CẢ NĂM - THEO CÔNG VĂN 5512...
GIÁO ÁN CHÍNH KHÓA TIẾNG ANH 9 - CẢ NĂM - THEO CÔNG VĂN 5512 (2 CỘT) NĂM HỌC ...
Copia di PROGETTO VIOLENZA sulle donne PCTO
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 FRIENDS GLOBAL - CẢ NĂM (24...
Mazzoni-Reggi-2012-Effetto-Lucifero-Su-Wikipedia.pdf
Ad

Listener

  • 1. Listener Lezione sui listener e le classi interne dicembre 2008 Prof. Silvano Natalizi
  • 2. Collegare due diversi bottoni – prima opzione Implementare due metodi actionPerformed() Class MioDisegno implements ActionListener { // codice Public void actionPerformed(ActionEvent event) { frame.repaint(); } Public void actionPerformed(ActionEvent event) { label.setTxt(“salute!”); } Ma questo è impossibile, non si può scrivere il medesimo metodo due volte. Il programma non si compila, inoltre come si fà a sapere quale dei due metodi richiamare ?
  • 3. Registra il medesimo listener con entrambi i botton La cosa funzione, ma abbiamo un metodo che fa diverse cose, anziché una sola. Questo non è bene, perché un metodo deve svolgere un solo compito!
  • 4. Creare due diverse classi ActionListener – terza opzione Il problema è che le classi listener non hanno accesso alle variabili della classe MioDisegno. Si può risolvere il problema creando i metodi getter, ma non è una soluzione gradevole.
  • 5. Soluzione ottimale Sarebbe bello! Se le due differenti classi listener. potessero accedere alle variabili d’istanza della principale classe della grafica!!. Se queste classi quasi potessero appartenere alla classe principale, allora avremmo il meglio del mondo. Sarebbe un sogno, ma è solo una fantasia…
  • 6. Classe interna Si può, si può !!!! Si può avere una classe all’interno di un’altra Ci si deve solo assicurare che la definizione della classe interna sia all’interno delle parentesi graffe della classe esterna. Class Esterna { Class Interna { Void go() { } } }
  • 7. La classe interna La classe interna può usare tutte le variabili d’istanza della classe esterna, anche le variabili private. Pertanto la classe interna può usare i metodi e le variabili della classe esterna, come se questi fossero definiti al suo interno.