Fondamenti di informatica T-A Esercitazione 3 : Classi, metodi, visibilità, metodi statici AA 2012/2013 Tutor : Domenico Di Carlo.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Sottoprogrammi: funzioni e procedure
Classi ed Oggetti in JAVA
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A2 Java: le basi del linguaggio.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Le basi della programmazione a oggetti.
Oggetti Java.
Linee guida per la programmazione
Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
Commenti C#.
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
1 Semantica Operazionale di un frammento di Java: lo stato.
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
Introduzione al linguaggio C
Fondamenti di Informatica
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 1 06/06/2006UNIROMA2-ING OOP Programmazione.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) JAVA: i commenti Anno Accademico 2009/2010.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Soluzione Esercizio - Classe Vettore
Approfondimento delle 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.
LA DOCUMENTAZIONE È noto che un buon programma dovrebbe essere ben documentato.. ma lesperienza insegna che quasi mai ciò viene fatto! –non cè tempo, ci.
OGGETTI COMPOSTI Una classe può contenere riferimenti a altre classi (o anche a se stessa): public class Orologio { Counter ore, minuti; } Loggetto Orologio.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Introduzione a:. Nella prima parte di questo corso si vedranno i CONCETTI di: CLASSE (programma) METODO (Algoritmi e dati) CONCETTI CLASSICI DI PROGRAMMAZIONE.
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.
Java Contardi Carlo A.S. 2008/09.
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti dispense prof. G. Levi.
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Applet ed HTML Fondamenti di Informatica Corso D.
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
I nomi in Java F. Bombi 18 novembre novembre 2003.
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.
Una "vera" classe.. ..un esempio pratico: la calcolatrice
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Vettori, indirizzi e puntatori Finora abbiamo usato gli indirizzi nel chiamare  la funzione scanf()  le altre funzioni per riferimento Tuttavia la vera.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Programmazione in Java
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
Cose nuove di Java (prima a chiacchiera, poi formalmente)
Temp. Esercizio DataSet Generare 100 numeri interi casuali tra 1 e Visualizzare la loro media e il valore massimo. A questo scopo realizzare la.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
LIP: 15 Marzo 2005 Vettori di interi. Esercizio proposto Definire una classe VectorInt i cui oggetti sono vettori omogenei di interi ordinati in modo.
Fondamenti di informatica T-A Esercitazione 5 : Stringhe ed array AA 2012/2013 Tutor : Domenico Di Carlo.
Fondamenti di informatica T-A Esercitazione 9 : Un tema d'esame AA 2012/2013 Tutor : Domenico Di Carlo.
Fondamenti di informatica T-A Esercitazione 2 : Linguaggio Java, basi e controllo del flusso AA 2012/2013 Tutor : Domenico Di Carlo.
1 Java primo contatto Quando le classi fanno la differenza …
ESERCITAZIONE Problema Scrivere una funzione che scambi due interi non opera su oggetti  funzione statica scritta dentro a una classe contenitore.
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
Introduzione alle Classi e agli Oggetti in Java 1.
Esercizi.
Transcript della presentazione:

Fondamenti di informatica T-A Esercitazione 3 : Classi, metodi, visibilità, metodi statici AA 2012/2013 Tutor : Domenico Di Carlo

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

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

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

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

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

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

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

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 Domenico Di Carlo 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

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

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

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

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

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