Classi ed Oggetti in JAVA

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Classi ed Oggetti in JAVA"

Transcript

1 Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma SIENA Uff

2 Outlines Classi ed Oggetti: Differenza Interfaccia Variabili oggetto e riferimento agli oggetti Definire una classe La dichiarazione class Visibilità public e private Variabili membro le costanti : final Metodi i parametri espliciti ed il parametro this costruttore ed overloading: default, copia, parametri di costruzione Membri static Metodi static Variabili e costanti static Costruttori private

3 Classi ed Oggetti

4 Oggetti Come detto la gran parte dei programmi non è costituita solo da numeri o stringhe ma da dati molto più complessi con proprietà e funzioni proprie: questi dati sono rappresentati dagli oggetti Un oggetto è una entità che il programmatore può manipolare all interno del programma mediante l invocazione di metodi : Quando è invocato un metodo di un oggetto, vengono svolte all interno dell oggetto una serie di attività con lo scopo di realizzare la funzione per cui il metodo è stato implementato Oggetti differenti forniscono serie diverse di metodi

5 es. L istruzione JAVA System.out.println( Hello World!! ); chiama il metodo println dell oggetto System.out, che è fornito dalla Sun nella libreria standard del JAVA (JDK). Questo metodo stampa a video la stringa che riceve in ingresso. Tale metodo però è proprio dell oggetto System.out e se proviamo a chiamare println() su di un oggetto diverso, il compilatore ritorna errore: String.println( Hello World!! ); // chiamata non valida La classe String infatti non prevede un metodo println().

6 Classi ed oggetti Ma che differenza c è tra classe ed oggetto? Risposta: la stessa differenza che c è tra tipo di dato e dato. La classe è la descrizione astratta di un tipo di dato: Specifica cioè i metodi e le variabili che quel tipo di dato possiede L oggetto è una istanza della classe: Quando istanziamo una variabile definendola di una certa classe, noi creiamo un oggetto di quella classe rappresentato dal nome della variabile che abbiamo istanziato

7 Oggetti L istruzione JAVA System.out.println( Hello World!! ); utilizza il metodo println dell oggetto System.out. Questo oggetto è della classe PrintStream e tale classe ha una serie di metodi e variabili tra cui println(string). System.out, è a sua volta un oggetto membro della classe System. L oggetto System.out esiste poiché è istanziato automaticamente quando un programma carica la classe System. Quest ultima, come dice il nome, è una classe che descrive le proprietà di sistema ed è istanziata sempre all avvio di ogni applicazione.

8 Oggetti L oggetto di tipo String, invece, necessita di essere inizializzato: Nell esempio precedente, specificando una stringa di testo tra virgolette, viene creato un oggetto di tipo String Di questo oggetto poi possiamo utilizzare tutti i suoi metodi e tutte le sue variabili membro ES: Hello World!!.length(); /* questa chiamata di metodo è corretta e restituisce un intero che è il numero di caratteri nella stringa 13 */

9 Esempio Rectangle Esaminiamo un altra classe della libreria del Java: Rectangle Notiamo che un oggetto Rectangle non è una forma rettangolare ma un insieme di numeri che descrivono il rettangolo: Coordinate x,y del suo angolo superiore sinistro Larghezza ed altezza Rectangle int x int y int width int height

10 Esempio Rectangle Per creare un rettangolo è necessario specificare questi 4 valori: new Rectangle(5, 10, 20, 30); l operatore new crea il nuovo oggetto di tipo Rectangle assegnando ad x,y,width e height i valori 5,10,20 e 30 Rectangle int x int y int width int height Il processo di creazione di un nuovo oggetto è detto costruzione

11 Esempio Rectangle I parametri passati durante la costruzione sono detti parametri di costruzione Il fatto di necessitare di parametri di costruzione dipende dalla classe. Molte classi non richiedono alcune parametro e la loro costruzione è semplicemente: new Rectangle(); Cosa si può fare con un oggetto di tipo rectangle? Ben poco per adesso, possiamo per esempio visualizzarlo tramite il metodo println dell oggetto System.out: public class RectangleTest { public static void main(string[]args) { Ssytem.out.println(new Rectangle(5,10,20,30)); } }

12 Esempio Rectangle Questo programma stampa la riga: java.awt.rectangle[x=5,y=10,width=20,height=30] Più specificatamente, questo programma crea un oggetto di tipo Rectangle e lo passa al metodo System.out.println() che stampa alcune informazioni. Infine termina.

13 Variabili oggetto Normalmente con un oggetto dovremmo fare di più che semplicemente crearlo, stamparlo e scordarselo Per tenere traccia di un oggetto, è necessario associare l oggetto ad una variabile oggetto: Rectangle R; Come si vede la dichiarazione di una variabile oggetto di tipo Rectangle segue la regola di dichiarazione delle variabili vista in precedenza: Tipo_di_Dato nomedellavariabile; in questo caso il tipo di dato è la classe dell oggetto.

14 Variabili oggetto Nell esempio precedente abbiamo solamente dichiarato una variabile R di tipo Rectangle: L oggetto Rectangle però non è stato istanziato e la variabile, sebbene dichiarata, contiene un valore nullo (NULL) Per creare un oggetto ed associarlo ad una variabile uniamo la fase di dichiarazione e di creazione viste fino ad ora: A) Rectangle R; R=new Rectangle(5,10,20,30); B) Rectangle R = new Rectangle(5,10,20,30);

