Fondamenti di Informatica T-1 Classi & vettori 2 Array • Un vettore (array) è un insieme ordinato, di dimensione fissa, di oggetti dello stesso tipo. • Esempio: array capace di contenere al più 10 numeri interi • int[] arrayInteri = new int[10]; • La dimensione dell’array è definita all’atto della inizializzazione (con la new) e memorizzata nell’attributo length. Ad esempio l’array ‘arrayInteri’ appena creato può contenere non più di 10 elementi ! • Non si può estendere dinamicamente un array (bisogna ricrearlo). Per fare questo esistono delle classi apposite che vedremo più avanti nel corso. Fondamenti di Informatica T-1 Francesco Casimiro 3 Array • L'array è esso stesso un oggetto, definibile e utilizzabile come variabile: <tipo>[] <nome> = new <tipo>[<dimensione>] • Per accedere agli elementi: <nome>[<indice>] • Esempio, inserire un intero di valore 3 in posizione 0: arrayDiInteri[0]=3; • Un array è sempre creato vuoto: ogni posizione, se l'array contiene oggetti o stringhe, contiene il valore "null", altrimenti contiene il valore 0 (o il valore false nel caso di un array di boolean). Fondamenti di Informatica T-1 Francesco Casimiro 4 Esempio: la biblioteca • Realizzare una applicazione che: ▫ Contenga un array di stringhe che rappresentano dei libri ▫ Chieda all’utente un titolo di libro ▫ Verifichi se il libro è presente nell’elenco ▫ In caso affermativo, stampi a video la posizione (indice dell’array) in cui è il titolo stato trovato ▫ In caso negativo, stampi “Libro non trovato” Fondamenti di Informatica T-1 Francesco Casimiro 5 Esempio: il libretto universitario • Scrivere un programma che permetta di memorizzare e visualizzare informazioni sugli esami (per un totale di 22 esami) di uno studente. • Dello studente, sono memorizzati il nome, il cognome, la matricola e l'elenco degli esami. • Di ogni esame, si memorizza il nome, il docente, il numero di crediti e il voto. • La classe Studente deve anche fornire un metodo per il calcolo della media pesata, e un metodo per l'aggiunta di un nuovo esame sostenuto. • Scrivere un main in cui si crei un oggetto Studente, si aggiungano alcuni esami, si stampi a video la media, si mostri la lista degli esami e l'esame con il voto più alto. Fondamenti di Informatica T-1 Francesco Casimiro 6 Esempio: il libretto universitario Nome della classe Variabili di istanza Metodi pubblici Fondamenti di Informatica T-1 Francesco Casimiro 7 Esempio: il libretto universitario • Scaricare http://wwwdb.deis.unibo.it/courses/FIT1LZ/LABORATORIO/esercizi/20 12-13/es6.jar • Importare la libreria nel progetto: ▫ Click con il tasto destro sul progetto, "Build path" "Add External Archives" ▫ Selezionare la libreria scaricata • Creare una classe Main (in un nuovo package), creare il main e inserire la riga di codice Finestra f = new Finestra(); Fondamenti di Informatica T-1 Francesco Casimiro 8 Esempio: il libretto universitario • Una versione più "moderna" Fondamenti di Informatica T-1 Francesco Casimiro 9 Esercizio: L'autostrada A31 • Realizzare un programma per il pagamento del pedaggio sull’autostrada A31. • Ogni autostrada ha un nome ed è composta da un certo numero di caselli (per la A31, 6 caselli). Tutte le autostrade hanno lo stesso costo per km (ad esempio, 0.10). • Ogni casello è caratterizzato da un nome e dalla distanza dal casello precedente. • La classe Autostrada deve esporre metodi per: ▫ Calcolare la distanza totale tra due caselli (dati gli indici). ▫ Calcolare il costo del pedaggio, conoscendo l'indice del casello di partenza e quello del casello di arrivo. ▫ Stampare la lista dei caselli in un percorso. • Per semplicità: il senso di percorrenza dell’autostrada è unico. Fondamenti di Informatica T-1 Francesco Casimiro 10 Esercizio: l'autostrada A31 LONGARE - PIOVENE ROCCHETTE Indicazione Distanza Piovene Rocchette 0 Thiene-Schio 9.2 Dueville 9.9 Vicenza Nord 8 Torino-Trieste 8.5 Longare-Montegaldella 6.5 Nella classe principale, creare l'autostrada a31 con 6 caselli, creare e inserire i 6 caselli indicati sopra, e stampare la distanza, il costo e il percorso da Dueville a Longare-Montegaldella Fondamenti di Informatica T-1 Francesco Casimiro 11 Estensioni • Provare a modificare il programma in modo da valutare entrambi i sensi di percorrenza (attenzione ai metodi per calcolare la distanza tra due caselli e stampare il percorso). • Modificare i tre metodi della classe Autostrada, in modo da fornire, come parametri di ingresso, due oggetti Casello invece che gli indici dei caselli nell'array. Fondamenti di Informatica T-1 Francesco Casimiro