14 - Metodi e Costruttori
|
|
|
- Adelina Amato
- 8 anni fa
- Visualizzazioni
Transcript
1 14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa milazzo milazzo di.unipi.it Corso di Laurea Magistrale in Informatica Umanistica A.A. 2013/2014 Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
2 Dichiarazione di una classe Lo schema generale di dichiarazione di una classe in Java è il seguente: public class <nome - classe > { < variabili di istanza > < variabili statiche > <costruttori > < metodi di istanza > < metodi statici > Variabili e metodi (siano essi d istanza o statici) sono chiamati anche membri della classe L ordine delle dichiarazioni all interno del corpo di una classe non è importante Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
3 Membri statici o di istanza? (1) Abbiamo visto che si usano membri d istanza per codificare lo stato e le funzionalità dei singoli oggetti membri statici per codificare lo stato e le funzionalità della classe condivise da tutti gli oggetti significativi anche se non esiste nessun oggetto della classe Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
4 Membri statici o di istanza? (2) Quindi: Il metodo main è statico. In effetti viene invocato prima di creare qualunque oggetto. Una variabile dovrebbe essere d istanza se assume valori diversi per oggetti diversi. Esempio: base e altezza di un oggetto Rettangolo Una variabile dovrebbe essere statica se assume gli stessi valori per oggetti diversi. In caso contrario potrebbe essere difficile mantere lo stesso valore per tale variabile in tutti gli oggetti. Se un metodo utilizza una variabile d istanza non può essere statico Il compilatore segnalerebbe un errore Il modificatore static per i metodi serve solo per far controllare al compilatore di non usare variabili d istanza Se un metodo non utilizza variabili d istanza dovrebbe essere statico In caso contrario il compilatore non segnala errori, ma il programma potrebbe essere concettualmente poco chiaro Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
5 Modificatori di visibilità Abbiamo visto che una dichiarazione di variabile o metodo (sia statico che di istanza) può essere preceduto da modificatori di visibilità. In ordine crescente di visibilità abbiamo: private senza modificatore protected public Utilizzabile solo all interno della stessa classe Utilizzabile solo nel package che contiene la classe Utilizzabile nel package che contiene la classe, e in tutte le classi che ereditano da essa Utilizzabile ovunque Vedremo più avanti i package e il concetto di ereditarietà Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
6 Interfaccia pubblica di una classe I membri pubblici di una classe (compresi i costruttori) costituiscono l interfaccia pubblica della classe Invece: E l inseme delle risorse e delle funzionalità messe a disposizione delle altre classi Le variabili private di una classe rappresentano lo stato interno della classe I metodi privati di una classe sono metodi ausiliari a disposizione degli altri metodi della classe Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
7 Metodi (1) La dichiarazione di un metodo ha la seguente sintassi: < modificatori > <tipo > <nome > ( < lista_parametri_formali >) {... Esempio: public static int minimo ( int a, int b) { if (a<b) return a; else return b; Modificatori: di visibilità (private, public,...) o di appartenenza a classe o istanze (static) Tipo: del risultato restituito dal metodo Nome: del metodo Parametri formali: lista (anche vuota) di coppie <tipo> <parametro> Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
8 Metodi (2) I metodi e la possibilità di definire variabili private consentono di limitare l accesso allo stato di un oggetto public class SolaLettura { private int valore ; public SolaLettura ( int x) { valore =x; public int getvalore () { return valore ; La variabile d istanza valore potrà essere acceduta in sola lettura Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
9 Metodi (3) Tramite i metodi si può anche controllare la scrittura delle variabili private public class SolaLettura { private int valore ; public SolaLettura ( int x) { valore =x; public int getvalore () { return valore ; // modifica il valore solo se il nuovo e maggiore // restituisce true se la modifica e stata effettuata public boolean setvalore ( int nuovo ) { if ( nuovo > valore ) { valore = nuovo ; return true ; else return false ; La modifica della variabile valore sarà sotto controllo del metodo! Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
10 Incapsulamento (1) La possibilità di controllare l accesso allo stato degli oggetti tramite appositi metodi nei linguaggi orientati agli oggetti prende il nome di Proprietà di Incapsulamento L incapsulamento consente di nascondere la rappresentazione dello stato interno degli oggetti agli utilizzatori L utilzzatore di getvalore e setvalore non è necessariamente a conoscenza che il valore è rappresentato nella classe da una variabile di tipo int La classe potrebbe ad esempio sfruttare un array di int che memorizza (all insaputa dell utilizzatore) gli ultimi 10 valori ricevuti... Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
11 Incapsulamento (2) Abbiamo già discusso che l incapsulamento è una proprietà essenziale per consentire lo sviluppo di applicazioni complesse E sufficiente i vari programmatori si accordino sulle interfacce pubbliche delle varie classi che ogniuno deve implementare L utilizzo della terminologia get... e set... per i metodi che consentono di accedere a variabili private è una prassi comune: getvalue(), setvalue(x), getfirstelement() getlastelement(),... Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
12 Passaggio dei parametri In Java il passaggio dei parametri ai metodi avviene per valore I metodi lavorano su copie delle variabili passate come parametri E quando si passano oggetti ai metodi? Le variabili di tipo classe contengono riferimenti a oggetti Ciò che viene copiato al momento della chiamata è il riferimento! Il metodo lavora sull oggetto originale (acceduto tramite la copia del riferimento) Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
13 Riferimenti e incapsulamento: ATTENZIONE (1) Assumendo che la classe Rettangolo sia la seguente: public class Rettangolo { public int base ; public int altezza public Rettangolo ( int b, int a) { base = b; altezza = a; Ragioniamo sulla seguente classe che usa Rettangolo: public Finestra { // variabile a cui non vogliamo dare accesso pubblico private Rettangolo area ; public Finestra () { area = new Rettangolo (800,600); public Rettangolo getarea () { return area ; La variabile privata area è al sicuro? Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
14 Riferimenti e incapsulamento: ATTENZIONE (2) Risposta: NO Vediamo cosa potrebbe fare un utilizzatore della classe Finestra public class UsaFinestra { public static void main ( String [] args ) { Finestra f = new Finestra (); Rettangolo r = f. getarea (); System. out. println (r. base ); // stampa 800 r. base =100; Rettangolo r2 = f. getarea (); System. out. println (r2. base ); // stampa 100 Il metodo getarea() di Finestra restituisce un riferimento all oggetto privato!!! Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
15 Overloading (1) Java supporta un meccanismo di overloading (sovraccarico) che consente di chiamare più metodi della stessa classe con lo stesso nome, purché ogni metodo abbia una diversa firma (signature). Dato un generico metodo: < modificatori > <tipo > <nome > ( <tipo1 > <p1 >,..., <tipon > <pn >) {... la firma corrispondente è data dalla sequenza: <nome >( < tipo1 >,..., <tipon >) Attenzione: la firma non comprende né il tipo del metodo, né i nomi dei parametri formali. Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
16 Overloading (2) Esempi: Metodo int getval() int minimo(int x, int y) int minimo(int a, int b) double minimo(double x, double y) int minimo(int x, int y, int z) Firma getval() minimo(int,int) minimo(int,int) minimo(double,double) minimo(int,int,int) Quali di questi metodi potrebbero stare nella stessa classe? Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
17 Overloading (3) Esempio: public class Sommatore { public static int somma ( int x) { return x; public static int somma ( int x, int y) { return x+y; public static int somma ( int x, int y, int z) { return x+y+z; La possibilità di usare l overloading di un metodo consente di usare lo stesso nome per metodi diversi che realizzano la stessa funzionalità su dati di tipo diverso. Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
18 Varargs (1) Recentemente (più o meno) in Java è stato introdotta la possibilità di definire metodi con un numero variabile di parametri Metodi con varargs Nella definizione di un metodo con varargs l ultimo parametro formale ha la seguente sintassi: <tipo >... par dove i puntini sospensivi danno l idea che il parametro attuale corrispondente può essere presente zero o più volte. All interno del corpo del metodo, il parametro par avrà tipo <tipo>[]... Attenzione: solo l ultimo parametro formale di un metodo può avere questa nuova sintassi. Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
19 Varargs (2) Esempio: public class Sommatore { public static int somma ( int... valori ) { int s = 0; for ( int x: valori ) { s += x; Utilizzo: System. out. println ( somma ()); // stampa 0 System. out. println ( somma (3,4)); // stampa 7 System. out. println ( somma (5,7,2,1,6,8,1)); // stampa 30 La firma di int somma(int... valori) è somma(int[]) Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
20 Costruttori e inizializzazione di variabili Fino ad ora abbiamo visto che un costruttore è un metodo speciale che viene eseguito al momento della creazione di un oggetto (tramite la primitiva new Tipicamente inizializza le variabili di istanza dell oggetto L inizializzazione delle variabili in Java merita un discorso... Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
21 Inizializzazione di variabili (1) Abbiamo visto due tipologie di variabili in Java variabili dichiarate localmente nei metodi (o costruttori): variabili locali e parametri formali variabili dichiarate come membri di una classe: variabili statiche e variabili d istanza Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
22 Inizializzazione di variabili (2) Le variabili locali dei metodi: vengono allocate nel record di attivazione relativo alla chiamata del metodo (nello stack) devono essere inizializzate esplicitamente, altrimenti il compilatore segnala un errore Esempio: int num ; while (num >=0) { num = input. nextint (); Errore segnalato dal compilatore: variable num might not have been initialized Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
23 Inizializzazione di variabili (3) Le variabili statiche e di istanza: vengono allocate nell area di memoria che descrive l oggetto (nello heap) vengono sempre inizializzate, anche se non viene fatto esplicitamente I valori di default di queste variabili sono: 0 per le variabili numeriche false per le variabili di tipo boolean null per le variabili di tipo classe (oggetti) Ci sono tre modi per inizializzare una variabile d istanza o statica: Con assegnamento esplicito all interno di un costruttore; Con inizializzazione esplicita nella dichiarazione; Inizializzazione (implicita) con valori default. Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
24 Inizializzazione di variabili (4) Esempio in cui tutti e tre i modi sono impiegati: public class Punto3d { public double x; // inizializzazione nel costruttore public double y = 3.0; // inizializzazione nella dichiarazione public double z; // inizializzazione con valore di default public Punto3d ( double val ) { x = val ; Esempio di uso Punto3d p = new Punto3d (5.0); System. out. println ( p. x); // stampa 5.0; System. out. println ( p. y); // stampa 3.0; System. out. println ( p. z); // stampa 0.0; Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
25 Costruttori (1) I costruttori si dichiarano all interno di una classe essenzialmente come i metodi, ma rispettando le seguenti regole: 1. il nome del costruttore deve coincidere con quello della classe; 2. il tipo del costruttore non deve essere specificato. 3. il modificatore static non può essere usato per un costruttore. Come per i metodi, anche ai costruttori si applica l overloading: una classe può avere più costruttori purché abbiano firma diversa (cioè i parametri formali devono differire nel tipo e/o nel numero). Esempio (classe ContoCorrente): public ContoCorrente ( double saldoiniziale ) { saldo = saldoiniziale ; public ContoCorrente () { saldo = 0.0; Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
26 Costruttori (2) Ogni classe ha un costruttore di default che inizializza le variabili d istanza con il corrispondente valore di default Questo costruttore non ha parametri, ed è disponibile solo se nella classe non è definito nessun costruttore Se invece nella classe è definito almeno un costruttore, allora il costruttore di default non è più utilizzabile Esempio di classe senza costruttori: public class Punto { public double x, y;... // altri metodi ma... // nessun costruttore Viene utilizzato il costruttore di default: Punto p = new Punto (); // OK System. out. println ( p. x); // stampa 0.0; System. out. println ( p. y); // stampa 0.0; Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
27 Costruttori (3) Esempio di classe con costruttori: public class Punto { public double x, y; public Punto ( double vx, double vy) { x = vx; y = vy;... // altri metodi Il costruttore di default non si può usare: Punto p1 = new Punto (); // ERRORE Punto p2 = new Punto (3.0, 5.0) // OK Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
28 Costruttori (4) Se il programatore vuole continuare a rendere disponbile un costruttore che non prevede parametri, deve implementarlo: public class Punto { public double x, y; public Punto () { // inizializzazione automatica public Punto ( double vx, double vy) { x = vx; y = vy;... // altri metodi Questa volta si possono usare entrambi i costruttori Punto p1 = new Punto (); // OK Punto p2 = new Punto (3.0, 5.0) // OK Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
29 Il riferimento this (1) In ogni corpo di un metodo d istanza (o di un costruttore) è sempre disponbile la variabile this è un riferimento all oggetto su cui si invoca il metodo (o costruttore) è detto anche parametro implicito del metodo Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
30 Il riferimento this (2) Il riferimento this può essere usato per accedere alle variabili di istanza del metodo: Senza this public class Punto { public double x, y; public String tostring () { return "(" + x + "," + y + ")"; Con this (equivalente al precedente) public class Punto { public double x, y; public String tostring () { return "(" + this.x + "," + this.y + ")"; Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
31 Il riferimento this (3) In realtà this in alcuni casi è utile: Consente di usare come nome di parametro formale lo stesso nome di una variabile d istanza public class Punto { public double x, y; public Punto ( double x, double y) { // assegna i parametri alle variabili d istanza this.x = x; this.y = y; L uso di this può rendere più chiara la lettura del codice di classi complesse e subito chiaro che si sta usando una variabile d istanza Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
32 Il riferimento this (4) this consente anche di scrivere metodi che restituiscono un riferimento alla classe corrente: public class Punto { public double x, y;... // costruttori // restituisce il " minimo " tra p e l oggetto corrente public Punto minimo ( Punto p) { if ( (p.x+p.y) < ( this.x+ this.y)) return p; else return this ; E si usa cosi Punto p1 = new Punto (3.0, 7.0); Punto p2 = new Punto (10.0, 15.0); Punto min = p1. minimo ( p2 ); Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
33 Il riferimento this (5) Infine, this (o meglio, this()) può essere usato da un costruttore per chiamarne un altro Attenzione: questo uso è consentito soltanto come prima istruzione del costruttore Senza this() public class Punto { public double x, y; // prende un solo valore e lo assegna sia a x che a y public Punto ( double z) { this.x = z; this.y = z; public Punto ( double x, double y) { this.x = x; this.y = y; Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
34 Il riferimento this (6) Con this() public class Punto { public double x, y; // prende un solo valore e lo assegna sia a x che a y public Punto ( double z) { this (z, z); // chiama l altro costruttore public Punto ( double x, double y) { this.x = x; this.y = y; Paolo Milazzo (Università di Pisa) Programmazione - Metodi e Costruttori A.A. 2013/ / 34
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni 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
6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
Definizione di classi. Walter Didimo
Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti
16 - Ereditarietà, tipi e gerarchie
16 - Ereditarietà, tipi e gerarchie 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
5 - Istruzioni condizionali
5 - Istruzioni condizionali 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
Programmazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this [email protected] http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
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/
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,
Il linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
Programmazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
Laboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo [email protected] 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
Proprietà delle Classi e degli Oggetti in Java
Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di
Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
Programmazione ad oggetti
Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.
Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
Le basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
TIPI PRIMITIVI: LIMITI
TIPI PRIMITIVI: LIMITI I tipi primitivi sono i "mattoni elementari" del linguaggio In varie situazioni può però essere necessario trattare i tipi primitivi come oggetti quando una funzione pretende come
public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;
Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
La programmazione ad oggetti (OOP)
Oggetti e Classi (CAP 10) Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Novembre 2011 La programmazione ad oggetti (OOP) È un approccio concettuale alla programmazione (indipendente
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Riassunto. La programmazione OO. Oggi. Esempio
Riassunto La programmazione OO Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ [email protected] Programmazione, lezione 17 29 novembre
IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
ESERCIZI JAVA. Esercizi sulle Interfacce. Esercizio 1:
ESERCIZI JAVA Esercizi sulle Interfacce Esercizio 1: Java mette a disposizione un'interfaccia chiamata Comparable. Quando un oggetto implementa questa interfaccia esso può implementare un metodo chiamato
Metodi statici. Dichiarazione e chiamata di metodi statici
Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un
Introduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016
Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):
Programmazione I 11 gennaio 2012 Matricola:........................................................................ Cognome:........................................................................ Nome:...........................................................................
Uguaglianza e copia di oggetti
Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La
Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa Array di array A. Miola Febbraio 8 http://www.dia.uniroma.it/~java/fondinf/ Array di array Contenuti Array bidimensionali creazione
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
Definizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
Indice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
Programmazione orientata agli oggetti. Ivan Lanese
Programmazione orientata agli oggetti Ivan Lanese Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Scrivere grosse applicazioni La gran parte delle applicazioni sono GROSSE Windows
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
21 - Alberi e Ricorsione
21 - Alberi e Ricorsione 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
Programmazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto
Fondamenti di Informatica I
Sapienza Università di Roma, Facoltà di Ingegneria Corso di Fondamenti di Informatica I Canale 1 (A-K) Anno Accademico 2009-2010 Corso di Laurea in Ingegneria Informatica Docente: Camil Demetrescu Esercitatore:
Programmazione orientata agli oggetti Classi astratte e interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma
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
Modulo 2: Strutture fondamentali della programmazione Java
Modulo 2: Strutture fondamentali della programmazione Java Argomenti Trattati: Un semplice programma Java: Presentazione di un primo Esempio; Introduzione alla struttura; Compilazione ed esecuzione. Argomenti
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
La Gestione della Memoria. Carla Binucci e Walter Didimo
La Gestione della Memoria Carla Binucci e Walter Didimo Esecuzione di programmi Java L esecuzione di un programma Java richiede: la compilazione del codice Java in bytecode Java (un linguaggio macchina
Esempio 2: Subtyping
Esempio 2: Subtyping 22 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti mediante l aggiunta o la ridefinizione
La classe java.lang.object
La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita
Corso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti Costruttori di copia, funzioni di accesso e variabili static aa 2008/2009 Claudio De Stefano Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 1
Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Paradigma O.O. Oggetti e Classi Ereditarietà Paradigma Object-Oriented Il paradigma O.O. si ispira all ambiente che ci circonda,
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
Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo
Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il
Programmazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 3 - Array Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento
Ereditarietà e Polimorfismo
Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