15 Variabili oggetto non inizializzate Nel primo caso la variabile è dichiarata di tipo Rectangle ma inizializzata dopo una serie di altre istruzioni. Ci si potrebbe chiedere cosa accade se si cerca di utilizzare una variabile non inizializzata? Rectangle ha il metodo translate(n,m) che muove il rettangolo di n e m punti in orizzontale e verticale rispettivamente. Supponiamo di chiamare tale metodo senza inizializzare R: Rectangle R; R.translate(15,25); Il compilatore si accorge di questo fatto e segnala la mancata inizializzazione della variabile R: "RectangleTest.java": variable R might not have been initialized at line 6, column 9

16 Esempio 02.Classi\01.Rectangle-InizializzazioneClassi

17 Riferimenti agli oggetti E fondamentale ricordarsi che la locazione di memoria non contiene l oggetto, ma un riferimento ad esso: R si riferisce all oggetto Rectangle creato con l operazione new E inoltre importante osservare che se creiamo un altra variabile di tipo Rectangle R1 e copiamo R in R1, non abbiamo due oggetti distinti, ma due riferimenti distinti allo stesso oggetto Rectangle R1=R; Quindi ogni operazione fatta su R1, influirà anche sull oggetto visto da R: R1.translate(3,4); equivale a chiamare R.translate(3,4); e viceversa

18 Riferimenti agli oggetti R Rectangle R1 int x int y int width int height Rectangle R = new Rectangle(5,10,20,30); Rectangle R1= R; R1.translate(15,25) System.out.println(R); java.awt.rectangle[x=20,y=35,width=20,height=30]

19 Definire una classe

20 Classi Come detto, con il termine di classe si intende la descrizione astratta di una classe di oggetti: Le variabili e le funzioni membro specificate nella classe sono quelle che poi potranno essere invocate utilizzando l oggetto Ma come si definisce una classe? Ogni linguaggio di programmazione fornisce i suoi costrutti per definire una classe. Nel JAVA si usa la parola riservata class : class prova { variabili membro costruttori funzioni membro }

21 Classi Una classe deve poter essere utilizzata in qualunque parte del progetto, ovvero deve essere public (pubblica): Nella dichiarazione della classe la parole public o private specificano il campo di visibilità della classe una classe public è visibile ed utilizzabile da tutti una classe private è invece utilizzabile solamente all interno del file in cui è definita. Molte volte infatti in uno stesso file possono essere definite più di una classe, l importante è che se si vuole rendere utilizzabile una di esse deve essere public ed avere il nome del file public class prova { variabili membro costruttori funzioni membro }

22 Definire una classe Quando progettiamo una classe, noi decidiamo quali metodi e quali variabili essa contiene: Le variabili e le funzioni definite in una classe saranno poi utilizzate dall esterno della classe dal programmatore (con le debite limitazioni) Questo modo di pensare al design di una classe come ad un processo di creazione di elementi visibili dal programmatore, ci porta a vedere le variabili e i metodi di una classe come una interfaccia della classe: Cioè possiamo pensare all oggetto come ad una scatola nera di cui noi vediamo solamente l interfaccia Inoltre possiamo anche non interessarci a come tale interfaccia è stata implementata

23 Progettare l interfaccia Quindi per definire una classe è opportuno prima pensare all interfaccia della classe, cioè a cosa quella classe deve mostrare al mondo esterno: Rectangle translate, rotate, ecc E possibile definire dei metodi e delle variabili di una classe non visibili all esterno e quindi utilizzabili solamente dall interno della classe: Tali elementi non faranno parte dell interfaccia della classe ma serviranno alla classe stessa per realizzare operazioni interne

24 Membri public e private Quando progettiamo una classe è necessario individuare ciò che sarà possibile utilizzare e cosa invece è solamente necessario al corretto funzionamento della classe: Nel secondo caso, diventa pericoloso permettere che altre classi possano modificare variabili o utilizzare funzioni pensate per lavorare sullo stato interno della classe stessa Esistono perciò due tipi di elementi membro di una classe: public, la cui visibilità è totale: le variabili così sono leggibili e modificabili e le funzioni sono invocabili da chiunque; private, la cui visibilità è ristretta alla classe proprietaria. T

25 Membri public e private Una volta dichiarati i membri di una classe, è possibile accedere ad essi utilizzando il carattere. : [Nome_Oggetto].[Nome_Membro] Ovviamente cercare di accedere ad un membro private da fuori della classe, il compilatore ritorna errore

26 Variabili membro

27 Dichiarare le variabili membro della classe Una volta aperta la definizione di una classe, è possibile dichiarare le variabili membro della classe Tale dichiarazione avviene con una semplice istruzione di dichiarazione di variabile: public class prova { public int a; private double b; Car auto; } In tale forma le variabili non sono inizializzate e sarà necessario farlo o nel costruttore oppure nel codice di qualche metodo, comunque prima che vengano utilizzate

28 Dichiarare le variabili membro della classe E possibile però utilizzare la forma di dichiarazione delle variabili con inizializzazione immediata: public class prova { public int x=3; private double b=2.3; } Tale inizializzazione ha il risultato di inizializzare le variabili ai valori prescelti a tempo di costruzione, ossia come se tale inizializzazione fosse fatta nel costruttore

29 Costanti Normalmente è utile definire all interno di una classe delle costanti: Es. n di desideri esprimibili con la classe lampada di Aladino, numero di porte della classe Car, ecc Una costante viene definita aggiungendo la parola riservata final alla dichiarazione della variabile: final int ndesideri=3; final int nporte=4; Il valore di una variabile definita come final non può più essere modificato

