Giovanni Torrero. E-mail = giovanni.torrero@email.it



Documenti analoghi
Registratori di Cassa

Guida all uso di Java Diagrammi ER

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Il calendario di Windows Vista

Moduli (schede compilabili) in Word Esempio: scheda di alimentazione per un degente

8.9 CREARE UNA TABELLA PIVOT

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Corso Eclipse. Prerequisiti. 1 Introduzione

FPf per Windows 3.1. Guida all uso

STAMPA UNIONE DI WORD

Come modificare la propria Home Page e gli elementi correlati

MANUALE PARCELLA FACILE PLUS INDICE

Tale attività non è descritta in questa dispensa

On-line Corsi d Informatica sul web

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

SOMMARIO... 3 INTRODUZIONE...

Manuale Utente Amministrazione Trasparente GA

MANUALE PER L UTILIZZO DELLA FUNZIONE EVENTI Rel.1.2 del 29 gennaio 2004

Modulo 4: Ereditarietà, interfacce e clonazione

Per effettuare la stampa di una cartella di lavoro si accede al comando. Stampa dal menu File o si utilizza il pulsante omonimo sulla barra

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO

Olga Scotti. Basi di Informatica. File e cartelle

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

10 - Disegno di sezioni e profili da punti topografici.

Identificare le diverse parti di una finestra: barra del titolo, barra dei menu, barra degli strumenti, barra di stato, barra di scorrimento.

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

MANUALE PER CONSULTARE LA RASSEGNA STAMPA VIA WEB

Innanzitutto andiamo sul sito ed eseguiamo il download del programma cliccando su Download Dropbox.

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

L interfaccia utente di Office 2010

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Eclipse - Nozioni Base

OSSIF WEB. Manuale query builder

File, Modifica, Visualizza, Strumenti, Messaggio

Corso Eclipse. Prerequisiti. 3 Window Builder

TUTORIAL PER UTILIZZO CATALOGO RICAMBI WEB

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

Database 1 biblioteca universitaria. Testo del quesito

INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014)

5-1 FILE: CREAZIONE NUOVO DOCUMENTO

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8

Manuale d uso Lexun Area Riservata proprietà di logos engineering - Sistema Qualità certificato ISO 9001 Det Norske Veritas Italia

MAUALE PIATTAFORMA MOODLE

Manuale Utente Albo Pretorio GA

Gestione Rapporti (Calcolo Aree)

IL MIO PRIMO SITO: NEWS

Per accedere clicca su START o AVVIO (in basso a sinistra sul tuo schermo), poi su PROGRAMMI, ACCESSORI e infine su BLOCCO NOTE.

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

L amministratore di dominio

GateManager. 1 Indice. tecnico@gate-manager.it

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

MANUALE D USO DELLA PIATTAFORMA ITCMS

INTERNET EXPLORER Guida introduttiva CAPITOLO 1 Fig. 1

Il web server Apache Lezione n. 3. Introduzione

Importare/esportare la rubrica di Webmail Uniba

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014

Visual basic base Lezione 01. L'ambiente di sviluppo

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

Figura 54. Visualizza anteprima nel browser

IMPORTAZIONE DI GRAFICI E TABELLE DA EXCEL A WORD

Guida Joomla. di: Alessandro Rossi, Flavio Copes

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Guida. Macchina Scratch

COME ELIMINARE PARTI DEL TEMPLATE IN PAGINE SINGOLE

INDICE. Accesso al Portale Pag. 2. Nuovo preventivo - Ricerca articoli. Pag. 4. Nuovo preventivo Ordine. Pag. 6. Modificare il preventivo. Pag.

MANUALE UTENTE. Computer Palmare WORKABOUT PRO

Backup e Aggiornamenti

Laboratorio di Sistemi Programmare in Php con NetBeans Php. Programmare in Php con Xampp e NetBeans IDE

Istruzioni operative instal azione FirmaVerifica3.0 Pag.1 di 27

Integrazione InfiniteCRM - MailUp

I file PDF possono essere creati : 1. dall interno del programma Adobe 2. Per quelli che lo prevedono direttamente dall interno di altri programmi

WORD 97 SCRIVERE UNA TESI DI LAUREA

PROGETTO PER LA TRASMISSIONE DOCUMENTI RELATIVI ALL APPROVAZIONE DELLE MANIFESTAZIONI IN FORMA DIGITALE

file:///c:/formazione/photoshop-webmaster-uffici/doc/guida-winzip.htm Guida a Winzip

Gestione Risorse Umane Web. Gestione della foto in stampa unione. Versione V01

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

Basi di dati Microsoft Access

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Creare un applicazione con Qt Creator in pochi semplici passi

INDICE. IL CENTRO ATTIVITÀ... 3 I MODULI... 6 IL MY CLOUD ANASTASIS... 8 Il menu IMPORTA... 8 I COMANDI DEL DOCUMENTO...

NAVIGARE IN INTERNET (Dal latino inter e dall inglese net = tra la rete )

ISTRUZIONI PER LA GESTIONE BUDGET

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

Transcript:

JAVA con NetBeans

Giovanni Torrero E-mail = giovanni.torrero@email.it

Indice Capitolo 1. Il primo programma 5 1.1. L ambiente operativo 5 1.2. La calcolatrice 16 1.3. Gli oggetti 21 Capitolo 2. Applet 33 2.1. Introduzione agli applet 33 Indice analitico 55 Bibliografia 57 3

CAPITOLO 1 Il primo programma 1.1. L ambiente operativo NetBeans è un I.D.E. particolarmente adatto per scrivere programmi usando il linguaggio Java. Per procurarsi questo programma bisogna collegarsi con: http://www.netbeans.org/downloads/ dopo aver installato il programma possiamo iniziare con il nostro primo progetto. Per fare questo seguiamo i passi indicati nella figura 1.1.1 Figura 1.1.1. Iniziare il primo progetto Successivamente appare sullo schermo la finestra riportata nella figura 1.1.2 nella pagina successiva. 5

6 1. IL PRIMO PROGRAMMA Figura 1.1.2. Iniziare il primo progetto, passo 2 Dopo aver scelto Next la finestra di dialogo si modifica come indicato in figura 1.1.3 a fronte Scegliendo il pulsante Finish il progetto viene completato, si tratta solo dello scheletro di una applicazione priva di funzionalità, comunque possiamo compilarla come è indicato nella figura 1.1.4 nella pagina 8 Dopo aver compilato il progetto possiamo lanciare il programma appena costruito seguendo la procedura indicata nella figura 1.1.5 nella pagina 9 Altri modi per ottenere lo stesso risultato è quello di usare il tasto F6 oppure usare l icona nella barra delle icone. Quanto detto ci permette di lanciare il programma avendo però in funzione NetBeans, ma se noi vogliamo distribuire la nostra applicazione ad altri utenti che non possiedono Net- Beans come possiamo fare? Andiamo nella cartella nella quale è memorizzata l applicazione, scegliamo la cartella che contiene il nostro progetto aprendola troveremo la cartella, dentro questa cartella vi è tutto quello che serve per distribuire la nostra applicazione, comprimiamola con WinZip e distribuiamo il file ottenuto. In particolare in quella cartella vi è il file Frasi.jar che è eseguibile, se sul nostro computer abbiamo la

