Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoRegina Coco Modificato 9 anni fa
1
Fondamenti di informatica T-A Esercitazione 3 : Classi, metodi, visibilità, metodi statici AA 2012/2013 Tutor : Domenico Di Carlo
2
Piccolo ripasso sulle classi Java è un linguaggio totalmente ad oggetti Si basa strettamente sul concetto di classe e di oggetto Un programma è un insieme di classi. Anche il main è in una classe! Un classe java è un'entità capace di contenere : Dati Metodi che operano su di essi Cioè la classe è un oggetto che funge da "stampo" per creare oggetti a sua immagine e somiglianza. Fondamenti di informatica A-K - Domenico Di Carlo
3
Piccolo ripasso sugli oggetti Un oggetto altro non è se non l'istanza di una classe ! Definire la classe che modella il nuovo tipo di dato Definire un riferimento (variabile), il cui tipo è il nome della classe Crere dinamicamente l'oggetto tramite l'operatore new Invocare metodi offerti dall'istanza tramite la notazione puntata del tipo riferimento.nomeMetodo(parametri) Fondamenti di informatica A-K - Domenico Di Carlo
4
Esercizio Creare la classe "MiaVariabile" dotata di ▫ un campo intero chiamato "valore" ▫ Un metodo getValore() che restituisca il valore il "valore" ▫ Un metodo setValore(int) che imposti il valore di "valore" ▫ Un metodo resetValore() che azzeri il valore di "valore" Creare la classe "MiaClasse" che ▫ Definisca il metodo main ▫ Crei un'istanza della classe MyVariable ▫ Chiami il metodo resetValore() sull'istanza ▫ Stampi a video il valore attuale di "valore" ▫ Chiami il metodo setValore(8) sull'istanza ▫ Stampi a video il valore utilizzando il metodo getValore() Fondamenti di informatica A-K - Domenico Di Carlo
5
Soluzione 1/2 La classe "MiaVariabile" public class MiaVariable { private int valore; public int getValore() { return valore; } public void setValore(int newValore) { valore = newValore; } public void resetValore() { valore = 0; } Fondamenti di informatica A-K - Domenico Di Carlo
6
Soluzione 2/2 La classe "MiaClasse" public class MiaClasse{ public static void main(String args[]) { MiaVariable variabile = new MiaVariable(); variabile.resetValore(); System.out.println("la variabile valore ora vale : " + variabile.getValore()); variabile.setValore(8); System.out.println("la variabile valore ora vale : " + variabile.getValore()); } Fondamenti di informatica A-K - Domenico Di Carlo
7
Visibilità Il metodo resetValue() che abbiamo inserito nella classe MiaVariabile era necesario ? SI/NO ? Perché ? L'attributo "valore" contenuto nella classe "MiaVariabile" è privato. Perché è privato ? I metodi sono pubblici, perché ? Prova ad accedere al campo "valore" tramite la notazione puntata. Il compilatore è felice di questo ? Perché ? Prova a modificare la visibilità della varaibile "valore" da privata in pubblica. Ora il metodo setValue() è ancora necessario ? Perché ? Prova ad accedere al campo adesso Fondamenti di informatica A-K - Domenico Di Carlo
8
Contatore Vogliamo creare un oggetto che faccia una cosa semplicissima, contare ! La classe, che chiameremo Contatore, è definita come segue: ▫ Un campo intero che rappresenta il valore del contatore ▫ Un metodo incrementa() che incrementa di una unità il valore ▫ Un metodo reset() che azzera il contatore ▫ Un metodo GetValore() che ritorna il valore del contatore Niente soluzioni, provateci da soli, è molto simile all'esempio appena visto ! Fondamenti di informatica A-K - Domenico Di Carlo
9
Documentazione Un buon programma deve essere ben documentato, ma spesso ciò non viene fatto. Java fornisce uno strumento automatico per produrla a partire dai commenti scritti dal programmatore nel programma stesso. /** * Applicazione Java da linea di comando * Stampa la classica frase di benvenuto * @author Domenico Di Carlo * @version 1.0, 11/03/2013 */ public class Esempio { public static void main(String args[]) { System.out.println("Ciao Mondo!"); } Fondamenti di informatica A-K - Domenico Di Carlo
10
Documentazione Per produrre la relativa documentazione, si invoca il comando ▫ javadoc fornendo in ingresso i file sorgenti (.java): ▫ javadoc Esempio0.java Fondamenti di informatica A-K - Domenico Di Carlo
11
Static Finora abbiamo visto che, per accedere agli attributi o alle variabili interne di una classe, bisogna prima istanziare l'oggetto corrispondente. Ma non è sempre necessario. A volte si ha la necessità che un metodo non abbia alcuna relazione con l'oggetto, qualunque sia il suo tipo. Pensate ad esempio ad un metodo che calcoli la media, oppure ad un metodo che converta le lettere mauiscole in minuscole. Questi tipi di metodi hanno un comportamento indipendente dall'istanza specifica ! Può quindi essere conveniente definirli staticamente. E'importante ricordare che i dati appartenenti ad una classe statica sono unici all'interno della JVM e si riferiscono alla classe. I dati comuni invece, non statici, appartengono all'istanza, quindi all'oggetto ! Fondamenti di informatica A-K - Domenico Di Carlo
12
Esempio public class MiaVariabile2 { private static int valore; public static int getValore() { return valore; } public static void setValore (int nuovoValore){ valore = nuovoValore; } La classe MiaVariabile2 dichiara un unico campo privato e quindi non accessibile dall’esterno. Il campo valore è associato alla classe ed è unico all’interno della JVM Anche i metodi devono essere definiti come statici per poter essere associati alla classe Invocazione di metodi statici public NomeClasse.metodo(…) Accesso a dati statici public NomeClasse.campo Fondamenti di informatica A-K - Domenico Di Carlo
13
Esercizio Provate a definire una classe Main che utilizzi la classe MiaVariabile2 appena definita senza istanziarla. Ad esempio si può provare a : ▫ Settare il valore della variabile a 3 ▫ Sommarla ad un intero inizializzato a 4 ▫ Definire un intero "somma" che contenga la somma. ▫ Stampi la somma Fondamenti di informatica A-K - Domenico Di Carlo
14
Soluzione public class Main { public static void main(String args[]) { int y = 4; MiaVariabile2.setValore(3); int risultato = MiaVariabile2.getValore() + y; System.out.println("La somma vale: "+risultato); } Fondamenti di informatica A-K - Domenico Di Carlo
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.