30 Costanti Ovviamente, essendo una dichiarazione di costante, la dichiarazione richiede l inizializzazione della variabile Normalmente si utilizzano nomi tutti scritti in maiuscolo per le costanti: final int NDESIDERI=3; final int NPORTE=4; Le costanti possono essere definite private o public : L accesso alle costanti è eseguito tramite il punto come un normale accesso alle variabili membro

31 Costanti Dichiarazione: private final int NPORTE=4; Visibile solamente alla classe di appartenenza Visibile da tutte le classi public final int NPORTE=4; Accesso alla variabile: final Car auto= new Car(); int y=auto.nporte; auto = new Car(); Riferimento costante, l oggetto è modificabile y memorizza il valore di NPORTE dell oggetto auto di tipo Car solo se NPORTE è dichiarato public nella classe Car Non ammessa

32 Metodi

33 Dichiarare i metodi di una classe Oltre alle variabili membro, è possibile specificare funzioni membro per una classe La dichiarazione di una funzione membro è del tutto simile ad una dichiarazione di funzione normale: public/private [tipo_di_dato_restituito] [nome_funzione]([lista_parametri]) Il JAVA prevede di implementare la classe in fase di dichiarazione quindi alla sintassi qui sopra seguirà immediatamente il blocco di implementazione: public/private [tipo_di_dato_restituito] [nome_funzione]([lista_parametri]) { Lista istruzioni; }