1.1. L AMBIENTE OPERATIVO 7 Figura 1.1.3. Iniziare il primo progetto, passo 3 Java Virtual Machine, facendo doppio click su Frasi.jar possiamo lanciare l applicazione. Diamo una qualche funzionalità all applicazione, aggiungiamo alla finestra dell applicazione tre caselle di testo e un pulsante. Nelle prime due caselle scriveremo due frasi, premendo il pulsante nella terza casella dovrà apparire l unione delle due frasi scritte nelle altre due caselle. In NetBeans nella finestra Palette, che contiene vari strumenti da utilizzare, scegliamo Text Field, come indicato in figura 1.1.6 nella pagina 10 Spostiamoci nella applicazione e aggiungiamo i tre campi di testo e il bottone, vedi figura 1.1.7 nella pagina 11 Se ci spostiamo su uno degli elementi appena inseriti e facciamo click con il tasto destro del mouse appare un menù a discesa nel quale scegliamo la voce Properties, vedi figura 1.1.8 nella pagina 12, facendo click sulla voce scelta apparirà la seguente casella di dialogo (vedi figura 1.1.9 nella pagina 13)

8 1. IL PRIMO PROGRAMMA Figura 1.1.4. Compilate il vostro primo progetto In questa finestra possiamo ad esempio cambiare il testo che appare sull icona del bottone. Nella parte alta della finestra di dialogo scegliamo Events vedi figura 1.1.10 nella pagina 14. Ci verrà proposta una lista degli eventi che si possono gestire, facciamo click su actionperformed automaticamente, a fianco, vi viene proposto il nome del metodo che gestirà l evento e nella finestra del codice vi verrà proposto lo scheletro del metodo, vedi figura 1.1.11 nella pagina 14 Aggiungiamo al metodo appena costruito le cinque righe di codice riportate in figura 1.1.12 nella pagina 15, compiliamo e eseguiamo e la nostra prima applicazione entrerà in funzione.

1.1. L AMBIENTE OPERATIVO 9 Figura 1.1.5. Lanciare l applicazione mediante NetBeans

10 1. IL PRIMO PROGRAMMA Figura 1.1.6. Gli strumenti di NetBeans

1.1. L AMBIENTE OPERATIVO 11 Figura 1.1.7. I tre campi di testo e il bottone

12 1. IL PRIMO PROGRAMMA Figura 1.1.8. Modifica delle proprietà di un controllo

1.1. L AMBIENTE OPERATIVO 13 Figura 1.1.9. Finestra delle proprietà del bottone

14 1. IL PRIMO PROGRAMMA Figura 1.1.10. Gestione dell evento pressione del bottone Unisci Figura 1.1.11. Codice automaticamente aggiunto da NetBeans

1.1. L AMBIENTE OPERATIVO 15 Figura 1.1.12. Codice che dà funzionalità al bottone Unisci

16 1. IL PRIMO PROGRAMMA 1.2. La calcolatrice Il nostro primo vero programma sarà la solita calcolatrice, potremo così dare un occhiata ai tipi di dati, alle classi e agli oggetti. Cominceremo con una calcolatrice molto elementare che fa solo le quattro operazioni. Costruiamo un nuovo progetto, che chiameremo ProgettoCalcolatrice, u- sando la stessa procedura indicata nelle figure 1.1.1 nella pagina 5, 1.1.2 nella pagina 6, 1.1.3 nella pagina 7. Figura 1.2.1. Il form della calcolatrice Popoliamo il form ottenuto come indicato nella figura 1.2.1, tenendo presente, anche se nella form non si vede, che bisogna inserire un Button Group e collegare ad esso, tramite la finestra Properties, i due Radio Button 1. Il Form rappresenta l interfaccia utente e il suo compito è solo quello di raccogliere i dati e visualizzare i risultati, l elaborazione dei dati sarà affidata ad una apposita classe che chiameremo CalCal, quindi le uniche funzionalità che devono risiedere all interno del form sono quelle dei Button che rappresentano i numeri e i tasti di cancellazione, mentre i 1 Settare opportunamente la proprietà button Group

