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.
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).
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
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.
6 Esempio: il libretto universitario Nome della classe Variabili di istanza Metodi pubblici
7 Esempio: il libretto universitario Scaricare http://www- db.deis.unibo.it/courses/fit1- LZ/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();
8 Esempio: il libretto universitario Una versione più "moderna"
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.
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
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.