Programmi Java Java un linguaggio ad oggetti lunit

  • Slides: 117
Download presentation
Programmi Java § Java è un linguaggio ad oggetti § l'unità minima di programmazione

Programmi Java § Java è un linguaggio ad oggetti § l'unità minima di programmazione è la classe § un programma Java utilizza una o più classi § per ora, consideriamo programmi formati da una sola classe § un solo file sorgente § il nome del file coincide con il nome della classe § l'estensione del file è “. java” queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Codice Sorgente § i programmi Java sono scritti all'interno di "classi" § ogni classe

Codice Sorgente § i programmi Java sono scritti all'interno di "classi" § ogni classe è definita in un file di testo con estensione. java § il nome del file deve coincidere con il nome della classe queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Un esempio Hello. World. java public class Hello. World { // Il programma più

Un esempio Hello. World. java public class Hello. World { // Il programma più semplice public static void main(String[] args) { // Stampa un messaggio sul video System. out. println(“Hello, world!”); } } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Compilazione Scrittura J Compilazione 1001 0110 110. . . java . class Codice sorgente

Compilazione Scrittura J Compilazione 1001 0110 110. . . java . class Codice sorgente Byte. Code queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Il compilatore J Compilatore 1001 0110 110. . § traduzione del sorgente in bytecode

Il compilatore J Compilatore 1001 0110 110. . § traduzione del sorgente in bytecode § comando: javac Hello. World. java § in Eclipse la compilazione è automatica e nascosta all'utente queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Ambienti di sviluppo § il codice sorgente Java è un testo semplice § un

Ambienti di sviluppo § il codice sorgente Java è un testo semplice § un editor di testo qualsiasi è sufficiente (Notepad) § si possono usare ambienti integrati per lo sviluppo (IDE) § offrono strumenti per la scrittura, la compilazione, l’esecuzione e la ricerca degli errori queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esempi § Eclipse § http: //www. eclipse. org § JCreator § http: //www. jcreator.

Esempi § Eclipse § http: //www. eclipse. org § JCreator § http: //www. jcreator. com § Blue. J § http: //www. bluej. org queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Struttura di una classe § una classe ha: § un nome (che coincide col

Struttura di una classe § una classe ha: § un nome (che coincide col nome del file. java) § un insieme di attributi (volendo vuoto) § un insieme di metodi (volendo vuoto) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Schema di una classe Nome. Classe tipo 1 nome. Attributo 1. . tipo. N

Schema di una classe Nome. Classe tipo 1 nome. Attributo 1. . tipo. N nome. Attributo. N metodo 1. . metodo. M queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Una classe vuota § l'esempio più semplice di classe: Classe. Vuota (insieme vuoto di

Una classe vuota § l'esempio più semplice di classe: Classe. Vuota (insieme vuoto di attributi e metodi) public class Classe. Vuota{ } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Prime classi e il metodo main § a scopo didattico è utile inizialmente considerare

Prime classi e il metodo main § a scopo didattico è utile inizialmente considerare delle classi contenenti: § zero attributi § un solo metodo: il metodo "statico" main § dopo i primi programmi verranno considerate classi con insiemi non vuoti di attributi e metodi diversi dal metodo main queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Prime classi e il metodo main Nome. Classe (insieme vuoto di attributi) metodo main

Prime classi e il metodo main Nome. Classe (insieme vuoto di attributi) metodo main queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Il metodo main § il metodo main: § è una "funzione", un pezzo di

Il metodo main § il metodo main: § è una "funzione", un pezzo di codice Java § è statico, cioè non dipende dall'oggetto all'interno del quale si trova (vedremo i metodi statici più avanti) § è pubblico (vedremo cosa significa più avanti) § non ritorna nulla (void) § riceve in input un array di stringhe § viene richiamato automaticamente nel momento in cui si avvia il programma Java § sintassi: § public static void main(String [] args){} queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 1 § definire una classe con il solo metodo main che scrive sulla

Esercizio 1 § definire una classe con il solo metodo main che scrive sulla console di output la stringa "Hello, world!" queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 1 – passo 1 § per prima cosa disegno lo schema della classe:

Esercizio 1 – passo 1 § per prima cosa disegno lo schema della classe: Hello. World main System. out. println("Hello, world!"); queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 1 – passo 2 § poi inizio a tradurre lo schema in un

Esercizio 1 – passo 2 § poi inizio a tradurre lo schema in un programma Java § la cornice più esterna diventa l'istruzione class: Hello. World main System. out. println("Hello, world!"); public class Hello. World { } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 1 – passo 3 § poi considero il metodo main e il suo

Esercizio 1 – passo 3 § poi considero il metodo main e il suo contenuto: Hello. World main System. out. println("Hello, world!"); public class Hello. World { public static void main(String[] args) { System. out. println("Hello, world!"); } } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Dichiarazione di variabile § precede obbligatoriamente l’utilizzo di una variabile § sintassi alternative: §

Dichiarazione di variabile § precede obbligatoriamente l’utilizzo di una variabile § sintassi alternative: § <tipo> <nome>; § <tipo> <nome> = <valore. Iniziale>; § esempi § char c; § int i = 10; § long l 1, l 2; Opzionale queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Tipi § variabili (e parametri dei metodi, che vedremo più avanti) sono caratterizzati da

Tipi § variabili (e parametri dei metodi, che vedremo più avanti) sono caratterizzati da un tipo che ne precisa/limita l’uso § le variabili possono contenere solo valori conformi al proprio tipo primitivi o base byte aggregati omogenei eterogenei array classi int boolean char long double short float queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Tipi base § numerici interi § byte, short, int, long § esempio: int a;

Tipi base § numerici interi § byte, short, int, long § esempio: int a; //variabile chiamata "a" di tipo intero § numerici reali § float, double § esempio: float b; variabile "b" di tipo reale § non numerici § boolean, char § esempio: char c; variabile "c" di tipo singolo carattere queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Tipi numerici interi § valori ammissibili § § byte {-128. . . 127} short

Tipi numerici interi § valori ammissibili § § byte {-128. . . 127} short {-32768. . . 32767} int {-2147483648. . . 2147483647} long {-9. 22 E 18. . . 9. 22 E 18} queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Tipi numerici interi § operazioni ammissibili § aritmetiche +, -, *, /, %, ++,

Tipi numerici interi § operazioni ammissibili § aritmetiche +, -, *, /, %, ++, --, >> § logiche ^, &, |, ~, <<, >>> § confronto ==, !=, >, >=, <, <= queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Tipi numerici reali § valori ammissibili: § float {± 3. 403 E 38} 6

Tipi numerici reali § valori ammissibili: § float {± 3. 403 E 38} 6 cifre significative § double {± 1. 798 E 308} 15 cifre significative § operazioni ammissibili: § aritmetiche (+, -, *, /) § confronto (==, !=, >, >=, <, <=) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Usare le variabili § si può dichiarare una variabile ovunque nel corpo di un

Usare le variabili § si può dichiarare una variabile ovunque nel corpo di un metodo § la "visibilità" è limitata al blocco di istruzioni in cui è dichiarata § le variabili devono essere sempre inizializzate! § int a; § int b = a; la variabile "a" non è stata inizializzata, e il suo valore è casuale, ma attenzione: Eclipse non segnala alcun errore! queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Usare le variabili § ad una variabile può essere assegnato: § un valore esplicito

Usare le variabili § ad una variabile può essere assegnato: § un valore esplicito § il risultato del calcolo di una formula § esempi § § § int i = 1, j = 5; //valori semplici i = (5*j) % 10; //formula long l = 10 L; //valore semplice char c 1 = 'a', c 2 = ‘u 0062’; //valori semplici boolean b = false; //valore semplice queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Output di dati su console § è il tipo più semplice di output §

Output di dati su console § è il tipo più semplice di output § permette di visualizzare testi e numeri nella finestra in cui è stato avviato il programma Java § formato: § System. out. println( ); § System. out. print( ); § tra le parentesi scriviamo il testo e/o le variabili da visualizzare § esempio: § System. out. println("il valore di A è: "+A); queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Output di dati su console § il "+" ci permette di concatenare più di

Output di dati su console § il "+" ci permette di concatenare più di un testo o variabile: § int A=10; int B=3; § System. out. println("Il prodotto di A per B è "+(A*B)+"!"); § nell'esempio viene prima calcolato A*B e poi il testo iniziale ("Il prodotto. . . ") viene concatenato al risultato di A*B e al testo finale ("!") prima di essere visualizzato sulla console di output queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 2 – tipi numerici § scrivere un programma che: § date due variabili

Esercizio 2 – tipi numerici § scrivere un programma che: § date due variabili intere "a" e "b" calcoli e visualizzi la loro somma, prodotto, differenza, rapporto § date due variabili di tipo float "c" e "d" calcoli e visualizzi la loro somma, prodotto, differenza, rapporto § data la variabile di tipo byte "e", assegnare alla variabile il valore 1000 e verificare, che Eclipse segnala un errore in corrispondenza dell'assegnazione § che modifica occorre fare al programma permettere di memorizzare nella variabile "e" il valore 1000? queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

if-then-else § sintassi: § if (<condizione>) { <istruzioni da eseguire se la condizione è

if-then-else § sintassi: § if (<condizione>) { <istruzioni da eseguire se la condizione è vera> } else { <istruzioni da eseguire se la condizione è falsa> } § le parentesi graffe si possono omettere nel caso racchiudano una singola istruzione § l'else e le relative parentesi si possono omettere (nel caso si tratta quindi di un if-then) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

if-then-else § permette di verificare se una condizione è vera § esempio: § if

if-then-else § permette di verificare se una condizione è vera § esempio: § if (A>0) //la parola "then" è sottintesa! System. out. println("A è maggiore di 0"); else //l'else invece non è sottinteso System. out. println("A non è maggiore di 0"); § se più di un'istruzione va eseguita nel then o nell'else si usano le parentesi graffe: § if(A>0) { System. out. println("A è maggiore di zero"); B=Math. sqrt(A); //B contiene la radice quadrata di A } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 3 – tipi numerici § date due variabili di tipo intero X e

Esercizio 3 – tipi numerici § date due variabili di tipo intero X e Y § se X>Y visualizzare "X è maggiore di Y" § se Y>X visualizzare "Y è maggiore di X" queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 4 – tipi numerici § date tre variabili intere "a", "b" e "c":

Esercizio 4 – tipi numerici § date tre variabili intere "a", "b" e "c": § se a<0 stampare il risultato di b+c § se a=0 stampare il risultato di b*c § se a>0 stampare il risultato di b/c § nelle condizioni (ad esempio in quella dell'if) l'uguaglianza si scrive con il simbolo "==" § esempio: § if(a==0) serve a controllare se il valore di a è uguale a zero queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 5 § scrivere un programma Java che, dato un numero intero X, visualizza

Esercizio 5 § scrivere un programma Java che, dato un numero intero X, visualizza sulla console la parola "pari" se il numero è pari o "dispari" se non lo è § utilizzare l'operatore % che corrisponde all'operazione "resto della divisione per" § ad esempio: § 10%2=0 § 5%2=1 queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

while-do § sintassi: while (<condizione>){ <corpo del while> } § le parentesi graffe si

while-do § sintassi: while (<condizione>){ <corpo del while> } § le parentesi graffe si possono omettere se racchiudono una singola istruzione queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

while-do § permette di ripetere una sequenza di operazioni fintanto che una condizione è

while-do § permette di ripetere una sequenza di operazioni fintanto che una condizione è vera § esempio: § int a=0; // a vale 0 while(a<10) // fintanto che a è minore di 10 {//la parola "do" è sottintesa! System. out. println(a+", "); // visualizza a a=a+1; // incrementa a di 1 } § come nel caso dell'if-then-else se la sequenza di istruzioni da ripetere è più lunga di 1 vanno usate e parentesi graffe per delimitarle queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 6 § scrivere un programma Java che data una variabile intera "a" di

Esercizio 6 § scrivere un programma Java che data una variabile intera "a" di valore positivo calcoli e visualizzi la somma di tutti gli interi positivi minori o uguali ad "a" § esempio: § a vale 9 § il programma dovrà visualizzare 20 § perché: 2+4+6+8=20 e 2<=9, 4<=9, 6<=9, 8<=9 § modificare l'esercizio in modo da sommare solo gli interi positivi pari minori o uguali ad "a" queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

do-while § sintassi: do { <corpo del do> } while (<condizione>); § le parentesi

do-while § sintassi: do { <corpo del do> } while (<condizione>); § le parentesi graffe si possono omettere se racchiudono una sola istruzione queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

do-while § come il while-do, permette di ripetere una sequenza di operazioni fintanto che

do-while § come il while-do, permette di ripetere una sequenza di operazioni fintanto che una condizione è vera ma, a differenza del whiledo, questa sequenza viene eseguita almeno una volta § esempio: § int a=0; // a vale 0 do{ System. out. println(a+", "); // visualizza a a=a+1; // incrementa a di 1 }while(a<=10); //ripeti il Do se a è <= 10 queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 7 § scrivere un programma Java che data una variabile intera "a" di

Esercizio 7 § scrivere un programma Java che data una variabile intera "a" di valore positivo maggiore di 2 calcoli "a!" (cioè "a fattoriale) § scrivere due versioni del programma: § una che utilizza il while-do § un'altra che utilizza il do-while § fattoriale: a!=a*(a-1)*(a-2)*. . . *2*1 § esempio: § a=4 § il programma deve visualizzare 24 § perché: a!=4!=4*3*2*1=24 queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Tipi non numerici: boolean § Valori § {false, true} § Operazioni § logiche (&&,

Tipi non numerici: boolean § Valori § {false, true} § Operazioni § logiche (&&, ||, !) § confronto (==, !=) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 8 – tipo boolean § date le variabili "a" e "b" intere e

Esercizio 8 – tipo boolean § date le variabili "a" e "b" intere e le variabili boolean: § § somma moltiplicazione sottrazione divisione § calcolare e visualizzare il risultato delle 4 operazioni base se e solo se le corrispondenti variabili booleane hanno valore "true" queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Tipi non numerici: char § Rappresentazione dei caratteri secondo lo standard Unicode § Lettere

Tipi non numerici: char § Rappresentazione dei caratteri secondo lo standard Unicode § Lettere di vari alfabeti arabo, armeno, bengalese, cirillico, greco, latino, . . . § Simboli diacritici, punteggiatura, matematici, tecnici, . . . § Operazioni § confronto (==, !=, >, >=, <, <=) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 9 – tipo char § un certo contratto di lavoro può essere di

Esercizio 9 – tipo char § un certo contratto di lavoro può essere di tipo 'a' o 'b' § se è di tipo 'a' lo stipendio mensile è di 1500€ § se è di tipo 'b' lo stipendio mensile è di 2000€ § assegnare ad una variabile char il tipo di contratto § a seconda del tipo di contratto assegnare ad una variabile intera l'ammontare mensile dello stipendio § visualizzare il reddito annuale complessivo queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Commenti § Servono a documentare un programma (o una sua parte) § Racchiusi da

Commenti § Servono a documentare un programma (o una sua parte) § Racchiusi da “/*” e “*/” § “//” inizia un commento che termina a fine riga § Usati sempre troppo poco! queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esempio max. java public class max { public static void main(String[] args) { int

Esempio max. java public class max { public static void main(String[] args) { int x, y; /* x e y sono di tipo "int"*/ x=1; y=10; if(x>y) //questo è un if-then-else! System. out. println("X"); else System. out. println("Y"); } } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Input da tastiera § per leggere dei dati da tastiera in Java si usa

Input da tastiera § per leggere dei dati da tastiera in Java si usa l'oggetto Scanner § all'inizio del programma (prima della dichiarazione della classe) bisogna scrivere: import java. util. *; § esempio, lettura di una variabile intera: Scanner sc = new Scanner(System. in); System. out. println("Inserire il valore di N: "); int n = sc. next. Int(); sc. close(); //l'oggetto di classe Scanner va chiuso quando non serve più queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Input da tastiera § permette di ricevere dei dati dall'utente per memorizzarli nelle variabili

Input da tastiera § permette di ricevere dei dati dall'utente per memorizzarli nelle variabili del programma § leggere un intero: § int I = sc. next. Int(); § leggere un double: § double D = sc. next. Double(); § leggere un boolean: § boolean B = sc. next. Boolean(); § leggere un char: [è un caso particolare!] § char C = sc. next(). char. At(0); queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 10 § scrivere un programma java che legge da tastiera i valori di

Esercizio 10 § scrivere un programma java che legge da tastiera i valori di 4 varibaili: § "i" di tipo intero, "d" di tipo double, "b" di tipo boolean e "c" di tipo char § il programma, dopo averli letti, deve visualizzare sullo schermo i valori delle 4 variabili queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Il tipo String § in realtà non è un tipo base ma un aggregato

Il tipo String § in realtà non è un tipo base ma un aggregato costituito da una sequenza di char § tuttavia lo studiamo insieme ai tipi base § si usa per trattare più di un carattere alla volta § una stringa di testo (cioè una variabile di tipo String) è una sequenza di caratteri (cioè una sequenza di char) § esempio: String s; //dichiarazione di una stringa s="Hello world!"; //assegnazione del valore System. out. println("valore di s: "+s); //visualizza s queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Inserimento di stringhe § per inserire il valore di una stringa da tastiera: Scanner

Inserimento di stringhe § per inserire il valore di una stringa da tastiera: Scanner scanner = new Scanner(System. in); String s; //dichiarazione di una stringa s=scanner. next(); // <---inserimento da tastiera! System. out. println("valore di s: "+s); //visualizza s queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 11 § scrivere un programma Java che: § chiede di inserire il Nome

Esercizio 11 § scrivere un programma Java che: § chiede di inserire il Nome § chiede di inserire il Cognome § visualizza la frase "Ciao <Nome> <Cognome>!" queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Confronto tra stringhe § l'uguaglianza (o differenza) tra stringhe non si controlla con ==

Confronto tra stringhe § l'uguaglianza (o differenza) tra stringhe non si controlla con == e != § l'uguaglianza si controlla con: § nome_stringa. equals("valore"); § controlla se la stringa nome_stringa vale "valore" § la differenza si controlla con: § !nome_stringa. equals("valore"); § controlla se la stringa nome_stringa non vale "valore" queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 12 § come nell'esercizio 11 richiedere l'inserimento di nome e cognome § dopo

Esercizio 12 § come nell'esercizio 11 richiedere l'inserimento di nome e cognome § dopo aver inserito nome e cognome visualizzare: "ti chiami <nome> <cognome>, è corretto? " § se l'utente inserisce "sì" terminare il programma § se l'utente inserisce qualsiasi cosa diversa da "sì" ricominciare l'inserimento di nome e cognome da capo queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Array § non è un tipo base, è un tipo aggregato contenente dati omogenei

Array § non è un tipo base, è un tipo aggregato contenente dati omogenei § un array, o vettore, è una sequenza indicizzata di elementi tutti dello stesso tipo § esempi: § un array di 10 interi: § 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 § un array di 5 char: § 'f', 'm', 's', 'g', 'p' § un array di 3 stringhe: § "casa", "auto", "albero" queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Array (o vettori) in Java § sintassi: <tipo> [] <nome. Array>; <nome. Array> =

Array (o vettori) in Java § sintassi: <tipo> [] <nome. Array>; <nome. Array> = new <tipo>[<numero. Elementi>]; § esempio: § int[] interi; //un array di interi § String[] parole; //un array di stringhe di testo § un array va inizializzato usando l'operatore new, specificando quanti elementi contiene: § interi=new int[10]; //l'array contiene 10 interi § parole=new String[3]; //l'array contiene 3 stringhe di testo queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Array (o vettori) in Java § si usano le parentesi quadre per accedere ai

Array (o vettori) in Java § si usano le parentesi quadre per accedere ai singoli elementi dell'array, numerati da zero in poi: § interi[0]=0; //il primo elemento dell'array vale zero § parole[2]="hello"; //il terzo elemento dell'array § si può sapere quanti elementi contiene un array usando la funzione "length": § interi. length; //restituisce la lunghezza dell'array: 10 § parole. length; //restituisce la lunghezza dell'array: 3 queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 13 § dichiarare e inizializzare un array di 10 interi § utilizzando un

Esercizio 13 § dichiarare e inizializzare un array di 10 interi § utilizzando un ciclo while, chiedere in input da tastiera uno alla volta i valori dei 10 interi § dopo che tutti e 10 i valori sono stati inseriti visualizzarli tutti di seguito, separati dalla virgola queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Inizializzazione diretta § abbiamo visto che l'operatore new permette di creare array di qualsiasi

Inizializzazione diretta § abbiamo visto che l'operatore new permette di creare array di qualsiasi lunghezza: § studenti=new String[75]; § esiste un altro modo per inizializzare un array definendo direttamente i valori che contiene: <tipo> [] <nome. Array> = new <tipo> [] {e 1, . . . , e. N}; § esempio: int [] array = new int[] {100, 200, 300}; § l'istruzione sopra dichiara un array e allo stesso tempo lo inizializza con tre valori; ciò equivale a: int [] array =new int[3]; array[0]=100; array[1]=200; array[2]=300; queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 14 § usando l'inizializzazione diretta dichiarare e inizializzare un array di 6 elementi

Esercizio 14 § usando l'inizializzazione diretta dichiarare e inizializzare un array di 6 elementi interi contenente i valori 10, 22, 15, 43, 1, 18 § leggere i valori dell'array con un ciclo while e visualizzarli queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 15 § dichiarare un array settimana di 7 elementi di tipo String contenente

Esercizio 15 § dichiarare un array settimana di 7 elementi di tipo String contenente i seguenti valori nell'ordine indicato: § lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica § visualizzare, grazie a un ciclo while, i giorni della settimana in ordine inverso, dalla domenica al lunedì queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Scambio di valore § problema: § date due variabili dello stesso tipo V 1

Scambio di valore § problema: § date due variabili dello stesso tipo V 1 e V 2 § scambiare i loro valori § soluzione: § § creare una terza variabile "di appoggio" Vapp, e poi copiare V 1 in Vapp (Vapp=V 1; ) copiare V 2 in V 1 (V 1=V 2; ) copiare Vapp in V 2 (V 2=Vapp) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 16 § scrivere un programma Java che: 1. 2. 3. 4. 5. date

Esercizio 16 § scrivere un programma Java che: 1. 2. 3. 4. 5. date due variabili dello stesso tipo richieda l'inserimento dei loro valori da tastiera visualizzi i loro valori effettui lo scambio tra i loro valori visualizzi i loro valori dopo lo scambio queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Algoritmi di ordinamento § semplice problema: § dato un array di N elementi (siano

Algoritmi di ordinamento § semplice problema: § dato un array di N elementi (siano numeri interi o con la virgola, o stringhe) in ordine qualsiasi § ordinare gli elementi in ordine crescente (o decrescente) § esistono numerose soluzioni: § § selection (o simple) sort bubble sort quick sort. . . queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Selection (Simple) sort § il più semplice algoritmo di ordinamento § idea: § cercare

Selection (Simple) sort § il più semplice algoritmo di ordinamento § idea: § cercare l'elemento più piccolo in tutto l'array § scambiarlo con l'elemento in prima posizione § partendo ora dal secondo elemento dell'array cercare di nuovo l'elemento più piccolo (ignorando quindi quello in prima posizione) § scambiarlo con l'elemento in seconda posizione § proseguire così fino all'esaurimento di tutto l'array queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 17 § scrivere un programma Java per: § definire ed inizializzare un array

Esercizio 17 § scrivere un programma Java per: § definire ed inizializzare un array A contenente elementi di un qualsiasi tipo (usare la tecnica degli esercizi 14 e 15) § visualizzare il contenuto di A § ordinare A usando l'algoritmo del Selection Sort § visualizzare il contenuto di A queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Metodi in Java § un metodo è una funzione che permette di riutilizzare lo

Metodi in Java § un metodo è una funzione che permette di riutilizzare lo stesso codice in più punti di un programma senza doverlo riscrivere ogni volta da capo § in Java esistono due tipi di metodi: § metodi statici § metodi di classe (li vedremo più avanti in queste slide) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Metodi statici § il main è un metodo statico § un metodo statico esiste

Metodi statici § il main è un metodo statico § un metodo statico esiste indipendentemente dall'esistenza di oggetti della classe all'interno della quale è stato definito § un metodo statico consiste in una sequenza di istruzioni che svolgono un determinato compito: § § ha un nome può avere dei parametri può restituire un valore può contenere uno o più un commenti § è "simile" ad una funzione in C/C++ queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Metodi statici § sintassi: // dichiarazione di un metodo: <visibilità> [static] <tipo> <nome> (<tipo

Metodi statici § sintassi: // dichiarazione di un metodo: <visibilità> [static] <tipo> <nome> (<tipo 1> <par 1>, . . . , <tipo. N> <par. N>) { // variabili locali. . . //istruzioni del metodo } § dove: § visibilità può essere: public, private, protected § se la parola static è presente si tratta di un metodo statico § il tipo può essere un qualunque tipo base o aggregato oppure il tipo speciale void § la lista dei parametri può essere vuota queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Parametri § un metodo (statico o di classe) può avere dei parametri § servono

Parametri § un metodo (statico o di classe) può avere dei parametri § servono a "passare" dei dati dall'esterno del metodo all'interno del metodo § per ogni parametro vanno specificati: § nome § tipo § all'interno del metodo il parametro viene gestito come una variabile locale queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Parametri § esempio: public class operazioni{ public static void add(int x, int y) {

Parametri § esempio: public class operazioni{ public static void add(int x, int y) { System. out. println("x+y="+(x+y)); } public static void sub(int x, int y) { System. out. println("x-y="+(x-y)); } public static void main(String[] args) { int n 1=10, n 2=15; add(n 1, n 2); sub(n 1, n 2); } } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Variabili locali § i metodi (statici e di classe) possono utilizzare variabili: § servono

Variabili locali § i metodi (statici e di classe) possono utilizzare variabili: § servono a memorizzare risultati intermedi § dichiarate nel corpo del metodo § durata temporanea: quando termina l'esecuzione del metodo, la variabile viene distrutta queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Variabili locali § esempio: public class prodotto{ public static void prezzo(double g, int euro_g)

Variabili locali § esempio: public class prodotto{ public static void prezzo(double g, int euro_g) { double tara=5; System. out. println("prezzo="+((g-tara)*euro_g)); } } § la variabile locale "tara" viene definita e quindi può essere usata dentro al metodo "prezzo" queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Variabili di ritorno § un metodo (che sia statico o di classe) può restituire

Variabili di ritorno § un metodo (che sia statico o di classe) può restituire un valore (o più valori) di ritorno § il valore di ritorno di un metodo viene usato dal metodo chiamante § va specificato il tipo del valore restituito dal metodo § se il metodo non torna nessun valore va specificato il tipo void § il main è un metodo che non ritorna nulla queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

public class Test { //questo metodo calcola il //quadrato di una variabile static int

public class Test { //questo metodo calcola il //quadrato di una variabile static int quadrato(int a) { int c = a*a; return c; } public static void main(String[] args) { int i = quadrato(12); System. out. println(i); } } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 18 § scrivere un metodo statico ipocalc che date le lunghezze dei cateti

Esercizio 18 § scrivere un metodo statico ipocalc che date le lunghezze dei cateti di un triangolo rettangolo calcoli la lunghezza dell'ipotenusa e la restituisca § chiamare il metodo statico ipocalc nel metodo main passando i valori dei cateti al metodo ipocalc e visualizzare la lunghezza dell'ipotenuta calcolata dal metodo queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 19 § nell'esercizio 17 (ordinamento di un vettore) definire un metodo statico ordina.

Esercizio 19 § nell'esercizio 17 (ordinamento di un vettore) definire un metodo statico ordina. Vettore con due parametri: § un vettore di interi § un intero che indica la lunghezza del vettore § spostare le istruzioni dell'algoritmo di ordinamento all'interno del metodo § chiamare il metodo per ordinare il vettore queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 20 § definire due metodi con lo stesso nome: conta. Vocali § il

Esercizio 20 § definire due metodi con lo stesso nome: conta. Vocali § il primo metodo conta. Vocali prende in input un vettore di char e la lunghezza del vettore § il secondo metodo conta. Vocali prende in input una stringa di testo § entrambi i metodi restituiscono il numero di vocali contenute nel vettore di char (il primo metodo) o nella stringa di testo (il secondo metodo) § per la stringa sfruttare i due metodi seguenti: § nome. Stringa. length(); che ritorna la lunghezza della stringa nome. Stringa § nome. Stringa. char. At(N); che ritorna il carattere alla posizione N all'interno della stringa nome. Stringa queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Convenzioni sui nomi § le classi hanno nomi che iniziano con la lettera maiuscola

Convenzioni sui nomi § le classi hanno nomi che iniziano con la lettera maiuscola § metodi, attributi e variabili hanno l’iniziale minuscola § se un qualsiasi nome è composto da più parole attaccate e senza spazi, l’iniziale di ogni parola successiva alla prima è maiuscola § int contatore. Numero. Occorrenze = 0; § class Centrale. Telefonica { } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 21 – anno bisestile § un anno è bisestile se è divisibile per

Esercizio 21 – anno bisestile § un anno è bisestile se è divisibile per 4 e inoltre: § qualora sia divisibile per 100 deve essere anche divisibile per 400 § 2004 è bisestile § perché è divisibile per 4 e non per 100 § 1900 non è bisestile § perché è divisibile per 4, è divisibile per 100 ma non per 400 § 2000 è bisestile § perché è divisibile per 4, per 100 e per 400 queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 21 – anno bisestile § seguendo le convenzioni sui nomi di Java §

Esercizio 21 – anno bisestile § seguendo le convenzioni sui nomi di Java § definire un metodo bisestile che § dato un anno A § restituisce true se l'anno A è bisestile § o false altrimenti queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Programmazione ad oggetti § paradigma di programmazione § basato sulla nozione di oggetto: §

Programmazione ad oggetti § paradigma di programmazione § basato sulla nozione di oggetto: § stato § un insieme di attributi che determinano in quale stato si trova in un certo momento l'oggetto § esempio: l'oggetto semaforo ha un attributo "colore" che può valere "rosso", "arancione" o "verde" § comportamento § un insieme di metodi che provocano la variazione degli attributi (e quindi dello stato) dell'oggetto § esempio: dopo che l'oggetto semaforo quando si trova nello stato "rosso" per 1 minuto passa allo stato "verde" queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Classi § una classe costituisce il “progetto” di un oggetto: § nome della classe

Classi § una classe costituisce il “progetto” di un oggetto: § nome della classe § nomi e valori iniziali degli attributi § nomi, e parametri metodi § una classe non è un tipo base ma un tipo aggregato contenente dati non omogenei § in java una classe si definisce con: § <visibilità> class <nome. Classe> {. . . } § dove la visibilità può essere private o pubblic § e la descrizione della classe è scritta tra le parentesi graffe queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Classi e oggetti § una classe è quindi un tipo § un oggetto è

Classi e oggetti § una classe è quindi un tipo § un oggetto è una variabile di un tipo classe § può essere utile ricordare il seguente parallelo tra tipi base e classi: tipo base classe variabile oggetto queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Oggetti § definita una classe, è possibile costruire uno o più oggetti di quella

Oggetti § definita una classe, è possibile costruire uno o più oggetti di quella classe § gli oggetti vengono detti “istanze” della classe § in Java per costruire un oggetto si usa l'operatore new: § new Nome. Classe ( ); § ogni nuovo oggetto “vive” all’interno della memoria del calcolatore § qui viene memorizzato il suo stato § oggetti differenti occupano spazi differenti nella memoria queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Tipi base Vs. classi § a livello intuitivo: § una classe è un tipo

Tipi base Vs. classi § a livello intuitivo: § una classe è un tipo "non-base" § un oggetto è una variabile che ha come tipo una classe (invece di un tipo base) tipo base variabile classe oggetto queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Tipi base Vs. classi § esempio: TIPO VARIABILE int numero CLASSE OGGETTO Automobile auto

Tipi base Vs. classi § esempio: TIPO VARIABILE int numero CLASSE OGGETTO Automobile auto § anche se un oggetto è comunque una variabile e che una classe è comunque un tipo (composto, non omogeneno) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Dichiarazione di una classe § sintassi: <visibilità> class <nome>{ <vis. Att 1> <tipo. Att

Dichiarazione di una classe § sintassi: <visibilità> class <nome>{ <vis. Att 1> <tipo. Att 1> <nome. Att 1>; . . . <vis. Att. N> <tipo. Att. N> <nome. Att. N>; <dichiarazione metodo 1>. . . <dichiarazione metodo. M> } § dove: § la visibilià può essere public, private o protected § gli attributi e i metodi sono tutti opzionali § le dichiarazioni dei metodi seguono la sintassi precedentemente riportata (vedere slide sui metodi statici) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Dichiarazione di un oggetto § sintassi: <classe> <oggetto>; <oggetto> = new <classe>(<parametri>); § dove:

Dichiarazione di un oggetto § sintassi: <classe> <oggetto>; <oggetto> = new <classe>(<parametri>); § dove: § la classe deve essere stata precedentemente dichiarata § i parametri sono opzionali, dipendono dalla definizione del costruttore della classe (vedere slide relative) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Operatore new § a differenza delle variabili di tipo base gli oggetti vanno esplicitamente

Operatore new § a differenza delle variabili di tipo base gli oggetti vanno esplicitamente creati prima di essere usati (o inizializzati) § tipo base: § int a=10; § definisce ed assegna un valore all'intero "a" § classe: § class. Name ABC; § definisce una variabile di classe "class. Name" § prima di poter usare la variabile ABC dovremo creare un nuovo oggetto di classe "class. Name": § ABC=new class. Name(); queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Attributi § sono delle variabili locali o interne all'oggetto § hanno un tipo ciascuna

Attributi § sono delle variabili locali o interne all'oggetto § hanno un tipo ciascuna (di base o classe) § hanno una visibilità: public o private o protected § esempio: § public class Automobile{ public String marca, modello; public int cilindrata; Passeggero[] pass; } § un oggetto di classe "Automobile" è descritto da una "marca" e un "modello" di tipo testuale, da una "cilindrata" di tipo numerico intero e da un array "pass" di oggetti di classe Passeggero queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Schema di una classe (attributi) § nello schema di una classe gli attributi vengono

Schema di una classe (attributi) § nello schema di una classe gli attributi vengono elencati prima dei metodi: Nome. Classe visibilità 1 tipo 1 nome. Attributo 1; . . visibilitàN tipo. N nome. Attributo. N; (metodi) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Uso degli attributi § all'interno della classe § vengono richiamati come se fossero variabili

Uso degli attributi § all'interno della classe § vengono richiamati come se fossero variabili locali § si possoo richiamare sia quelli pubblici che privati § all'esterno della una classe § si possono richiamare solo gli attributi pubblici § vengono richiamati facendo precedere il nome dell'attributo dal nome dell'oggetto e dal'operatore ". " (punto) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esempio Automobile String marca, modello; int cilindrata public class Automobile{ public String marca, modello;

Esempio Automobile String marca, modello; int cilindrata public class Automobile{ public String marca, modello; public int cilindrata; } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esempio § posso definire un oggetto della classe Automobile nel main di un'altra classe

Esempio § posso definire un oggetto della classe Automobile nel main di un'altra classe e accedere ai suoi attributi usando l'operatore ". " public class Concessionario{ public static void main (String [] args){ Automobile A; A=new Automobile(); A. marca="Opel"; A. modello="Corsa"; A. cilindrata="1200"; } } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Metodi (di classe) § abbiamo visto in precedenza cosa sono e come si usano

Metodi (di classe) § abbiamo visto in precedenza cosa sono e come si usano i metodi statici § la sintassi è la stessa dei metodi statici ma nel caso dei metodi di una classe la parola static va omessa § un metodo di classe è una "funzione" applicabile solo agli oggetti della classe in cui viene dichiarato § ha accesso a tutti gli attributi della classe (anche a quelli privati!) queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esempio Studente public int numero. Esami; supera. Esame numero. Esami=numero. Esami+1; public class Studente{

Esempio Studente public int numero. Esami; supera. Esame numero. Esami=numero. Esami+1; public class Studente{ public int numero. Esami; //attributo public void supera. Esame(){ //metodo numero. Esami=numero. Esami+1; } } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Metodi § un metodo (di classe), in generale, può operare liberamente sull’oggetto su cui

Metodi § un metodo (di classe), in generale, può operare liberamente sull’oggetto su cui viene invocato § § modificandone lo stato (cioè gli attributi) chiamando altri metodi effettuando calcoli restituendo risultati queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Dichiarazione di un metodo § sintassi: <visibilità> [static] <tipo> <nome>(<parametri>){. . . } queste

Dichiarazione di un metodo § sintassi: <visibilità> [static] <tipo> <nome>(<parametri>){. . . } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Eseguire un metodo § a partire dal nome di un oggetto di una certa

Eseguire un metodo § a partire dal nome di un oggetto di una certa classe, è possibile eseguire i relativi metodi con la notazione: § nome. Oggetto. nome. Metodo(. . . ); § nelle parentesi si indicano gli eventuali parametri § il metodo è definito da un insieme di istruzioni specificate nella classe § il chiamante (chi richiama il metodo) attende il completamento del metodo, poi prosegue la propria elaborazione queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Parametri § un metodo (di classe o statico) può avere parametri § il loro

Parametri § un metodo (di classe o statico) può avere parametri § il loro valore viene fornito dal chiamante § come le variabili, i parametri hanno un tipo § nel caso di parametri di tipo primitivo § all’interno del parametro viene memorizzata una copia del valore indicato dal chiamante § eventuali modifiche compiute dal metodo sul valore non si ripercuotono sul chiamante § se il tipo non è primitivo (una classe ad esempio) § il parametro contiene una copia del riferimento all’oggetto passato come parametro § le eventuali modifiche sullo stato dell’oggetto sono visibili al chiamante queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Schema di una classe (metodi) private String Nome; private boolean Attivo; cambia. Stato boolean

Schema di una classe (metodi) private String Nome; private boolean Attivo; cambia. Stato boolean Nuo Attivo=Nuovo. Stato; la freccia provieniente dall'esterno indica la presenza di parametri di un metodo vo. Stato (esterno della classe) Corso queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Schema di una classe (metodi) private String Nome; private boolean Attivo; cambia. Stato Attivo=Nuovo.

Schema di una classe (metodi) private String Nome; private boolean Attivo; cambia. Stato Attivo=Nuovo. Stato; boolean Nuo vo. Stato (esterno della classe) Corso public class Corso{ private String Nome; private boolean Attivo; public void cambia. Stato(boolean Nuovo. Stato){ Attivo=Nuovo. Stato; } } un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html queste slide sono

Valori di ritorno § i metodi (di classe o statici) possono restituire un valore

Valori di ritorno § i metodi (di classe o statici) possono restituire un valore § il tipo del valore ritornato viene dichiarato prima del nome del metodo § double calcola. Perimetro() { … } § il valore ritornato può essere assegnato ad una variabile § occorre che la variabile sia compatibile con il tipo del valore ritornato § alcuni metodi non ritornano nulla § in questo caso dichiarano di ritornare il tipo predefinito void § void set. Raggio(double r) { … } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Schema di una classe (metodi) private String Nome; private boolean Attivo; verifica. Stato Attivo

Schema di una classe (metodi) private String Nome; private boolean Attivo; verifica. Stato Attivo la freccia diretta verso l'esterno indica la presenza di un valore di ritorno per il metodo, in questo caso è il valore dell'attributo indicato sopra la freccia (esterno della classe) Corso queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Schema di una classe (metodi) private String Nome; private boolean Attivo; verifica. Stato Attivo

Schema di una classe (metodi) private String Nome; private boolean Attivo; verifica. Stato Attivo (esterno della classe) Corso public class Corso{ private String Nome; private boolean Attivo; public boolean verifica. Stato(){ return Attivo; } } un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html queste slide sono

Metodi di tipo set e get § metodi di tipo set § servono ad

Metodi di tipo set e get § metodi di tipo set § servono ad alterare lo stato dell’oggetto § di solito hanno parametri e non ritornano nulla § per convenzione hanno un nome tipo: § void set. Xyz(<parametri>); § metodi di tipo get § permettono di conoscere lo stato di un oggetto § di solito non hanno parametri e ritornano il valore letto § per convenzione hanno un nome tipo: § <tipo. Ritornato> get. Xyz(); queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Costruttore § metodo particolare che di solito (ma non necessariamente) inizializza gli attributi di

Costruttore § metodo particolare che di solito (ma non necessariamente) inizializza gli attributi di una classe § sintassi particolare: § ha lo stesso nome della classe § non indica nessun tipo di ritorno, non restituisce valori class Cerchio { double r; Cerchio() { r=1. 0; } } queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Costruttore e parametri § il costruttore assegna valori di default agli attributi § se

Costruttore e parametri § il costruttore assegna valori di default agli attributi § se ha dei parametri può usarli per assegnare dei valori particolari agli attributi § chi invoca il costruttore in questo caso deve fornire i parametri richiesti § una classe può avere molti costruttori § sono distinguibili attraverso il numero ed il tipo di parametri richiesti queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Costruttore e parametri class Poligono { double lato; int numero. Lati; Poligono(int n) {

Costruttore e parametri class Poligono { double lato; int numero. Lati; Poligono(int n) { numero. Lati=n; lato=1. 0; } Poligono p; } p= new Poligono(3); queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Attributi pubblici § se un attributo è pubblico: § si può accedere al valore

Attributi pubblici § se un attributo è pubblico: § si può accedere al valore di quell'attributo (leggerlo, modificarlo) da qualsiasi classe § esempio: § public class Bicicletta{ public String nome. Modello; . . . } public class Veicolo{ public Bicicletta B 1; Veicolo(){ B 1. nome. Modello="nessuno"; } } file: Bicicletta. java file: Veicolo. java queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Attributi privati § se un attributo è privato: § si può accedere al valore

Attributi privati § se un attributo è privato: § si può accedere al valore di quell'attributo (leggerlo, modificarlo) solo nella classe di cui fa parte § esempio: § public class Bicicletta{ file: Bicicletta. java private String nome. Modello; public void set. Nome. Modello(String nome){ nome. Modello=nome; } } public class Veicolo{ public Bicicletta B 1; Veicolo(){ B 1. nome. Modello="nessuno"; } } file: Veicolo. java queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Attributi privati § se un attributo è privato: § si può accedere al valore

Attributi privati § se un attributo è privato: § si può accedere al valore di quell'attributo (leggerlo, modificarlo) solo nella classe di cui fa parte § esempio: § public class Bicicletta{ file: Bicicletta. java private String nome. Modello; public void set. Nome. Modello(String nome){ nome. Modello=nome; } } public class Veicolo{ public Bicicletta B 1; Veicolo(){ B 1. set. Nome. Modello("nessuno"); } } file: Veicolo. java queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 22 § definire una classe Studente con i seguenti attributi pubblici: § nome,

Esercizio 22 § definire una classe Studente con i seguenti attributi pubblici: § nome, cognome, matricola (testuali) § anno di iscrizione e numero di esami superati (numerici) § definire: § un costruttore che, dati nome, cognome e matricola dello studente, assegni di default ogni nuovo studente al primo anno con zero esami superati § un metodo rinnova. Iscrizione() che aumenta di 1 il numero di anno di iscrizione dello studente § un metodo esame. Superato() che aumenta di 1 il numero di esami superati dello studente § in un file separato definire il main ed istanziare uno o più oggetti di classe studente e testare il corretto funzionamento di costruttore e metodi queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 23 § nell'esercizio 22 rendere privati gli attributi nome, cognome e matricola §

Esercizio 23 § nell'esercizio 22 rendere privati gli attributi nome, cognome e matricola § definire dei pubblici metodi per leggere il contenuto degli attributi privati: § get. Nome() § get. Cognome() § get. Matricola() § modificare di conseguenza il main in modo da usare i 3 metodi definiti sopra queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Array di oggetti § come con i tipi primitivi anche con le classi si

Array di oggetti § come con i tipi primitivi anche con le classi si possono definire degli array: § Automobile[] parco. Auto; § la variabile parco. Auto è un array di oggetti di classe Automobile § l'inizializzazione si fa come per i tipi primitivi: § parco. Auto=new Automobile[10]; § la variabile parco. Auto è un array di 10 oggetti di classe Automobile § ma trattandosi di oggetti ogni singolo elemento dell'array va poi creato a parte: while (c<10){ parco. Auto[c]=new Automobile(); c=c+1; } slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html queste

Esercizio 24 si consideri la seguente interazione: Quanti professori? 2 Inserimento professore numero 0:

Esercizio 24 si consideri la seguente interazione: Quanti professori? 2 Inserimento professore numero 0: Nome? maurizio Congome? mancini Email? maurizio. mancini@unige. it Dipartimento: dibris Anzianità: 8 Inserimento professore numero 1: Nome? mario Congome? rossi Email? mario. rossi@unige. it Dipartimento: dime Anzianità: 2 Quanti studenti? 3 Inserimento studente numero 0: Nome? luigi Congome? bianchi Email? l. b@email. it Matricola: 123456 Inserimento studente numero 1: Nome? giuseppe Congome? verdi Email? giu. ver@gmail. com Matricola: 1111 Inserimento studente numero 2: Nome? antonio Congome? gialli Email? a. gialli@yahoo. com Matricola: 9999999 ***Università Professori Nome: maurizio Cognome: mancini Email: maurizio. mancini@unige. it Dipartimento: dibris Anzianità: 8 Nome: mario Cognome: rossi Email: mario. rossi@unige. it Dipartimento: dime Anzianità: 2 Studenti Nome: luigi Cognome: bianchi Email: l. b@email. it Matricola: 123456 Anno di iscrizione: 1 Esami sostenuti: 0 Nome: giuseppe Cognome: verdi Email: giu. ver@gmail. com Matricola: 1111 Anno di iscrizione: 1 Esami sostenuti: 0 Nome: antonio Cognome: gialli Email: a. gialli@yahoo. com Matricola: 9999999 Anno di iscrizione: 1 Esami sostenuti: 0 queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html

Esercizio 25 § scrivere un programma Java che permetta di inserire professori e studenti

Esercizio 25 § scrivere un programma Java che permetta di inserire professori e studenti di un'università e poi li visualizzi § ogni professore o studente: § ha nome, cognome, indirizzo email § ogni studente: § ha matricola, anno di iscrizione, esami sostenuti § ogni professore: § appartiene ad un dipartimento, ha una certa anzianità § per le caratteristiche comuni (nome, cognome, email) definire un'unica classe "anagrafica" da usare sia per i professori che per gli studenti queste slide sono un'elaborazione delle slide di M. Mirto: http: //sara. unisalento. it/~mirto/beniculturali/page 3. html