1.2. LA CALCOLATRICE 17 tasti delle operazioni richiameranno degli opportuni metodi di CalCal i cui risultati verrano visualizzati nella label risultato. Per dare funzionalità ai tasti numerici scegliamo uno di essi, ad esempio il tasto 0, andiamo nella finestra Properties e scegliamo Event, successivamente facciamo click su ActionPerformed nella casella vicina apparirà il nome del relativo metodo, facendo doppio click si ActioinPerformed passiamo al relativo codice, costruito automaticamente, che è quello riportato nella figura 1.2.2 Figura 1.2.2. struttura iniziale di jbutton10actionperformed Successivamente modifichiamo il codice come indicato qui sotto: private void jbutton10actionperformed(java.awt.event.actionevent evt) { // TODO add your handling code here: if (jradiobutton1.isselected() ) jradiobutton1.settext(jradiobutton1.gettext()+"0"); if (jradiobutton2.isselected() ) jradiobutton2.settext(jradiobutton2.gettext()+"0"); } Ripetiamo questa operazione per ciascuna dei 10 tasti numerici. Ripetiamo la stessa operazione per il tasto, usando il codice sotto riportato: private void jbutton11actionperformed(java.awt.event.actionevent evt) { // TODO add your handling code here: if (jradiobutton1.isselected() ) jradiobutton1.settext(jradiobutton1.gettext()+"."); if (jradiobutton2.isselected() ) jradiobutton2.settext(jradiobutton2.gettext()+"."); } Il Button CLS serve per resettare la calcolatrice, quindi tutte le label devono essere riportate allo stato iniziale, procediamo nel solito modo e modifichiamo il metodo ActionPerformed come indicato sotto: private void jbutton17actionperformed(java.awt.event.actionevent evt) { // TODO add your handling code here: jradiobutton1.settext(""); jradiobutton2.settext(""); jlabel1.settext("operazione"); jlabel3.settext("risultato"); } Più complessa è l azione del tasto C, esso deve cancellare solo l ultima cifra relativa al Radio Button selezionato. Per realizzare questa funzionalità bisogna imparare a manipolare le stringhe. Il primo metodo utile per il nostro scopo è il metodo lenght() della classe string, qui di seguito è

18 1. IL PRIMO PROGRAMMA riportato quanto scritto nella documentazione di Java a proposito di questo metodo length public int length() Returns the length of this string. The length is equal to the number of Unicode code units in the string. Specified by: length in interface CharSequence Returns: the length of the sequence of characters represented by this object. Il secondo metodo della classe String che useremo sarà substring(), nella casella seguente è riportato quanto viene detto a proposito di questo metodo nella documentazione di Java. substring public String substring(int beginindex, int endindex) Returns a new string that is a substring of this string. The substring begins at the specified beginindex and extends to the character at index endindex - 1. Thus the length of the substring is endindex-beginindex. Examples: "hamburger".substring(4, 8) returns "urge" "smiles".substring(1, 5) returns "mile" Parameters: beginindex - the beginning index, inclusive. endindex - the ending index, exclusive. Returns: the specified substring. Throws: IndexOutOfBoundsException - if the beginindex is negative, or endindex is larger than the length of this String object, or beginindex is larger than endindex. Infine, dopo aver proceduto con il tasto C nello stesso modo seguito per gli altri tasti, bisogna completare il codice prodotto automaticamente come indicato sotto: private void jbutton12actionperformed(java.awt.event.actionevent evt) { // TODO add your handling code here: String radio1 = jradiobutton1.gettext(); String radio2 = jradiobutton2.gettext(); if ((jradiobutton1.isselected()) & (radio1.length()>0)) jradiobutton1.settext(radio1.substring(0, radio1.length()-1)); if ((jradiobutton2.isselected()) & (radio2.length()>0)) jradiobutton2.settext(radio2.substring(0, radio2.length()-1)); }

1.2. LA CALCOLATRICE 19 Per dare funzionalità agli altri tasti è necessario introdurre la classe CalCal, per introdurre una classe in un progetto si seguono le istruzioni contenute nelle figure 1.2.3, 1.2.4, 1.2.5 nella pagina successiva. Figura 1.2.3. Inserire una nuova classe (1) Figura 1.2.4. Inserire una nuova classe (2) Dopo aver compiuto tutti questi passi otteniamo lo scheletro della nuova classe che dobbiamo riempire, per fare questo dobbiamo prima fare una riflessione sulla programmazione ad oggetti.

20 1. IL PRIMO PROGRAMMA Figura 1.2.5. Inserire una nuova classe (3)

1.3. GLI OGGETTI 21 1.3. Gli oggetti La programmazione ad oggetti (vedi[1] ) si basa sulla simulazione, per via informatica, degli oggetti che il programma deve manipolare. Il concetto di oggetto va inteso in modo ampio, un oggetto può essere una figura, una persona, un concetto astratto come il contenuto di un insieme di frasi. Dato un oggetto ne esistono molti altri dello stesso tipo, ad esempio la parola automobile richiama alla mente una classe di oggetti alla quale appartengono la mia automobile, l automobile del mio amico Carlo, l automobile che ha vinto il Gran Premio di Imola,...etc. Quindi ogni oggetto appartiene ad una classe di oggetti, il concetto di classe, nella programmazione ad oggetti, deriva appunto dalla classe che accomuna più oggetti dello stesso tipo. Quindi il concetto di classe è simile al concetto di tipo, la classe è il tipo di oggetto che stiamo considerando. Definita una classe non si è definito un particolare oggetto, ma solo il suo tipo. Per definire un singolo oggetto di quel tipo bisogna ricorrere all istanziazione che si ottiene la parola chiave new, ad esempio la linea di codice : CalcCalc calcoli = new CalcCalc(); abbiamo effettivamente costruito un oggetto di tipo CalcCalc il cui nome è calcoli, fino a quando non si usa la parola chiave new non viene costruito un oggetto, new alloca la memoria per l oggetto e ritorna un puntatore alla memoria allocata. All interno di una classe possiamo inserire due tipi di costrutti: le proprietà e i metodi. Cominciamo ad occuparci delle proprietà. Innanzitutto richiamiamo il file CalcCalc.java nell IDE di NetBeans, per fare questo nel riquadro Projects scegliamo ProgettoCalcolatrtice apriamo Source Package e poi progettocalcolatrice, infine selezioniamo CalcCalc.java, come indicato nella figura 1.3.1 nella pagina seguente, verrà quindi aperta la finestra relativa a questo file. Con CalcCalc,java selezionato, nel menù scegliamo Source + Insert Code (vedi figura 1.3.2 nella pagina successiva), aprendo così il pop-up riportato nella figura 1.3.3 nella pagina 23. Nel pop-up scegliamo AddProperty e si aprirà la scheda riportata nella figura 1.3.4 nella pagina 24. Questa scheda va completata come indicato nella figura ed infine scegliamo il tasto OK, nel file CalcCalc.java verrà automaticamente inserito il codice relativo alla proprietà. Allo stesso modo inseriamo una seconda proprietà e una terza proprietà: operando2 e risultato. Inseriamo poi i metodi, questi vanno inseriti manualmente.

22 1. IL PRIMO PROGRAMMA Figura 1.3.1. CalcCalc.java Figura 1.3.2. Inserimento automatico del codice Ecco come il file CalcCalc.java dovrebbe apparire dopo aver seguito le istruzioni sopra riportate.

1.3. GLI OGGETTI 23 Figura 1.3.3. Aggiungi una proprietà

24 1. IL PRIMO PROGRAMMA Figura 1.3.4. Operando 1

1.3. GLI OGGETTI 25 Note 1.1. Listato della classe CalcCalc: prima parte 1 / 2 To change t h i s template, choose Tools Templates 3 and open the t e m p l a t e i n the e d i t o r. 4 / 5 6 package p r o g e t t o c a l c o l a t r i c e ; 7 8 / 9 10 @author G i o v a n n i T o r r e r o 11 / 12 13 public c l a s s C a l c C a l c { 14 p r i v a t e Double operando1 ; 15 / 16 Get the v a l u e o f operando1 17 @ r e t u r n the v a l u e o f operando1 18 / 19 public Double getoperando1 ( ) { 20 return operando1 ; 21 } 22 23 / 24 Set the v a l u e o f operando1 25 26 @param operando1 new v a l u e o f operando1 27 / 28 public void setoperando1 ( Double operando1 ) { 29 t h i s. operando1 = operando1 ; 30 } 31 32 p r i v a t e Double operando2 ;

26 1. IL PRIMO PROGRAMMA Note 1.2. Listato della classe CalcCalc: seconda parte 1 2 / 3 Get the v a l u e o f operando2 4 5 @ r e t u r n the v a l u e o f operando2 6 / 7 public Double getoperando2 ( ) { 8 return operando2 ; } 9 10 / 11 Set the v a l u e o f operando2 12 13 @param operando2 new v a l u e o f operando2 14 / 15 public void setoperando2 ( Double operando2 ) { 16 t h i s. operando2 = operando2 ; 17 } 18 19 p r i v a t e Double r i s u l t a t o ; 20 21 22 / 23 Get the v a l u e o f r i s u l t a t o 24 @ r e t u r n the v a l u e o f r i s u l t a t o 25 / 26 public Double g e t R i s u l t a t o ( ) { 27 return r i s u l t a t o ; 28 } 29 30 / 31 Set the v a l u e o f r i s u l t a t o 32 33 @param r i s u l t a t o new v a l u e o f r i s u l t a t o 34 / 35 public void s e t R i s u l t a t o ( Double r i s u l t a t o ) { 36 t h i s. r i s u l t a t o = r i s u l t a t o ; 37 }

1.3. GLI OGGETTI 27 Note 1.3. Listato della classe CalcCalc: terza parte 1 A d d i z i o n e d e i due o p e r a n d i 2 @param op1 S t r i n g a che c o n t i e n e i l primo operando 3 @param op2 S t r i n g a che c o n t i e n e i l secondo operando 4 @ r e t u r n O s s e r v a r e come i due p a r a m e t r i s i a n o d e l l e s t r i n g h e 5 vengono t r a s f o r m a t i i n Double ed i l r i s u l t a t o 6 v i e n e r i t r a s f o r m a t o i n una s t r i n g a 7 / 8 public S t r i n g a d d i z i o n e ( S t r i n g op1, S t r i n g op2 ) { 9 setoperando1 (new Double ( op1 ) ) ; 10 setoperando2 (new Double ( op2 ) ) ; 11 s e t R i s u l t a t o ( getoperando1 ( )+getoperando2 ( ) ) ; 12 return g e t R i s u l t a t o ( ). t o S t r i n g ( ) ; 13 } 14 15 / 16 S o t t r a z i o n e d e i due o p e r a n d i 17 @param op1 18 @param op2 19 @ r e t u r n 20 / 21 public S t r i n g s o t t r a z i o n e ( S t r i n g op1, S t r i n g op2 ) { 22 operando1 = new Double ( op1 ) ; 23 operando2 = new Double ( op2 ) ; 24 r i s u l t a t o = operando1 operando2 ; 25 return r i s u l t a t o. t o S t r i n g ( ) ; 26 }

28 1. IL PRIMO PROGRAMMA Note 1.4. Listato della classe CalcCalc: quarta parte 1 2 / 3 M o l t i p l i c a z i o n e d e i due o p e r a n d i 4 @param op1 5 @param op2 6 @ r e t u r n 7 / 8 public S t r i n g m o l t i p l i c a z i o n e ( S t r i n g op1, S t r i n g op2 ) { 9 operando1 = new Double ( op1 ) ; 10 operando2 = new Double ( op2 ) ; 11 r i s u l t a t o = operando1 operando2 ; 12 return r i s u l t a t o. t o S t r i n g ( ) ; 13 } 14 15 / 16 D i v i s i o n e d e i due o p e r a n d i 17 @param op1 18 @param op2 19 @ r e t u r n 20 / 21 public S t r i n g d i v i s i o n e ( S t r i n g op1, S t r i n g op2 ) { 22 operando1 = new Double ( op1 ) ; 23 operando2 = new Double ( op2 ) ; 24 r i s u l t a t o = operando1 / operando2 ; 25 return r i s u l t a t o. t o S t r i n g ( ) ; 26 } 27 }

1.3. GLI OGGETTI 29 Una classe contiene sostanzialmente due cose: le proprietà (o attributi) e i metodi. Le proprietà vanno dichiarati private, questo significa che possono essere utilizzate soltanto all interno della classe in cui sono state dichiarate (hanno la visibilità ridotta alla classe nella quale sono state dichiarate), per permettere di leggere o modificare le proprietà, NetBeans, costruisce automaticamente, per ogni proprietà dichiarata private, il metodo set... e il metodo get..., il primo serve per aggiornare la proprietà, il secondo per estrarre il contenuto. Questo modo di procedere sembra un inutile artificio, ma questi due metodi costituiscono una comoda interfaccia tra gli oggetti di quella classe e l esterno e consentono di modificare il codice all interno della classe senza dover modificare le istruzioni, scritte nei file esterni alla classe 2. Mentre le proprietà vengono gestite automaticamente da NetBeans per i metodi questo è impossibile e vanno scritti manualmente. La dichiarazione di un metodo è costituita da una intestazione e dal corpo del metodo compreso tra parentesi graffe, vedi la figura 1.3.5 Figura 1.3.5. Struttura di un metodo Ricordiamo che una classe non è un oggetto, ma un tipo di oggetto. Per creare un oggetto, come già detto, dobbiamo usare il comando new. Ad esempio nel codice della classe ProgettoCalcolatriceView contenuta nel file ProgettoCalcolatriceView.java vi è l istruzione 2 Questo modo di procedere viene chiamato incapsulamento

30 1. IL PRIMO PROGRAMMA CalcCalc calcoli = new CalcCalc(); con questa istruzione viene creato l oggetto calcoli appartenente alla classe CalcCalc, per richiamare i metodi di quella classe, ad esempio il metodo addizione si usa una istruzione come quella riportata alla riga 2 del listato 1.5 nella pagina successiva dove è riportato il codice da utilizzare per dare funzionalità ai quattro tasti delle operazioni. Spendiamo due parole sui modificatori di accesso, questi aggettivi riguardano sia i metodi che le proprietà, ma le proprietà abbiamo visto che è sempre meglio dichiararle private e poi usare i relativi metodi per accedere a esse, quindi sulle proprietà non diciamo più nulla. I metodi possono essere dichiarati: pubblic: in questo caso sono accessibile dappertutto nel progetto, anche fuori dalla classe nella quale sono definiti; protected: sono accessibile solo nella classe in cui è definito e nelle classi che ereditano 3 la classe in cui e definito default: se omettiamo il modificatore di accesso abbiamo usato questo tipo di modificatore, l accessibilità al metodo è possibile solo dalle classi che appartengono allo stesso package 4 al quale appartiene la classe nella quale il metodo è definito. private: il metodo è accessibile solo dalla classe nella quale è definito. 3 L eredità tra classi sarà vista in seguito 4 Un package è una directory nella quale NetBeans mette le classi, ne può creare diverse e servono per mettere ordine quando il numero di classi diventa grande. La gestione dei package è molto favorita da NetBeans, i nostri interventi sono minimi, questa questione sarà vista più tardi.

1.3. GLI OGGETTI 31 1 2 C a l c C a l c c a l c o l i = new C a l c C a l c ( ) ; 3 4 p r i v a t e void j B u t t o n 1 3 A c t i o n P e r f o r m e d ( j a v a. awt. e v e n t. A ctionevent e v t ) {//GEN FIRST : event_jbutton13actionperformed 5 // TODO add your h a n d l i n g code h e r e : 6 S t r i n g ra, op1, op2 ; 7 op1 = jradiobutton1. gettext ( ) ; 8 op2 = jradiobutton2. gettext ( ) ; 9 r a = c a l c o l i. a d d i z i o n e ( op1, op2 ) ; 10 j L a b e l 1. s e t T e x t ( "+" ) ; 11 j L a b e l 3. s e t T e x t ( r a ) ; 12 13 }//GEN LAST : event_jbutton13actionperformed 14 15 p r i v a t e void j B u t t o n 1 4 A c t i o n P e r f o r m e d ( j a v a. awt. e v e n t. A ctionevent e v t ) {//GEN FIRST : event_jbutton14actionperformed 16 // TODO add your h a n d l i n g code h e r e : 17 S t r i n g ra, op1, op2 ; 18 op1 = jradiobutton1. gettext ( ) ; 19 op2 = jradiobutton2. gettext ( ) ; 20 r a = c a l c o l i. s o t t r a z i o n e ( op1, op2 ) ; 21 j L a b e l 1. s e t T e x t ( " " ) ; 22 j L a b e l 3. s e t T e x t ( r a ) ; 23 }//GEN LAST : event_jbutton14actionperformed 24 25 p r i v a t e void j B u t t o n 1 5 A c t i o n P e r f o r m e d ( j a v a. awt. e v e n t. A ctionevent e v t ) {//GEN FIRST : event_jbutton15actionperformed 26 // TODO add your h a n d l i n g code h e r e : 27 S t r i n g ra, op1, op2 ; 28 op1 = jradiobutton1. gettext ( ) ; 29 op2 = jradiobutton2. gettext ( ) ; 30 r a = c a l c o l i. m o l t i p l i c a z i o n e ( op1, op2 ) ; 31 j L a b e l 1. s e t T e x t ( " " ) ; 32 j L a b e l 3. s e t T e x t ( r a ) ; 33 }//GEN LAST : event_jbutton15actionperformed Listato 1.5. Classe ProgettoCalcolatriceView.java

CAPITOLO 2 Applet 2.1. Introduzione agli applet Usando Babylon 1 la parola applet viene tradotta nel seguente modo: Un programma scritto in linguaggio Java per l esecuzione in un browser Web compatibile con Java, quali HotJava(TM) o Netscape Navigator(TM), ecc. Breve codice che può essere trasferito in Internet ed eseguito nei computer client. Questo termine viene utilizzato spesso per fare riferimento a programmi incorporati in una riga come oggetti nei documenti HTML per Internet. Con NetBeans è possibile produrre applet di vario tipo, innanzitutto scegliamo New Project dal menù File oppure dalla toolbar e procediamo come indicato nella figura 2.1.1 Figura 2.1.1. Creare un applet, passo 1 1 Per informazioni su Babylon http://www.babylon.com 33

34 2. APPLET Alla fine scegliamo Next e apparirà la casella di dialogo riportata nella figura 2.1.2 diamo un nome al progetto e scegliamo Finish ed il progetto è pronto. Figura 2.1.2. Creare un applet, passo 2 Per costruire l applet vero e proprio procediamo come è indicato nella figura 2.1.3 a fronte, dopo aver eseguito le precedenti istruzioni otteniamo quanto riportato in figura 2.1.4 nella pagina 36 Dopo aver fatto le scelte indicate ed infine premuto sul pulsante Next otteniamo quanto illustrato nella figura 2.1.5 nella pagina 36 Infine premendo il bottone Finish costruiamo l applet e l IDE apparirà come indicato in figura A questo punto bisogna dire a NetBeans che questo va compilato come un applet e quindi procediamo come indicato nella figura 2.1.7 nella pagina 38, comparirà allora la finestra di dialogo della figura 2.1.8 nella pagina 39

2.1. INTRODUZIONE AGLI APPLET 35 Figura 2.1.3. Creare un applet - passo 3

36 2. APPLET Figura 2.1.4. Creare un applet - passo 4 Figura 2.1.5. Creare un applet - passo 5

2.1. INTRODUZIONE AGLI APPLET 37 Figura 2.1.6. L Ide dopo la creazione dell applet

38 2. APPLET Figura 2.1.7. Informazioni per il compilatore - 1

2.1. INTRODUZIONE AGLI APPLET 39 Figura 2.1.8. Informazioni per il compilatore - 2

40 2. APPLET Abbiamo scritto il nostro applet, per farlo funzionare bisogna costruirlo scegliendo Build dal menù Run, oppure scegliere l icona. Se andiamo nella cartella dove abbiamo memorizzato il progetto, nel nostro caso I:\NetBeans\Progetti\ProgettoApplet (vedi figura 2.1.2 nella pagina 34), troviamo la cartella figura 2.1.9., aprendola troveremo i file riportati nella Figura 2.1.9. La cartella Dist Il file più importante della cartella Dist è, il contenuto di questo file è riportato nel listato 2.1 nella pagina successiva. Del listato prima citato noi utilizziamo soltanto queste tre righe: <applet width="300" height="300"> <param name="jnlp_href" value="launch.jnlp"/> </applet> Le due dimensioni width=300 height=300 le dobbiamo adattare alle reali dimensioni del nostro applet. Sul server dove appoggiamo le nostre pagine web dobbiamo riportare l intera cartella sostituendo il file con la pagina web che intendiamo pubblicare inserendo in essa le tre righe riportate nella precedente casella (righe 11, 12, 13 del listato 2.1 a fronte) nel punto della pagina in cui vogliamo fare apparire l applet.

2.1. INTRODUZIONE AGLI APPLET 41 Listato 2.1. File launch.html 1 <!DOCTYPE HTML PUBLIC " //W3C//DTD HTML 4. 0 1 T r a n s i t i o n a l //EN"> 2 <! ########################## IMPORTANT NOTE ############################ > 3 <! This p r e v i e w HTML page w i l l work o n l y w i t h JDK 6 update 10 and h i g h e r! > 4 <! ###################################################################### > 5 <html> 6 <head> 7 < t i t l e>test page f o r l a u n c h i n g t h e a p p l e t v i a JNLP</ t i t l e> 8 </ head> 9 <body> 10 <h3>test page f o r l a u n c h i n g t h e a p p l e t v i a JNLP</h3> 11 <a p p l e t width=" 300 " h e i g h t=" 300 "> 12 <param name=" j n l p _ h r e f " v a l u e=" l a u n c h. j n l p "/> 13 </ a p p l e t> 14 <! Or use t h e f o l l o w i n g s c r i p t e l e m e n t to l a u n c h w i t h t h e Deployment T o o l k i t > 15 <! Open t h e d e p l o y J a v a. j s s c r i p t to view i t s documentation > 16 <! 17 <s c r i p t s r c=" h t t p : / / j a v a. com/ j s / d e p l o y J a v a. j s "></ s c r i p t> 18 <s c r i p t> 19 var a t t r i b u t e s = { 20 codebase : [ a p p l e t codebase ], 21 code : [ c l a s s to l a u n c h ], 22 a r c h i v e : [ JAR f i l e w i t h t h e a p p l e t ], 23 width : [ a p p l e t width ], 24 h e i g h t : [ a p p l e t h e i g h t ] 25 } ; 26 var p a r a m e t e r s = { [ a p p l e t p a r a m e t e r s ] } ; 27 var v e r s i o n = [ JDK v e r s i o n ] ; 28 d e p l o y J a v a. r u n A p p l e t ( a t t r i b u t e s, p arameters, v e r s i o n ) ; 29 </ s c r i p t> 30 > 31 </ body> 32 </ html>

42 2. APPLET Innanzitutto bisogna osservare che tutte le volte che ricompiliamo il progetto il file launch.html viene ricostruito, quindi se noi abbiamo apportato ad esso delle modifiche verranno cancellate. Per evitare questo aggiungiamo al progetto un nuovo file di tipo html (come era già stato detto in precedenza) usando File->New File->Other->Html File, chiamiamo questo file PaginaWeb.html ed in esso ricopiamo le righe: <applet width="300" height="300"> <param name="jnlp_href" value="launch.jnlp"/> </applet> del file launch.html, mettendole nella sezione body. Questo file diventerà la nostra pagina html contenente l applet, deve essere inserito nella cartella dist ed essere ricopiato sul server assieme a tutta la cartella. Attualmente il nostro applet non fa nulla, cerchiamo di inserire in esso delle funzionalità, in particolare vogliamo che disegni nella sua area un cerchio di dato centro e di dato raggio. Analizziamo il listato del file NewJApplet.java riportato in 2.2 nella pagina 44

2.1. INTRODUZIONE AGLI APPLET 43 1 2 import j a v a. awt. G r a p h i c s ; 3 4 / 5 To change t h i s template, choose Tools Templates 6 and open the t e m p l a t e i n the e d i t o r. 7 / 8 9 / 10 NewJApplet. j a v a 11 12 C r e a ted on 11 dic 2008, 1 3. 1 6. 1 3 13 / 14 15 / 16 17 @author T o r r e r o G i o v a n n i 18 / 19 p u b l i c c l a s s NewJApplet extends j a v a x. swing. J A p p l e t { 20 21 / I n i t i a l i z e s the a p p l e t NewJApplet / 22 p u b l i c v o i d i n i t ( ) { 23 t r y { 24 j a v a. awt. EventQueue. invokeandwait ( new Runnable ( ) { 25 p u b l i c v o i d run ( ) { 26 i n i t C o m p o n e n t s ( ) ; 27 } 28 } ) ; 29 } catch ( E x c e p t i o n ex ) { 30 ex. p r i n t S t a c k T r a c e ( ) ; 31 } 32 } 33 34 / This method i s c a l l e d from w i t h i n the i n i t ( ) method to 35 i n i t i a l i z e the form. 36 WARNING: Do NOT modify t h i s code. The c o n t e n t o f t h i s method i s 37 a l w a y s r e g e n e r a t e d by the Form E d i t o r. 38 / 39 @SuppressWarnings ( " unchecked " ) 40 // <e d i t o r f o l d d e f a u l t s t a t e =" c o l l a p s e d " desc="generated Code">//GEN BEGIN : i n i t C o m p 41 p r i v a t e v o i d i n i t C o m p o n e n t s ( ) { 42 43 org. j d e s k t o p. l a y o u t. GroupLayout l a y o u t = new org. j d e s k t o p. l a y o u t. GroupLayout ( ge 44 getcontentpane ( ). s e t L a y o u t ( l a y o u t ) ; 45 l a y o u t. s e t H o r i z o n t a l G r o u p ( 46 l a y o u t. c r e a t e P a r a l l e l G r o u p ( org. j d e s k t o p. l a y o u t. GroupLayout. LEADING) 47. add ( 0, 400, Short.MAX_VALUE) 48 ) ; 49 l a y o u t. s e t V e r t i c a l G r o u p ( 50 l a y o u t. c r e a t e P a r a l l e l G r o u p ( org. j d e s k t o p. l a y o u t. GroupLayout. LEADING) 51. add ( 0, 300, Short.MAX_VALUE) 52 ) ;

44 2. APPLET 53 }// </ e d i t o r f o l d >//GEN END: i n i t C o m p o n e n t s 54 55 56 // V a r i a b l e s d e c l a r a t i o n do not modify //GEN BEGIN : v a r i a b l e s 57 // End o f v a r i a b l e s d e c l a r a t i o n //GEN END: v a r i a b l e s 58 59 60 } Listato 2.2.

2.1. INTRODUZIONE AGLI APPLET 45 Come si può notare il listato, generato automaticamente, è piuttosto complesso, questo è dovuto al fatto che nella figura 2.1.4 nella pagina 36 abbiamo scelto Swing GUI Forms, se avessimo scelto Java avremmo ottenuto la figura 2.1.10 Figura 2.1.10. Costruire un applet semplice Anche in questo caso bisogna abilitare Web Start come indicato in figura 2.1.7 nella pagina 38 e in figura 2.1.8 nella pagina 39. Il listato del nuovo applet è riportato in 2.5 nella pagina 49

46 2. APPLET 1 / 2 To change t h i s template, choose Tools Templates 3 and open the t e m p l a t e i n the e d i t o r. 4 / 5 6 import j a v a. a p p l e t. Applet ; 7 import j a v a. awt. G r a p h i c s ; 8 9 / 10 11 @author G i o v a n n i T o r r e r o 12 / 13 p u b l i c c l a s s S e m p l i c e A p p l e t extends Applet { 14 15 / 16 I n i t i a l i z a t i o n method t h a t w i l l be c a l l e d a f t e r the a p p l e t i s l o a d e d 17 i n t o the browser. 18 / 19 p u b l i c void i n i t ( ) { 20 // TODO s t a r t a s y n c h r o n o u s download o f heavy r e s o u r c e s 21 } 22 23 24 25 // TODO o v e r w r i t e s t a r t ( ), s t o p ( ) and d e s t r o y ( ) methods 26 27 } Listato 2.3. File SempliceApplet.java Affinché l applet sia in grado di disegnare un cerchio di dato centro e dato raggio è necessario avere un interfaccia grafica che ci consenta di introdurre i tre dati richiesti. L interfaccia per l immissione e la visualizzazione dei dati in ingresso e in uscita può risiedere nell applet stesso, in questo caso è meglio usare un applet del tipo JAppletFormn che offre un IDE visuale per disegnare l interfaccia, altrimenti l interfaccia grafica può essere inserita nella pagina html che ospita l applet usando il linguaggio di scrpting JavaScript per far dialogare il contenuto della pagina html con l applet stesso. In quest ultimo caso l applet è più semplice deve solo contenere delle proprietà private con i relativi metodi di accesso pubblici in modo da poter introdurre nell applet le coordinate del centro del cerchio e il suo raggio. L applet può scambiare con la pagina soltanto delle stringhe, mentre le coordinate del centro e il raggio sono degli interi, quindi le tre proprietà vanno raddoppiate, tre stringhe e tre interi, i tre interi non verranno introdotti come proprietà ma come tre istanze della classe Integer, questa classe rappresenta un intero ed ammette un costruttore avente un parametro stringa

2.1. INTRODUZIONE AGLI APPLET 47 il quale contiene la rappresentazione del numero da introdurre sotto forma di stringa. Per disegnare il cerchio usiamo i metodi ereditati dalla classe Applet, la riga 13 del listato 2.5 nella pagina 49 contiene la parola chiave extends che ci assicura che SempliceApplet è una estensione della classe Applet.. In particolare dobbiamo richiamare il metodo repaint della classe Applet, il metodo repaint richiama il metodo paint sempre della classe Applet, quest ultimo metodo va riscritto affinché possa disegnare sulla parte di schermo dedicata all applet ciò che noi vogliamo. Mettiamoci dunque all opera e cominciamo con inserire le proprietà. É possibile inserire automaticamente le proprietà basta fare click con il tasto destro nel punto in cui si vuole inserire la proprietà, comparirà il menù a discesa riportato in figura 2.1.11, scegliendo Insert Code comparirà la finestra di dialogo riportata in figura 2.1.12 nella pagina successiva, scegliamo Add Property... e comparirà la finestra riportata in figura 2.1.13 nella pagina seguente, procediamo come indicato in figura e la proprietà verrà inserita. Figura 2.1.11. Menù per l inserimento delle proprietà Listato 2.4.

48 2. APPLET Figura 2.1.12. Inserire una proprietà - 1 Figura 2.1.13. Inserire una proprietà - 2 Usando il sistema precedentemente descritto inseriamo le tre proprietà che rappresentano le coordinate del centro e il raggio della circonferenza che dobbiamo disegnare (vedere il listato 2.5 nella pagina successiva).

2.1. INTRODUZIONE AGLI APPLET 49 Listato 2.5. File SempliceApplet.java versione definitiva 1 / 2 To change t h i s template, choose Tools Templates 3 and open t h e t e m p l a t e i n t h e e d i t o r. 4 / 5 6 import j a v a. a p p l e t. A p p l e t ; 7 import j a v a. awt. G r a p h i c s ; 8 9 / 10 11 @author G i o v a n n i T o r r e r o 12 / 13 p u b l i c c l a s s S e m p l i c e A p p l e t extends A p p l e t { 14 15 / 16 I n i t i a l i z a t i o n method t h a t w i l l be c a l l e d a f t e r t h e a p p l e t i s l o a d e d 17 i n t o t h e b r o w s e r. 18 / 19 p u b l i c void i n i t ( ) { 20 // TODO s t a r t a s y n c h r o n o u s download o f heavy r e s o u r c e s 21 } 22 23 @ O v e r r i d e 24 p u b l i c void p a i n t ( G r a p h i c s g ) { 25 super. p a i n t ( g ) ; 26 I n t e g e r xc = new I n t e g e r ( t h i s. g e t X c e n t r o ( ) ) ; 27 I n t e g e r yc = new I n t e g e r ( t h i s. g e t Y c e n t r o ( ) ) ; 28 I n t e g e r r = new I n t e g e r ( t h i s. g e t R a g g i o ( ) ) ; 29 g. drawoval ( xc r, yc r, 2 r, 2 r ) ; 30 } 31 32 // TODO o v e r w r i t e s t a r t ( ), s t o p ( ) and d e s t r o y ( ) methods 33 34 p r i v a t e S t r i n g x c e n t r o = " 100 " ; 35 36 / 37 Get t h e v a l u e o f x c e n t r o 38 39 @ r e t u r n t h e v a l u e o f x c e n t r o 40 / 41 p u b l i c S t r i n g g e t X c e n t r o ( ) { 42 r e t u r n x c e n t r o ; 43 } 44 45 / 46 Set t h e v a l u e o f x c e n t r o 47 48 @param x c e n t r o new v a l u e o f x c e n t r o 49 / 50 p u b l i c void s e t X c e n t r o ( S t r i n g x c e n t r o ) { 51 t h i s. x c e n t r o = x c e n t r o ; 52 } 53 54 p r i v a t e S t r i n g Ycentro = " 100 " ; 55 56 /

50 2. APPLET 57 Get t h e v a l u e o f Ycentro 58 59 @ r e t u r n t h e v a l u e o f Ycentro 60 / 61 p u b l i c S t r i n g g e t Y c e n t r o ( ) { 62 r e t u r n Ycentro ; 63 } 64 65 / 66 Set t h e v a l u e o f Ycentro 67 68 @param Ycentro new v a l u e o f Ycentro 69 / 70 p u b l i c void s e t Y c e n t r o ( S t r i n g Ycentro ) { 71 t h i s. Ycentro = Ycentro ; 72 } 73 74 p r i v a t e S t r i n g Raggio = "50" ; 75 76 / 77 Get t h e v a l u e o f Raggio 78 79 @ r e t u r n t h e v a l u e o f Raggio 80 / 81 p u b l i c S t r i n g g e t R a g g i o ( ) { 82 r e t u r n Raggio ; 83 } 84 85 / 86 Set t h e v a l u e o f Raggio 87 88 @param Raggio new v a l u e o f Raggio 89 / 90 p u b l i c void s e t R a g g i o ( S t r i n g Raggio ) { 91 t h i s. Raggio = Raggio ; 92 } 93 94 95 96 }

2.1. INTRODUZIONE AGLI APPLET 51 Cominciamo ad analizzare il listato 2.5 nella pagina 49, tralasciando i commenti alla riga 6 incontriamo: import java.applet.applet; con questa istruzione importiamo, cioè possiamo usare, la classe Applet, la quale si trova nel sotto package applet del package java. I package sono delle cartelle gestite automaticamente dalla macchina virtuale di Java. Analogo significato ha la riga successiva. I commenti del tipo /** * * @author Giovanni Torrero */ servono al programma Javadoc per generare la documentazione del codice scritto. Arriviamo alla riga public class SempliceApplet extends Applet { public significa che tutte le proprietà e metodi pubblici 2 della classe sono accessibili dal resto del progetto oppure in eventuali progetti che importassero questa classe. class è la parola chiave da usare tutte le volte che si dichiara una classe, SempliceApplet è il nome della classe, extends Applet significa che la nostra classe estende la classe Applet che abbiamo precedentemente importato, è questo il modo con cui Java implementa l ereditarietà. Una classe può estendere una sola altra classe, non è ammessa l ereditarietà multipla. Il successivo metodo init è prodotto automaticamente da NetBeans e per ora lo lasciamo vuoto. Arriviamo così all importantissimo metodo @Override public void paint(graphics g) { super.paint(g); Integer xc = new Integer(this.getXcentro()); Integer yc = new Integer(this.getYcentro()); Integer r = new Integer(this.getRaggio()); g.drawoval(xc-r, yc-r, 2*r, 2*r); 2 I metodi e le proprietà pubbliche sono quelle che sono state dichiarate usando il modificatore di accesso public

52 2. APPLET } Paint è un metodo ereditato dalla classe Applet che qui abbiamo riscritto, riscrivere un metodo della super-classe significa farne l override, ogni i- stanza (oggetto) della nuova classe richiamerà il metodo riscritto, mentre una istanza della super-classe richiamerà il metodo non riscritto. NetBeans fa automaticamente l override dei metodi della super classe basta scegliere nella figura 2.1.12 nella pagina 48 Override Method anziché Add Property. Nelle righe successive si procede all incapsulamento delle tre proprietà che rappresentano i dati della classe, le tre proprietà vengono dichiarate con il modificatore di accesso private, che limita l accesso a queste proprietà soltanto dall interno della classe 3 vengono poi forniti due metodi pubblici uno per accedere al valore della proprietà e l altro per modificare tale valore. Bisogna poi scrivere la pagina Web che fornisce l interfaccia per immettere i tre dati, coordinate del centro e raggio, nell applet. Per costruire questa pagina si può usare NetBeans scegliendo: File -> New File -> Other -> HTML File Il listato è il risultato finale riguardante la pagina Web che ospita l applet Listato 2.6. File PaginaWeb.html 1 <! 2 To change t h i s template, choose Tools Templates 3 and open t h e t e m p l a t e i n t h e e d i t o r. 4 > 5 <!DOCTYPE HTML PUBLIC " //W3C//DTD HTML 4. 0 1 T r a n s i t i o n a l //EN"> 6 <html> 7 <head> 8 < t i t l e></ t i t l e> 9 <meta http e q u i v=" Content Type" content=" t e x t / html ; c h a r s e t=utf 8"> 10 <s c r i p t l a n g u a g e=" J a v a S c r i p t "> 11 f u n c t i o n p r e p a r a p p l e t ( ) { 12 document. aa. s e t R a g g i o ( forma. r a g g i o. v a l u e ) 13 document. aa. s e t X c e n t r o ( forma. x c e n t r o. v a l u e ) 14 document. aa. s e t Y c e n t r o ( forma. y c e n t r o. v a l u e ) 15 document. aa. r e p a i n t ( ) 16 } 17 </ s c r i p t> 18 </ head> 19 <body> 20 <h3>a p p l e t</h3> 21 <br> 22 <form name=" forma "> 23 Raggio... <i n p u t type=" t e x t " name=" r a g g i o " v a l u e=" 100 " s i z e="10" /> <br> 24 X c e n t r o <i n p u t type=" t e x t " name=" x c e n t r o " v a l u e=" 150 " s i z e="10" /><br> 25 Y c e n t r o <i n p u t type=" t e x t " name=" y c e n t r o " v a l u e=" 100 " s i z e="10" /> 26 <i n p u t type=" b u t t o n " v a l u e=" d i s e g n a " name=" d i s " o n c l i c k=" p r e p a r a p p l e t ( ) " /> 3 Cioè soltanto dal codice compreso tra le due parentesi graffe che racchiudono il corpo della classe.

2.1. INTRODUZIONE AGLI APPLET 53 27 </ form> 28 <br> 29 30 <a p p l e t name=" aa " width=" 300 " h e i g h t=" 300 "> 31 <param name=" j n l p _ h r e f " v a l u e=" l a u n c h. j n l p "/> 32 </ a p p l e t> 33 </ body> 34 </ html>

54 2. APPLET Per scrivere il listato 2.6 nella pagina 52 bisogna avere una discreta conoscenza di HTML e Java Script, innanzitutto bisogna copiare dal file launch.html 2.1 nella pagina 41 le tre righe 11,12,13 e aggiungerle alla pagina generata automaticamente da NetBeans, nella stessa pagina inseriamo un form mettendoci dentro tre campi di testo e un bottone, codice compreso tra la riga 22 e la riga 27, infine gestiamo la pressione del bottone con la funzione Java Script preparapplet().della funzione preparapplet() analizziamo soltanto la riga 12 e la riga 15. La riga 12 document.aa.setraggio(forma.raggio.value) richiama l oggetto document che è la pagina web attuale, contenuto in document vi è l oggetto aa che è il nome che abbiamo dato al nostro applet, dell applet richiamiamo il metodo setraggio passandogli come parametro forma.raggio.value, che è il valore della casella di testo raggio contenuta nel form forma. Nella riga 15 document.aa.repaint() viene richiamato il metodo repaint dell applet aa contenuto in document, repaint ripulisce l area dell applet e poi chiama paint che la ridisegna.

Indice analitico default, 30 import, 51 incapsulamento, 29 JavaScript, 46 macchina virtuale, 51 metodi, 21 metodi di accesso, 46 metodi ereditati, 47 metodo, 29 modificatore di accesso, 51, 52 new, 29 package, 51 proprietà, 21, 29 proprietà private, 46 protected, 30 pubblic, 30 sottopackage, 51 55

Bibliografia [1] Claudio De-Sio-Cesari. Manuale di Java 6. HOEPLI, Via Hoepli 5, 20121 Milano (Italy), 2006. 57