34 Es. public class Rectangle { /** Variabili membro : coordinate del vertice alto a sx*/ private int x; private int y; /** * Funzione membro : sposta il rect di dx e dy dx dy \ */ public void translate(int dx, int dy,car C) { x=x+dx; y=y+dy; C.color= white ; }

35 Parametri I metodi di una classe sono semplicemente normali funzioni assegnate ad una classe. Come tali, i metodi utilizzano i parametri per comunicare con l esterno Il JAVA non prevede la possibilità di dichiarare valori di default per i parametri Inoltre, dato che ogni variabile oggetto contiene i riferimenti all oggetto piuttosto che l oggetto stesso, il passaggio dei parametri sebbene in realtà sia per copia, realizza un passaggio per riferimento: infatti quello che viene copiato è il riferimento all oggetto

36 Parametri I parametri sono variabili locali alla funzione e spariscono una volta terminata l esecuzione del metodo All interno della funzione è possibile comunque modificare il contenuto delle variabili parametro, ricordando sempre che stiamo modificando un riferimento ad un oggetto

37 Variabili locali All interno di un metodo è possibile definire ed utilizzare nuove variabili: Queste variabili hanno scope locale alla funzione e spariscono una volta terminata la chiamata al metodo Il JAVA permette di dichiarare variabili locali con lo stesso nome delle variabili membro della classe: In questo caso le variabili membro della classe sono messe in ombra dalle nuove variabili, nel senso che ogni accesso è riferito alla variabile locale. L accesso alla variabile membro invece che alla variabile locale viene risolto tramite l uso del parametro implicito this

38 Parametro implicito this Dall interno di un metodo è possibile accedere implicitamente alle variabili e metodi della classe di cui fa parte la funzione stessa. Nel caso però che una variabile locale copra una variabile globale della classe, è necessario poter distinguere La risoluzione in questo caso viene fatta utilizzando il parametro implicito this In ogni funzione oltre ai parametri passati tramite prototipo, esiste sempre una variabile che fa riferimento alla classe stessa Utilizzando tale parametro è possibile disambiguare una variabile locale con lo stesso nome di una globale

39 Es. 02.Classi\03.BankAccount

40 Overloading Normalmente capita di dover dichiarare più funzioni con lo stesso nome e con la stessa funzionalità che differiscono solamente dal numero o dal tipo dei parametri in ingresso In questi casi si parla di overloading, cioè sovraccarico del metodo Il metodo giusto infatti viene risolto dal compilatore (a tempo di compilazione quindi) nel caso sia possibile farlo linking statico dalla JVM (a tempo di escuzione) nel caso non sia possibile stabilire in compilazione il tipo di oggetto (vedremo più avanti nei casi di interfaccia ed ereditarietà) linking dinamico

41 Es. 02.Classi\04.Overloading

42 Costruttore

43 Costruttore Quando un oggetto è istanziato, si dice che viene costruito Il processo di costruzione avviene nel seguente modo: Il compilatore quando trova la parola riservata new invoca automaticamente un metodo particolare dell oggetto, il costruttore Tale metodo è definito secondo alcune regole ben precise: è un membro public ha lo stesso nome della classe non restituisce alcun valore (void)

44 Es. public class Rectangle { /** Variabili membro : posizione vetice alto a sx */ private int x; private int y; /** Costruttore : inizializza il rect in (x,y)=(0,0) **/ public void Rectangle() { x=0; y=0; } /** \ * Funzione membro : sposta il rect dx e dy dx dy */ public void translate( int dx, int dy) { x=x+dx; y=y+dy; }

45 Costruttore con parametri Quando costruiamo un oggetto possiamo aver bisogno di passare dei parametri per la costruzione (parametri di costruzioni visti in precedenza): in questo caso nella definizione del costruttore è necessario specificare la lista di parametri

46 Es. public class Rectangle { /** Variabili membro : coordinate del vertice in alto a sx */ private int x; private int y; /** Costruttore : inizializza il rect in (0,0) **/ public void Rectangle() { x=0; y=0; } /** Costruttore con parametri: inizalizza il rect in (x,y) */ public void Rectangle(int x,int y) { this.x=x; this.y=y; }

47 Costruttore di default Nel caso non venga esplicitamente fornito dal programmatore, il compilatore utilizza un costruttore di default Il costruttore infatti deve esistere comunque in una classe a prescindere della esplicita volontà del progettista Il costruttore di default non ha alcun parametro di costruzione: Eventuali variabili nell oggetto non inizializzate, rimangono tali fino ad una necessaria inizializzazione esplicita successiva NB: se viene definito anche un solo costruttore, allora il costruttore di default non viene costruito.

48 Costruttore di copia Molte volte può essere necessario creare un oggetto copia di un altro oggetto della stessa classe. Questo implica definire un costruttore che inizializza l oggetto copiando lo stato dell oggetto passato come parametro costruttore di copia

49 Es. public class Rectangle { /** Variabili membro : coordinate del vertice in alto a sx */ private int x; private int y; /** Costruttore : inizializza il rect in a (0,0) **/ public void Rectangle() { x=0; y=0; } /** Costruttore con parametri: inizalizza il Rect in (x,y) */ public void Rectangle(int x, int y) { this.x=x; this.y=y; } /** Costruttore di copia: inizalizza il Rect * copiando il valore dell oggetto B */ public void Rectangle(Rectangle R1) { x=r1.x; y=r1.y; }

50 Costruttore di copia Interessante far notare come il costruttore di copia permette di effettuare il passaggio per valore di un oggetto ad una variabile: Se infatti creiamo un oggetto di tipo Rectangle R1 inizializzato in un certo modo e definiamo una variabile R2 anch essa di tipo Rectangle che prende R1, ogni operazione su R2 si riflette su R1 (e viceversa) Rectangle R1= new Rectangle(5,10,20,30); Rectangle R2=R1; R2.translate(15,25); Se però inizializziamo R2 con il costruttore di copia con R1 come parametro di costruzione otteniamo per R2 un oggetto differente ed ogni operazione su di esso non si riflette su R1 (e viceversa) Rectangle R1= new Rectangle(5,10,20,30); Rectangle R2= new Rectangle(R1); R2.translate(15,25);

51 Costruttore di copia public class Tassista { /** Variabili membro : auto */ private Car x; /** Costruttore : inizializza il tassista **/ public void Tassista() { x=new Car(); } /** Costruttore con parametri: assegna la macchina al Tassista */ public void Tassista(Car x) { this.x=x; } /** Costruttore di copia: inizializza il tassista*/ public void Tassista (Tassista T1) { x=r1.x; }

52 Costruttore di copia Attenzione: anche nel costruttore di copia, se copiamo oggetti invece che tipi di dato primitivi, avremo due oggetti distinti cha hanno come variabile membro uno stesso oggetto tassista Car T1 x tassista T2 x

53 Overloading Quando forniamo più costruttori ad una classe si parla di overloading (sovraccarico) del costruttore: Il costruttore di default è quindi sempre sovraccaricato non appena viene fornito un costruttore

54 Nuova istanza NB. I costruttori non sono normali funzioni membro della classe e non possono essere invocati esplicitamente su un oggetto esistente: Car A = new Car(); A.Car(); Errore Se vogliamo associare una nuova istanza ad una variabile oggetto è necessario riutilizzare l operatore new : Car A = new Car(); A = new Car(); La variabile oggetto cambia il suo contenuto, ossia l indirizzo di memoria riferito. In questo caso l oggetto precedente non è più riferibile (a meno che non esistano altri riferimenti attivi!)

55 Esempio 02.Classi\02.Rectangle-Riferimento_Copia

56 Esempio Progettiamo una classe BankAccount: public class BankAccount { variabili; costruttori; metodi; } Innanzitutto individuiamo l interfaccia della classe: Deposito denaro Prelievo denaro Saldo Per ora fermiamoci qui

57 Esempio La classe BankAccount necessita di una variabile membro che memorizzi lo stato del conto corrente. Supponiamo di avere un conto bancario senza tassi di interesse, date di invio resoconti ecc e di avere bisogno quindi solamente della cifra nel conto: public class BankAccount { private double balance; costruttori; metodi; } NB. La variabile membro è stata dichiarata private. Questa informazione infatti è privata della classe ed ogni accesso ad essa è permesso solamente tramite le funzioni esportate

58 Esempio Creiamo il costruttore per la classe BankAccount: In costruzione, l unica operazione richiesta è quella di inizializzare la variabile membro balance a 0. Tale operazione non richiede alcun parametro di costruzione. public class BankAccount { /** * Contenuto del conto */ private double balance; /** * Costruttore senza parametri */ public BankAccount() { balance=0; } metodi; }

59 Esempio Potrebbe essere necessario aprire un conto inserendo direttamente all apertura un po di denaro: questa affermazione si traduce con un costruttore con un parametro di costruzione. /** * Costruttore 2 initbalance il saldo iniziale */ public BankAccount(double initbalance) { balance= initbalance; }

60 Esempio Infine implementiamo le tre funzioni individuate come interfaccia per la class BankAccount Deposito: /** * Versa denaro nel conto amount importo da versare */ public void deposit(double amount) { balance= balance+amount; }

61 Esempio Prelievo: /** * Ritira denaro dal conto amount importo da versare */ public void withdraw(double amount) { balance= balance-amount; }

62 Esempio Saldo: /** * Ritorna il saldo del conto saldo attuale */ public double getbalance() { return balance; }

63 Esempio Per testare la nostra prima classe creiamo una classe di test: testbankaccount public class testbankaccount { public static void main(string[] args) { BankAccount LChecking = new BankAccount(); LChecking.deposit(2000); LChecking. withdraw(500); System.out.println(LChecking.getBalance()); } }

64 Esempio Esempio: 02.Classi\03.BankAccount

65 Metodi static

66 Metodi static Ogni volta che definiamo la funzione main, notiamo la presenza nella dichiarazione della parola static, ma cosa vuol dire? Può essere necessario definire delle funzioni membro che possano essere chiamate senza che l oggetto sia istanziato: Se voglio calcolare il logaritmo di un numero, è preferibile non dover istanziare ogni volta un oggetto di tipo logaritmo e poi chiamare la funzione calcola(double x) Le funzioni static sono funzioni che possono essere invocate senza che l oggetto sia istanziato, facendo riferimento solamente alla classe che le definisce: Es. double r=mate.log(double x);

67 Metodi static La funzione main, per definizione deve poter essere invocata quando ancora l oggetto non esiste, altrimenti l oggetto dovrebbe essere istanziato nel corpo di una qualche altra funzione main, che però affinchè sia eseguibile dovrebbe essere invocata senza dover a sua volta istanziare l oggetto altrimenti si andrebbe avanti all infinito: Ecco perché la funzione main è sempre una funzione static Da notare che una funzione static non può accedere a variabili o funzioni non static della classe, poiché al momento della sua esecuzione l oggetto non è istanziato e le variabili o funzioni non static non esistono

68 Metodi static Le funzioni static realizzano quelle che nella programmazione procedurale erano le funzioni (o procedure) globali, invocabili in qualunque parte del programma senza essere legate ad alcun oggetto Vedremo più avanti cosa significa static per una variabile membro

69 Esempio Come esempio di metodo static proviamo a creare la classe matematica: public class matematica { // calcola il fattoriale di n static public int fatt(int n) { if (n==0) return 1; else return n * matematica.fatt(n-1); } // calcola la somma dei primi n numeri interi static public int sum(int n) { return (n*(n+1))/2; } }

70 Esempio Creiamo una classe di test per matematica: matetest public class matetest { // test per le funzioni static sum e fatt public static void main(string[] args) { int x=5; System.out.println(matematica.sum(5)); System.out.println(matematica.fatt(5)); } }

71 Es Esempio 02.Classi\06.Matematica-FunzioniStatic

72 Variabili static

73 Variabili static Definire una variabile static significa fare in modo che l istanza di tale variabile sia condivisa tra tutte le istanze degli oggetti di quella classe Il che vuol dire che la prima creazione di un oggetto di quel tipo crea la variabile in questione; tutte le successive istanze di nuovi oggetti di quel tipo, non inizializzano quella variabile membro ma faranno riferimento alla variabile membro dell oggetto creato per primo Le variabili membro static realizzano in un certo modo le variabili definite globali nei linguaggi procedurali: Un uso comune è utilizzare variabili membro static per realizzare contatori di istanze di una classe

74 Inizializzazione di variabili static Le variabili static non possono però essere inizializzate all interno del costruttore: Questo perché altrimenti verrebbero comunque modificate e reinizializzate alla costruzione di ogni oggetto E necessario quindi inserire l inizializzazione direttamente nella definizione della variabile nella classe: static int count=0; Un modo poco utilizzato è quello di inserire un blocco di inizializzazione di tipo static: private static int counter; static { counter=0; }

75 Es Esempio 02.Classi\05.Triangle-VariabiliStatic

76 Costanti statiche Le costanti, viste come variabili particolari, possono essere anch esse dichiarate static Questo significa che la della costante esiste solamente una istanza per tutti gli oggetti della classe Es. static private final int NPORTE=4; static public final int NPORTE=4; Visibile solamente alla classe di appartenenza. La costante è condivisa tra tutti gli oggetti della classe Visibile da tutte le classi. La costante è condivisa tra tutti gli oggetti della classe

77 Costruttori privati Avevamo detto che i costruttori devono essere dichiarati public altrimenti non sono utilizzabili. In realtà possono anche essere dichiarati costruttori privati che possono quindi essere invocati solamente dall oggetto stesso: Così sembra una contraddizione dato che per invocare il costruttore è necessario avere l oggetto ma per avere l oggetto è necessario poter invocare il costruttore In realtà tale situazione viene risolta utilizzando un metodo static che ritorna un oggetto dello stesso tipo (quindi come se fosse invocato un costruttore pubblico) ma creato in una funzione membro dell oggetto (utilizzando quindi il costruttore privato): Questa situazione permette per esempio di limitare il numero di oggetti di quella classe che possono essere costruiti, utilizzando un contatore ed incrementando quest ultimo di uno alla creazione di un oggetto (costruzione controllata)

78 Es Esempio 02.Classi\07.LampadaDiAladino-CostruttoriPrivati

79 Riepilogo Classi ed Oggetti: Differenza Interfaccia Variabili oggetto e riferimento agli oggetti Definire una classe La dichiarazione class Visibilità public e private Variabili membro le costanti : final Metodi i parametri espliciti ed il parametro this costruttore ed overloading: default, copia, parametri di costruzione Membri static Metodi static Variabili e costanti static Costruttori private

Introduzione a Classi e Oggetti

Introduzione a Classi e Oggetti Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto

Dettagli

Livelli di astrazione

Livelli di astrazione Realizzare Classi Astrazione Perdita di dettaglio Utile nella descrizione, progettazione, implementazione e utilizzo di sistemi complessi Dettagli trascurabili vengono incapsulati in sottosistemi più semplici

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Introduzione a classi e oggetti

Introduzione a classi e oggetti 2 Introduzione a classi e oggetti Obiettivi del capitolo Capire i concetti di classe e oggetto Apprendere la differenza tra oggetti e riferimenti a oggetti Acquisire familiarità con il procedimento di

Dettagli

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented Informatica Prof. A. Longheu Introduzione ai Linguaggi Object-Oriented 1 Generalità programmazione OO La programmazione ad oggetti è un particolare modo di scrivere il programma. Si prevede che: 1) si

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Informazioni generali Docente: Samuel Rota Bulò @email: srotabul@dais.unive.it Homepage: http://www.dais.unive.it/~srotabul/ ooprogramming2012.html

Dettagli

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. public abstract class FiguraPiana2{ private double base; public FiguraPiana2(double

Dettagli

sayhello public private protected return public class Greeter { public String sayhello() { String message = Hello, World! ; return message; } }

sayhello public private protected return public class Greeter { public String sayhello() { String message = Hello, World! ; return message; } } sayhello public class Greeter { public String sayhello() { String message = Hello, World! ; return message; publicprivate protected return void return; Greeter main main public class GreeterTest { public

Dettagli

Progettazione di classi

Progettazione di classi Progettazione di classi Scegliere una classe Una classe rappresenta un singolo concetto Esempi: Una classe puo` rappresentare un concetto matematico Point Rectangle Ellipse Una classe puo` rappresentare

Dettagli

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

Parola chiave extends

Parola chiave extends Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi

Dettagli

Scrivere un programma in Java

Scrivere un programma in Java Programmare in JAVA Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA uff. 0577 234850 - interno: 7102 Stanza 119 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Programmazione AA 2012 2013

Programmazione AA 2012 2013 Programmazione ad Oggetti AA 2012 2013 Contenuti del corso Modulo A Tecniche di programmazione Docente: Prof. Michele Bugliesi Modulo B Tecniche di progetto Docente: Prof. Alessandro Roncato Contenuti

Dettagli

Pila di interi. Car 1. Car n. Pila di interi: Pila di Oggetti: Gli elementi che sono inseriti e tolti dalla pila sono numeri interi

Pila di interi. Car 1. Car n. Pila di interi: Pila di Oggetti: Gli elementi che sono inseriti e tolti dalla pila sono numeri interi Pila di Oggetti Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577 234850 - interno: 7102 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

Dettagli

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Introduzione Il meccanismo dell eredità consente di sfruttare delle relazioni tipo/sottotipo, ereditando attributi

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

Tipi di Dato Ricorsivi

Tipi di Dato Ricorsivi Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio

Dettagli

Programmazione. Prima lezione sugli oggetti: agenda

Programmazione. Prima lezione sugli oggetti: agenda Programmazione A.A. 2002-03 I Programmazione Orientata agli Oggetti (1): Principi generali ( Lezione XXV ) Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università

Dettagli

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA A.A. 2007/08 Tutor: Barbara Pettazzoni barbara.pettazzoni@studio.unibo.it Java: Compilazione e Traduzione Editing, compilazione, esecuzione

Dettagli

I metodi statici -1. Variabili statiche Vogliamo assegnare a ciascuncontoun numeroidentificativo diverso. I metodi statici -2

I metodi statici -1. Variabili statiche Vogliamo assegnare a ciascuncontoun numeroidentificativo diverso. I metodi statici -2 I metodi statici -1 I metodi statici non hanno il parametro implicito il metodo sqrt di Math I metodi statici vengono detti anche metodi di classe perche` non operano su una particolare istanza della classe

Dettagli

Programmazione Java. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 3. Alfonso Miola Settembre 2007

Programmazione Java. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 3. Alfonso Miola Settembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 3 Programmazione Java Alfonso Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Programmazione Java 1 Contenuti

Dettagli

INTRODUZIONE INTRODUZIONE JAVA JAVA

INTRODUZIONE INTRODUZIONE JAVA JAVA INTRODUZIONE INTRODUZIONE Lo sviluppo di applicazioni complesse porta a costruire moduli software sempre più potenti e versatili, che possano essere riutilizzati in numerosi progetti I linguaggi ad oggetti

Dettagli

Java? Sì, grazie. Scopo del corso

Java? Sì, grazie. Scopo del corso Modulo di Java? Sì, grazie Il linguaggio di Internet? Portabilità su qualunque piattaforma (non solo calcolatori): It works everywhere Supporto e disponibilità di strumenti, librerie e documentazione garantiti

Dettagli

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

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD La prima applicazione Java con NetBeans IDE Dott. Ing. M. Banci, PhD Creare la prima applicazione 1. Creare un progetto: Quando si crea un progetto IDE occorre creare un ambiente nel quale costruire e

Dettagli

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50 Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE 4.50 Inizializzazione: creazione del nuovo progetto e del file sorgente in ambiente JCreator Al lancio del programma si apre la finestra

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

Esempio: il conto bancario

Esempio: il conto bancario Ereditarietà Prof. Francesco Scarcello D.E.I.S., Università della Calabria Corso di Informatica 2 Esempio: il conto bancario public class BankAccount { public BankAccount() { balance = 0; public BankAccount(double

Dettagli

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012 Programmazione a oggetti e JAVA Prof. B.Buttarazzi A.A. 2011/2012 Sommario Variabili statiche Ereditarietà multipla Le interfacce Binding Esercizi Esercizio ContoCorrente Creare una classe ContoCorrente

Dettagli

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione a Oggetti Lezione 10. Ereditarieta Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare

Dettagli

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone Il linguaggio Java Nato nel maggio 95 (James Gosling & al.) Orientato ad oggetti, basato sulle classi, concorrente Fortemente tipato: distinzione chiara tra errori statici ed errori dinamici Ad alto livello:

Dettagli

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori Programmazione ad oggetti in Java Daniela Micucci Outline La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori 2 Programmazione ad oggetti in Java 1 OOP Java

Dettagli

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015 Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 15 - Packages Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e Overloading Ereditarietà e Overriding Esercizi svolti Esercizi proposti Paradigma OO Le

Dettagli

Aritmetica. Progetto dei programmi

Aritmetica. Progetto dei programmi Aritmetica Un approccio metodologico alla costruzione dei programmi. Tipi di dati primitivi. int, float, double Variabili, dichiarazioni e operazioni Progetto dei programmi 2 Definizione del problema Scenario

Dettagli

Il linguaggio di programmazione JAVA

Il linguaggio di programmazione JAVA Introduzione a JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

Dettagli

Esercizi della lezione 5 di Java

Esercizi della lezione 5 di Java Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore

Dettagli

Funzioni e procedure

Funzioni e procedure Funzioni e procedure DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/

Dettagli

public class Hello { public static void main(string[] args){ // visualizza un messaggio sulla finestra di // console System.out.

public class Hello { public static void main(string[] args){ // visualizza un messaggio sulla finestra di // console System.out. javac Hello.java javac.exe javac.exe java Hello Hello, World! java.exe java.exe console public HelloWorld InsiemeDiCaratteri ContoPersonalizzato HelloworldHelloWorld HelloWorld class classpublic public

Dettagli

Iprogrammi scritti in Java sono formati da Classi che

Iprogrammi scritti in Java sono formati da Classi che Capitolo 3. Pesci e Animali Domestici Le Classi di Java Translated by Francesco Orciuoli Iprogrammi scritti in Java sono formati da Classi che rappresentano gli oggetti del mondo reale. Sebbene le persone

Dettagli

Tipi astratti di dato e loro realizzazione in Java

Tipi astratti di dato e loro realizzazione in Java Unità 13 Tipi astratti di dato e loro realizzazione in Java Sommario Tipo astratto di dato Specifica di tipi astratti Astrazione di valori e astrazione di entità Realizzazione di tipi astratti in Java

Dettagli

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 14 - Packages Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it Programmazione II Lezione 4 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 30/09/2011 1/46 Programmazione II Lezione 4 30/09/2011 Sommario 1 Esercitazione 2 Panoramica della Programmazione Ad Oggetti 3

Dettagli

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Si noti che le soluzioni ai quesiti saranno considerate valide

Dettagli

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca)

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca) Ministero dell Istruzione, dell Università e della Ricerca Istituto Tecnico Industriale Statale Enrico Mattei Via Martiri di Cefalonia 46-20097 San Donato Milanese Tel. 0255691411 - Fax 025276676 itisando@tin.it

Dettagli

CORSO DI PROGRAMMAZIONE

CORSO DI PROGRAMMAZIONE ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE OBJECT ORIENTED PROGRAMMING: I METODI DISPENSA 15.02 15-02_OOP_Metodi_[15] Questa dispensa è rilasciata sotto la licenza Creative

Dettagli

Linguaggio C - Funzioni

Linguaggio C - Funzioni Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

2 - Introduzione al linguaggio Java

2 - Introduzione al linguaggio Java 2 - Introduzione al linguaggio Java Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo

Dettagli

La velocità di una carovana

La velocità di una carovana Programmazione A.A. 2002-03 I linguaggio Java ( Lezione X, Parte I ) Il primo programma Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail

Dettagli

Struttura logica di un programma

Struttura logica di un programma Struttura logica di un programma Tutti i programmi per computer prevedono tre operazioni principali: l input di dati (cioè l inserimento delle informazioni da elaborare) il calcolo dei risultati cercati

Dettagli

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte Java riutilizzo delle classi G. Prencipe prencipe@di.unipi.it Introduzione Una delle caratteristiche fondamentali in Java è il riutilizzo del codice Ci sono due modi per ottenerlo Creare oggetti di classi

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

Dettagli

Introduzione ad Eclipse

Introduzione ad Eclipse Introduzione ad Eclipse Corso di Metodi Avanzati di Programmazione 2014-2015 Docente: Dr. Annalisa Appice Tutor di Laboratorio: dott. Roberto Corizzo Ambiente Eclipse Sommario Java: ambiente Eclipse L

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione in Java (I modulo) Lezione 3: Prime nozioni Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per

Dettagli

Rappresentazione delle informazioni

Rappresentazione delle informazioni Rappresentazione delle informazioni Rappresentazione delle informazioni L informatica si occupa di rappresentare ed elaborare informazioni diverse: numeri caratteri audio immagini video I caratteri: ASCII

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java

Dettagli

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; }

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; } Java è un linguaggio di programmazione c indipendente dalla piattaforma, ovvero un linguaggio di programmazione che permette di compilare i programmi una volta sola e di installarli su computer che usano

Dettagli

CORSO DI PROGRAMMAZIONE

CORSO DI PROGRAMMAZIONE ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE ELEMENTI STATICI E CLASSI STATICHE DISPENSA 15.03 15-03_OOP_Static_[15] Questa dispensa è rilasciata sotto la licenza Creative

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it 18 marzo 2011 Problema basato su 10.5 del libro di testo La CINA (Compagnia Italiana per il Noleggio di Automobili) dispone di

Dettagli

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla

Dettagli

Primi programmi in Java. Lezione IV

Primi programmi in Java. Lezione IV Primi programmi in Java Lezione IV Scopo della lezione Realizzare dei semplici programmi scritti in Java. Esercitarsi nelle operazioni necessarie per passare dalla scrittura di codice Java all esecuzione

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il primo

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture

Dettagli

Introduzione alla programmazione in Java

Introduzione alla programmazione in Java Introduzione alla programmazione in Java 1 Programmare ad oggetti La programmazione come attività di creazione di modelli. I concetti di classe, oggetto e scambio di messaggi. Un primo esempio di programma

Dettagli

Esercitazione n 4. Obiettivi

Esercitazione n 4. Obiettivi Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 19 Ricorsione A. Miola Marzo 2012 http://www.dia.uniroma3.it/~java/fondinf/ Ricorsione 1 Contenuti q Funzioni e domini definiti

Dettagli

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Da JavaScript a Java

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Da JavaScript a Java Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Da JavaScript a Java Versione 3.4.05 Per la prima lezione in aula e la prima esercitazione in laboratorio 1 Da JavaScript a Java

Dettagli

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2) Gestione di errori e situazioni eccezionali Gestione delle eccezioni Una procedura (utente o di libreria) deve poter segnalare l impossibilità di produrre un risultato significativo o la propria terminazione

Dettagli

Appunti di Informatica www.mimmocorrado.it 1

Appunti di Informatica www.mimmocorrado.it 1 Installare Java Il programma può essere scaricato dal seguente indirizzo: http://www.java.com/it/download/windows_ie.jsp?locale=it&host=www.java.com Per installare la JDK è necessario: 1. scaricare il

Dettagli

http://www.programmiamo.altervista.org/c/oop/o...

http://www.programmiamo.altervista.org/c/oop/o... PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.

Dettagli

Le command line di Java

Le command line di Java Le command line di Java Esercitazioni di Programmazione 2 Novella Brugnolli brugnoll@science.unitn.it Ambiente di lavoro Per compilare ed eseguire un programma Java abbiamo bisogno di: The JavaTM 2 Platform,

Dettagli

19. Introduzione al multi-threading

19. Introduzione al multi-threading 19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi

Dettagli

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

Unità B3 Strutture di controllo

Unità B3 Strutture di controllo (A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: I/O su console Package Blocco di controllo Oggetto System.out Oggetto System.in Oggetto Tastiera Metodo readline() Strutture

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Esercitazioni aggiuntive Martedì 14-17 -- Laboratorio L-12

Esercitazioni aggiuntive Martedì 14-17 -- Laboratorio L-12 Laboratorio LP2 Esercitazioni aggiuntive Martedì 14-17 -- Laboratorio L-12 ventre@dia.unisa.it Esercizio P14.8 Scrivete un programma Find che cerchi in tutti i file specificati sulla riga di comando una

Dettagli

Corso Programmazione 1 Capitolo 01: Concetti Elementari

Corso Programmazione 1 Capitolo 01: Concetti Elementari Corso Programmazione 1 Capitolo 01: Concetti Elementari Docente: Roberto Sebastiani - roberto.sebastiani@unitn.it Esercitatori: Mario Passamani - mario.passamani@unitn.it Alessandro Tomasi - alessandro.tomasi@unitn.it

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Classi astratte Le classi astratte sono un ibrido tra le classi concrete e le interfacce. Hanno le stesse caratteristiche di una

Dettagli

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

!#$%&&'()#*%+%+!#$',,'()#*%+ -)%*&'&'+'$.)+-$$%&&) !#$%&&'(%)'*+%,#-%#.'%&'#/0)-+#12+3,)4+56#7+#.')8'9 !"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Il meccanismo dell ereditarietà a.a. 2008/2009 Claudio De Stefano 1 L ereditarietà consente di definire nuove classi per specializzazione o estensione di classi preesistenti,

Dettagli

Un primo programma Java. Introduzione alla programmazione in Java. Programmi e mondo reale. Programmare ad oggetti. I programmi come modelli

Un primo programma Java. Introduzione alla programmazione in Java. Programmi e mondo reale. Programmare ad oggetti. I programmi come modelli 4 Un primo programma Java Introduzione alla programmazione in Java class Program1 { System.out.println("Benvenuti al corso"); 1 5 Programmi e mondo reale Programmare ad oggetti Il codice di un programma

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet

TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet Prof. Franco Zambonelli Lucidi realizzati in collaborazione

Dettagli

Corso Java > Primo approccio al codice scritto da Claudio De Sio Cesari

Corso Java > Primo approccio al codice scritto da Claudio De Sio Cesari Corso Java > Primo approccio al codice scritto da Claudio De Sio Cesari Diamo subito uno sguardo alla classica applicazione "Hello World". Trattasi del tipico primo programma che rappresenta il punto di

Dettagli

Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare

Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare Minicorso tematico: Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare Dott. Francesco Ricca Dipartimento Di Matematica Università della Calabria ricca@mat.unical.it Presentiamoci

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli