29/10/2004Laboratorio di Programmazione - Luca Tesei1 Metodi e variabili istanza Definizione e chiamata di metodi Uso delle variabili istanza Documentazione.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Programmazione in Java
Classi ed Oggetti in JAVA
Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
If a cascata, switch, operatori logici
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Progettazione Fase di progettazione di unapplicazione Fase di implementazione.
Linguaggi Regolari e Linguaggi Liberi
12/11/2004Laboratorio di Programmazione - Luca Tesei1 Caratteri – Input da Console Il tipo char Input dallo standard input.
26/10/2004Laboratorio di Programmazione - Luca Tesei1 Variabili e Oggetti Lo spazio di memoria di Java Le API di Java.
3/12/2004Laboratorio di Programmazione - Luca Tesei1 Sequenze di lunghezza variabile ArrayList Operazioni Ricerche.
5/11/2004Laboratorio di Programmazione - Luca Tesei1 Esercizi Su Progettazione e Implementazione di classi.
9/11/2004Laboratorio di Programmazione - Luca Tesei1 Tipi numerici di base - Costanti Interi e decimali Definizione di costanti.
22/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei1 Laboratorio – Primo Impatto Scrivere un semplice programma I primi concetti.
Programmazione e Laboratorio di Programmazione – Luca Tesei1 La Programmazione Cosè la programmazione? Concetti preliminari.
29/11/2004Laboratorio di Programmazione - Luca Tesei1 Ancora sulla progettazione/Pacchetti Concetti di coesione/accoppiamento/coerenza Uso dei package.
26/11/2004Laboratorio di Programmazione - Luca Tesei1 Input/Output Redirecting, scomposizione dellinput, uso di file.
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Punto della situazione Da dove veniamo, dove andiamo.
1 Semantica Operazionale di un frammento di Java: lo stato.
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Fondamenti di Informatica
9/12/2004Laboratorio di Programmazione - Luca Tesei1 Ereditarietà
Funzioni definite dall’utente
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Soluzione Esercizio - Classe Vettore
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Programmazione Corso di laurea in Informatica
Approfondimento delle classi
Programmazione con Interfacce
Capitolo 3 Realizzare classi
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Java base IV: Java e la programmazione O.O.
IL CONCETTO DI PACKAGE Una applicazione è spesso composta di molte classi (eventualmente correlate) Un package è un gruppo di classi che costi- tuiscono.
Programmazione in Java
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Componenti fondamentali di un programma Java
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
11/11/2004Laboratorio di Programmazione - Luca Tesei1 Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di.
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Le variabili in Java Nella programmazione tradizionale, una variabile è una porzione di memoria in cui è immagazzinato un certo tipo di dato. Per esempio.
15/11/2004Laboratorio di Programmazione - Luca Tesei1 Costrutto condizionale Scelte, blocchi.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Una "vera" classe.. ..un esempio pratico: la calcolatrice
Programmazione ad oggetti
Introduzione a Javascript
30/11/2004Laboratorio di Programmazione - Luca Tesei1 Interfacce e Polimorfismo.
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Lezione IX Lu 10-Ott Convertire numeri in stringhe  Si puo’ usare l’operatore di concatenazione; funziona anche con i numeri:  In alternativa.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Ripasso su Java. Introduzione Per risolvere problemi complessi, i linguaggi di programmazione forniscono costrutti per realizzare nuove funzioni che trasformino.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Classi ed Oggetti in Java (Cenni). Richiami Cenni sull’ Implementazione, Macchine Astratte, Compilatore, Interprete Ruolo delle Classi in Java Oggetti.
Introduzione a Java. Java Linguaggio Object-Oriented La maggior parte dei dati manipolati dai programmi e’ contenuta in oggetti La principale forma di.
LIP: 15 Marzo 2005 Vettori di interi. Esercizio proposto Definire una classe VectorInt i cui oggetti sono vettori omogenei di interi ordinati in modo.
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
Fondamenti di informatica T-A Esercitazione 3 : Classi, metodi, visibilità, metodi statici AA 2012/2013 Tutor : Domenico Di Carlo.
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
Transcript della presentazione:

29/10/2004Laboratorio di Programmazione - Luca Tesei1 Metodi e variabili istanza Definizione e chiamata di metodi Uso delle variabili istanza Documentazione del codice

29/10/2004Laboratorio di Programmazione - Luca Tesei2 Definiamo la prima classe vera È una classe che si occupa di salutare, per ora solo World Per gli oggetti di questa classe è definito un metodo sayHello public class Greeter { public String sayHello() { String message = Hello, World!; return message; }

29/10/2004Laboratorio di Programmazione - Luca Tesei3 Definizione di un metodo SpecificatoreDiAccesso TipoRestituito nomeMetodo ( lista_parametri) { corpo } Specificatore di Accesso: public, private, protected TipoRestituito: tipo base o nome di classe nomeMetodo: inizia per minuscola Lista_parametri: coppie Tipo nome separate da virgola

29/10/2004Laboratorio di Programmazione - Luca Tesei4 Il corpo del metodo Il corpo del metodo contiene le istruzioni necessarie per lesecuzione del compito dello stesso Un metodo finisce la sua attività restituendo al suo chiamante un valore del Tipo specificato prima del suo nome nella sua definizione La parola chiave per terminare è return seguita da unespressione il cui valore è del tipo da restituire

29/10/2004Laboratorio di Programmazione - Luca Tesei5 Tipo void In alcuni casi un metodo può semplicemente compiere certe operazioni senza per questo dover ritornare un valore Per questi metodi si può usare il tipo speciale void che significa nessun tipo Per ritornare, in questo caso, basta inserire solo return; oppure niente: il metodo termina alla conclusione delle operazioni del blocco principale (le { } che racchiudono il suo corpo)

29/10/2004Laboratorio di Programmazione - Luca Tesei6 Collaudare una classe La classe Greeter che abbiamo visto non è dotata di un metodo main È una classe progettata per una certa funzione (salutare) ed esiste tranquillamente senza la presenza di nessun main Questa è una situazione tipica per un linguaggio orientato agli oggetti come Java Per collaudare una classe possiamo decidere di usare Bluej o di scrivere una classe test

29/10/2004Laboratorio di Programmazione - Luca Tesei7 Classe test Viene creata esclusivamente per contenere un main che crea/utilizza/testa/collauda i metodi di una o più classi: public class GreeterTest { public static void main(String [] args) { Greeter worldGreeter = new Greeter(); System.out.println(worldGreeter.sayHello()); }

29/10/2004Laboratorio di Programmazione - Luca Tesei8 Esercizi Provare a collaudare la classe con Bluej Provare a vedere cosa succede se i file GreeterTest.java e Greeter.java sono in directory diverse o nella stessa directory Provare a compilare dalla linea di comando solo GreeterTest.java Si verifichi che il compilatore compila automaticamente anche tutte le classi usate da quella che sta compilando, se le trova

29/10/2004Laboratorio di Programmazione - Luca Tesei9 Nota sulla compilazione/esecuzione da console Per compilare un file.java occorre trovarsi nella directory in cui si trova il file Lanciare C:\Java>javac NomeClasse.java Possibile problema: –javac non viene trovato Possibili soluzioni: –inserire nella variabile di ambiente PATH la directory in cui è installata la jdk con il suffisso \bin –Esplicitare il nome completo di path del file javac.exe: C:\Java> C:\jdk.1.4.1_01\bin\javac NomeClasse.java

29/10/2004Laboratorio di Programmazione - Luca Tesei10 Nota sulla compilazione/esecuzione da console Possibile problema: –La classe che si sta compilando/eseguendo non viene trovata Possibile soluzione: –Inserire nella linea di comando la seguente opzione: C:\Java> java –cp. NomeClasse Oppure - C:\Java> javac –cp. NomeClasse.java

29/10/2004Laboratorio di Programmazione - Luca Tesei11 Classi che si usano Quando allinterno di una classe A ne viene riferita unaltra, B, in un qualunque contesto (tipo di ritorno, dichiarazione di variabile riferimento,...) si dice che la classe A usa B In genere A e B sono definite in file.java separati Il compilatore, nel compilare A, deve conoscere B.class (o B.java, da cui ricava B.class) Stessa cosa vale per la JVM in fase di esecuzione Ovviamente due classi possono usarsi a vicenda La relazione usa è la freccia tratteggiata in Bluej

29/10/2004Laboratorio di Programmazione - Luca Tesei12 Packages Le classi dei pacchetti java.lang e java.io e quelle importate con import sono rintracciate dal compilatore e/o dalla JVM tramite il classpath (nella variabile di ambiente o nellopzione specificata sulla riga di comando [-cp lista_di_cartelle]) Esiste comunque sempre, implicitamente, un package senza nome che corrisponde a tutte le classi presenti (file.java o.class) nella cartella corrente di lavoro

29/10/2004Laboratorio di Programmazione - Luca Tesei13 Packages In conclusione: sia in fase di compilazione che in fase di esecuzione le classi che si usano devono essere: –Nello stesso package (vero e proprio o quello senza nome corrispondente alla cartella di lavoro) oppure –In package diversi, ma che vengono importati (nel file.java della classe che usa deve essere importato il package della classe usata oppure –Nei package importati implicitamente Se ci sono più classi che si usano conviene compilarle insieme: C:\Java> javac *.java

29/10/2004Laboratorio di Programmazione - Luca Tesei14 Miglioriamo il Greeter Gli oggetti della classe Greeter che possiamo creare fanno tutti la stessa cosa: stampare, tramite il metodo sayHello il saluto Hello, World! public class GreeterTest { public static void main(String [] args) { Greeter worldGreeter = new Greeter(); Greeter anotherGreeter = new Greeter(); System.out.println(worldGreeter.sayHello()); // Stampano entrambi la stessa stringa }

29/10/2004Laboratorio di Programmazione - Luca Tesei15 La situazione al momento della stampa anotherGreeter worldGreeter Greeter Sono due oggetti diversi, senza variabili istanza perché la classe non ne definisce. Su ognuno può essere invocato il metodo sayHello ed in entrambi i casi il risultato è lo stesso.

29/10/2004Laboratorio di Programmazione - Luca Tesei16 Variabili istanza Miglioriamo la classe Greeter prevedendo che ogni oggetto abbia un particolare nome che viene salutato Ogni oggetto deve avere quindi la possibilità di memorizzare da qualche parte il suo nome da salutare È proprio questo il ruolo delle variabili istanza: dotare ogni oggetto della classe di un suo proprio stato

29/10/2004Laboratorio di Programmazione - Luca Tesei17 Dichiarare variabili istanza Allinterno del blocco principale della definizione di una classe in qualunque posizione (ma preferibilmente o tutte prima dei metodi o tutte dopo) SpecificatoreDiAccesso Tipo nomeVariabileIstanza ; È buona norma dichiarare le variabili istanza con lo specificatore private private impedisce a qualunque metodo di qualunque classe diversa da quella che si sta definendo di accedere alla variabile istanza

29/10/2004Laboratorio di Programmazione - Luca Tesei18 Incapsulamento Dichiarando le variabili istanza tutte private lunico modo per accedervi è quello di chiamare i metodi della classe La lettura e la modifica dello stato di ogni oggetto è quindi soggetta alle regole imposte da questi metodi Questo processo di mascheramento dello stato si chiama incapsulamento È molto utile nelle situazioni in cui è cruciale la sicurezza dello stato e il mantenimento della sua consistenza

29/10/2004Laboratorio di Programmazione - Luca Tesei19 Miglioramento di Greeter Dotiamo gli oggetti della classe Greeter di una variabile istanza di tipo String che conterrà il nome da salutare: public class Greeter { private String name; //Variabile Istanza public String sayHello() { String message = Hello, + name + !; return message; } Il + è loperatore di concatenazione tra stringhe

29/10/2004Laboratorio di Programmazione - Luca Tesei20 Variabili private Dato che la variabile istanza name è stata dichiarata private, solo i metodi della classe Greeter possono usarla: public class GreeterTest { public static void main(String [] args) { Greeter worldGreeter = new Greeter(); System.out.println(worldGreeter.name); } Errore

29/10/2004Laboratorio di Programmazione - Luca Tesei21 Costruttore Alla creazione di ogni nuovo oggetto della classe Greeter così specificata è bene che sia specificato il nome Definiamo un costruttore apposito che si occupa di assegnare la variabile istanza al momento della creazione delloggetto Definiamo anche un costruttore di default che, in mancanza di un nome fornito saluta Il mondo intero, come la versione precedente

29/10/2004Laboratorio di Programmazione - Luca Tesei22 Nuova Greeter con costruttori public class NameGreeter { private String name; // Il nome da salutare public NameGreeter() { name = "World"; } public NameGreeter(String aname) { name = aname; } public String sayHello() { String message = "Hello, " + name + "!"; return message; } Costruttore di default ridefinito (si può sempre ridefinire quello che assegna i valori di default). Costruttore con parametro nome

29/10/2004Laboratorio di Programmazione - Luca Tesei23 Collaudo public class NameGreeterTest { public static void main(String argv[]) { NameGreeter worldGreeter = new NameGreeter(); NameGreeter lucaGreeter = new NameGreeter("Luca"); System.out.println( worldGreeter.sayHello()); System.out.println(lucaGreeter.sayHello()); } Stampa: Hello, World! Hello, Luca!

29/10/2004Laboratorio di Programmazione - Luca Tesei24 Stato ai vari punti del programma public class NameGreeterTest { public static void main(String argv[]) { NameGreeter worldGreeter = new NameGreeter(); NameGreeter lucaGreeter = new NameGreeter("Luca"); System.out.println( worldGreeter.sayHello()); System.out.println(lucaGreeter.sayHello()); }

29/10/2004Laboratorio di Programmazione - Luca Tesei25 Stato ai vari punti del programma worldGreeter NameGreeter name String … World … Attivazione principale, frame principale

29/10/2004Laboratorio di Programmazione - Luca Tesei26 Stato ai vari punti del programma public class NameGreeterTest { public static void main(String argv[]) { NameGreeter worldGreeter = new NameGreeter(); NameGreeter lucaGreeter = new NameGreeter("Luca"); System.out.println( worldGreeter.sayHello()); System.out.println(lucaGreeter.sayHello()); }

29/10/2004Laboratorio di Programmazione - Luca Tesei27 Stato ai vari punti del programma worldGreeter NameGreeter name String World … Attivazione principale, frame principale lucaGreeter NameGreeter name String Luca …

29/10/2004Laboratorio di Programmazione - Luca Tesei28 Stato ai vari punti del programma public class NameGreeterTest { public static void main(String argv[]) { NameGreeter worldGreeter = new NameGreeter(); NameGreeter lucaGreeter = new NameGreeter("Luca"); System.out.println( worldGreeter.sayHello()); System.out.println(lucaGreeter.sayHello()); }

29/10/2004Laboratorio di Programmazione - Luca Tesei29 Stato ai vari punti del programma public String sayHello() { String message = "Hello, " + name + "!"; return message; } Il metodo sayHello è invocato sulloggetto riferito/puntato da worldGreeter Viene creata unattivazione nuova per eseguire il metodo Il frame principale della nuova attivazione contiene automaticamente: –un riferimento di nome this che riferisce loggetto su cui è stato invocato il metodo –I parametri del metodo con i valori che sono stati passati

29/10/2004Laboratorio di Programmazione - Luca Tesei30 Stato ai vari punti del programma worldGreeter NameGreeter name String World … Attivazione del metodo sayHello, frame principale lucaGreeter NameGreeter name String Luca … this message String Hello, World! …

29/10/2004Laboratorio di Programmazione - Luca Tesei31 Stato ai vari punti del programma public class NameGreeterTest { public static void main(String argv[]) { NameGreeter worldGreeter = new NameGreeter(); NameGreeter lucaGreeter = new NameGreeter("Luca"); System.out.println( worldGreeter.sayHello()); System.out.println(lucaGreeter.sayHello()); }

29/10/2004Laboratorio di Programmazione - Luca Tesei32 Stato ai vari punti del programma worldGreeter NameGreeter name String World … Attivazione principale, frame principale lucaGreeter NameGreeter name String Luca …

29/10/2004Laboratorio di Programmazione - Luca Tesei33 Chiamata dei metodi Viene creata una nuova attivazione: tutte le variabili di frame visibili immediatamente prima della chiamata diventano invisibili/congelate (tra diverse attivazioni non cè visibilità) Nel primo frame della nuova attivazione vengono inseriti: –Riferimento this –Parametri del metodo: si usano i nomi dei parametri dati nella definizione come variabili di frame a cui è stato associato il valore passato

29/10/2004Laboratorio di Programmazione - Luca Tesei34 Chiamata dei metodi Lo heap non subisce modifiche, ma tutti gli oggetti riferiti solo da variabili di frame che si trovano in altre attivazioni sono momentaneamente irraggiungibili Durante lesecuzione del metodo i parametri sono vere e proprie variabili di frame e possono quindi essere anche assegnate (passaggio dei parametri per valore)

29/10/2004Laboratorio di Programmazione - Luca Tesei35 Abbreviazioni public String sayHello() { String message = "Hello, " + name + "!"; return message; } Lidentificatore name dovrebbe essere scritto come this.name poiché si deve riferire alla variabile istanza Tuttavia, quando non ci sono conflitti sui nomi (uno dei parametri del metodo, o una variabile in esso dichiarata, potrebbe avere lo stesso nome di una variabile istanza) il this si può omettere

29/10/2004Laboratorio di Programmazione - Luca Tesei36 Conflitto sui nomi public String sayHello() { String name = "Hello, " + this.name + "!"; return name; } Siamo costretti a specificare this.name per indicare la variabile istanza name delloggetto su cui il metodo è stato invocato. Il nome name da solo rappresenta la variabile di frame

29/10/2004Laboratorio di Programmazione - Luca Tesei37 Stato ai vari punti del programma worldGreeter NameGreeter name String World … Attivazione del metodo sayHello, frame principale lucaGreeter NameGreeter name String Luca … this name String Hello, World! … this.name Variabile name di frame dichiarata nel metodo

29/10/2004Laboratorio di Programmazione - Luca Tesei38 Un nuovo metodo Aggiungiamo alla classe NameGreeter unulteriore funzionalità: Un metodo setName che prende come parametro una stringa che assegna alla variabile istanza name In questo modo possiamo cambiare tutte le volte che vogliamo il nome che un oggetto della classe NameGreeter saluta

29/10/2004Laboratorio di Programmazione - Luca Tesei39 SettableNameGreeter public class SettableNameGreeter { private String name; // Nome da salutare public SettableNameGreeter() { name = "World!"; // Nome di default } public SettableNameGreeter(String aname) { name = aname; } public String sayHello() { String message = "Hello, " + name + "!"; return message; } public void setName(String newName) { name = newName; }

29/10/2004Laboratorio di Programmazione - Luca Tesei40 SettableNameGreeter Si noti che il metodo setName riduce lincapsulamento della variabile privata name Siccome è un metodo pubblico chiunque può invocarlo e cambiare il valore della variabile istanza privata name È una scelta di progetto quella di fornire questa possibilità oppure no In genere, insieme a un metodo set è accoppiato il corrispondente metodo get che serve a leggere il valore di una variabile privata: public String getName() { return name; }

29/10/2004Laboratorio di Programmazione - Luca Tesei41 Collaudo public class SettableNameGreeterTest { public static void main(String argv[]) { SettableNameGreeter myGreeter = new SettableNameGreeter("Pippo"); // Stampa "Hello, Pippo!" System.out.println(myGreeter.sayHello()); myGreeter.setName("Pluto"); // Stampa "Hello, Pluto!" System.out.println(myGreeter.sayHello()); }

29/10/2004Laboratorio di Programmazione - Luca Tesei42 Un conflitto di nome con il parametro... public void setName (String name) { this.name = name; }... Alla chiamata del metodo il parametro diventa una variabile di frame di nome name e il nome name si riferisce ad essa Per indicare la variabile istanza bisogna utilizzare il riferimento this

29/10/2004Laboratorio di Programmazione - Luca Tesei43 Documentare linterfaccia pubblica Commentare il codice è sempre consigliabile Ma nel caso dellinterfaccia pubblica di una classe la documentazione è dobbligo! Con unadeguata documentazione la classe può venire usata da chiunque, anche se non ne conosce limplementazione (è quello che facciamo sempre quando consultiamo le API) La jdk ha un tool, javadoc, che genera automaticamente le API

29/10/2004Laboratorio di Programmazione - Luca Tesei44 Javadoc Inseriamo dei commenti nel codice con una determinata struttura Eseguiamo javadoc sui file sorgenti: C:\Java> javadoc *.java Otteniamo una serie di pagine html, nello stesso stile delle API, che documenta le nostre classi

29/10/2004Laboratorio di Programmazione - Luca Tesei45 Formato dei commenti per javadoc Commento delle classi pubbliche –Va inserito prima della classe –/** Spiegazione di cosa fa la Nome-autore... Altri */ Commento delle variabili istanza pubbliche –Va inserito prima della definizione –/** Spiegazione di cosa rappresenta la variabile istanza */

29/10/2004Laboratorio di Programmazione - Luca Tesei46 Formato dei commenti per javadoc Commento dei metodi pubblici –Va inserito prima della definizione del metodo –/** Spiegazione di cosa fa il nome-parametro1 spiegazione di cosa rappresenta il nome-parametro2 spiegazione di cosa rappresenta il spiegazione di cosa ritorna il metodo */

29/10/2004Laboratorio di Programmazione - Luca Tesei47 Esercizio Provare ad eseguire javadoc e ad ottenere la documentazione html per la classe vista

29/10/2004Laboratorio di Programmazione - Luca Tesei48 Esercizio – Bank Account Data la seguente interfaccia pubblica di classe: – Implementarla (inserire variabili istanza private, metodi di comodo, decidere come effettuare i calcoli) – Collaudarla (Scrivere una classe test per provare tutte le funzionalità pubbliche) Lapplicazione tratta di conti bancari Deve permettere la creazione di conti, il deposito, il prelievo e la visualizzazione del saldo

29/10/2004Laboratorio di Programmazione - Luca Tesei49 Esercizio – Bank Account /** Un conto bancario ha un saldo che può essere modificato da depositi e prelievi */ public class BankAccount { /** Costruisce un conto bancario con saldo uguale a zero */ public BankAccount() { } (Allinterno dei commenti si può scrivere html)

29/10/2004Laboratorio di Programmazione - Luca Tesei50 Esercizio – Bank Account /** Costruisce un conto bancario con un saldo initialBalance il saldo iniziale */ public BankAccount(double initialBalance) { } /** Versa denaro nel conto amount l'importo da versare */ public void deposit(double amount) { }

29/10/2004Laboratorio di Programmazione - Luca Tesei51 Esercizio – Bank Account /** Preleva denaro dal conto amount l'importo da prelevare */ public void withdraw(double amount) { } /** Ispeziona il valore del saldo attuale del conto il saldo attuale */ public double getBalance() { }

29/10/2004Laboratorio di Programmazione - Luca Tesei52 Documentazione interfaccia Si noti che questa è la definizione dellinterfaccia pubblica della classe BankAccount Manca del tutto limplementazione È possibile comunque invocare javadoc anche solo su questo file e ottenere la documentazione Esercizio: farlo