Fondamenti di Informatica 1 - canale 89 - a.a. 2007 - 2008 Simulazione della Prova di Programmazione - 7.12.2007 LISTA ===== Le interfacce seguenti definiscono il Tipo di dati Astratto Lista: public interface List //--ADT Lista { /** verifica se la lista e' vuota @return true se la lista e' vuota, false altrimenti */ boolean isEmpty(); /** restituisce il numero di elementi contenuti nella lista @return numero di elementi contenuti nella lista */ int size(); /** restituisce un iteratore su questa lista. @return iteratore su questa lista */ ListIterator getIterator(); } public interface ListIterator // --Iteratore della Lista { /** restituisce true se questo iteratore ha altri elementi @return true se l'iteratore ha altri elementi */ boolean hasNext(); /** ispeziona il prossimo elemento nella lista @return il prossimo elemento nella lista @throws java.util.NoSuchElementException se non e' presente un prossimo elemento nella lista */ Object next(); /** inserisce l'elemento specificato nella lista. L'elemento e' inserito immediatamente prima del prossimo elemento che sarebbe restituito da next @param x l'elemento da inserire */ void add(Object x); /** rimuove dalla lista l'ultimo elemento ispezionato dal metodo next. @throws IllegalStateException se non e' stato precedentemente invocato il metodo next. */ void remove(); } Il candidato scriva la parte privata e completi la parte pubblica della classe public class LL implements List { // parte privata ... public LL() {...} } dove il costruttore inizializza una lista vuota. Scrivere successivamente la classe eseguibile di prova ProvaLL.java che esegue le seguenti operazioni: - definisce un esemplare di lista - acquisisce da file di testo un insieme di token e li inserisce nella lista. I token sono stringhe separate da caratteri "whitespaces". Il nome del file e' passato come argomento da riga di comando - effettua la stampa del numero di elementi contenuti nella lista preceduto dal messaggio "NUMERO DI ELEMENTI NELLA LISTA PIENA: " - ispeziona ed effettua la stampa degli elementi della lista, uno per riga, preceduta dal messaggio "*** ELENCO DEGLI ELEMENTI NELLA LISTA ***" - rimuove gli elementi dalla lista, inviando precedentemente il messaggio "*** RIMOZIONE DEGLI ELEMENTI NELLA LISTA ***" - effettua nuovamente la stampa del numero di elementi della lista preceduta dal messaggio "NUMERO DI ELEMENTI NELLA LISTA VUOTA: " In sede di correzione il codice sara' provato con i comandi: $rm *.class $javac ProvaLL.java $java ProvaLL elementi.txt dove elementi.txt e' il file di testo allegato. Nella realizzazione delle classi LL e ProvaLL non e' lecito: - aggiungere elementi non privati. - usare classi della Java Platform API, ad eccezione di quelle dei pacchetti java.lang e java.io e delle classi java.util.Scanner e java.util.NoSuchElementException. Alla fine della prova il candidato lascera' nella directory di lavoro i seguenti file: LL.java, ProvaLL.java, List.java, ListIterator.java ed elementi.txt. I file LL.java e ProvaLL.java dovranno contenere come prima riga un commento con nome e cognome del candidato, matricola, data, numero della postazione. FONDAMENTI DI INFORMATICA I (gruppo 8-9) Cognome e Nome ___________________________________ Matricola ___________________________________ Corso di Laurea ___________________________________ Postazione ___________________________________ Consegno l'elaborato che consiste dei seguenti file: _____________________________________________________ Firma _______________________________ Non consegno l'elaborato e mi ritiro dall'esame. Firma _______________________________