Fondamenti di Informatica 1 - gr. 89 Prova di Programmazione del 16.07.2008 a.a. 2007 - 2008 PILA E ORDINAMENTO ==================== L'interfaccia CStack, allegata, definisce un contenitore di elementi comparabili con modalita' di accesso LIFO (pila): public interface CStack // --Interfaccia CStack { boolean isEmpty(); int size(); void push(Comparable x); Object pop() throws EmptyStackException; } dove: - boolean isEmpty() restituisce true se la pila e' vuota, false altrimenti; - int size() restituisce il numero di elementi presenti nella pila; - void push(Comparable x) inserisce l'elemento comparabile x in testa alla pila; - Object pop(): lancia l'eccezione EmptyStackException se la pila e' vuota, altrimenti restituisce, estraendolo, l'elemento in cima alla pila. La seguente classe S realizza l'interfaccia CStack: public class S implements CStack // --Pila di Elementi Comparabili { // parte privata ... // parte pubblica public S(); public Object[] toArray() {...} public Object[] toSortedArray() {...} } dove: - il costruttore inizializza una pila vuota; - Object[] toArray() restituisce in un array gli elementi della pila in sequenza LIFO, in modo che all'indice zero sia posizionato l'elemento in cima alla pila; - Object[] toSortedArray() restituisce gli elementi della pila in un array ordinato in senso crescente, secondo il loro ordine naturale. La classe TestS, di test della classe S, definisce il solo metodo main che - legge da standard input parole (sequenze di caratteri separate da spazi o fine riga) e le inserisce in un oggetto di tipo S - stampa il numero di elementi contenuti nello stack - visualizza a standard output il contenuto dell'oggetto di tipo S (toArray()) - visualizza a standard output il contenuto dell'oggetto di tipo S ordinato (toSortedArray()) - vuota lo stack - stampa il numero di elementi contenuti nello stack Il candidato scriva la parte privata e completi la parte pubblica delle classi EmptyStackException, S e TestS. In sede di correzione il codice sara' provato con i comandi: $rm *.class $javac TestS.java $java TestS < testo.txt dove testo.txt e' il file allegato. Nella realizzazione delle classi S e TestS non e' lecito: - aggiungere elementi, se non privati; - usare classi della libreria standard, ad eccezione di quelle dei package java.lang e java.io e delle classi java.util.Scanner. Alla fine della prova il candidato lascera' nella directory di lavoro i file eventualmente prodotti: EmptyStackException.java, S.java, TestS.java e i file allegati dal docente: CStack.java, testo.txt. I file prodotti dal candidato dovranno contenere come prima riga un commento con nome e cognome, matricola, data, numero della postazione. ------------------------------------------------------------------------------- Cognome ______________________________ Nome _________________________________ Matricola _______________ Corso di Laurea _______________ Postazione __________ ------------------------------------------------------------------------------- Consegno l'elaborato che consiste dei seguenti file (contrassegnare con X): [] S.java [] TestS.java Firma ________________________________ [] EmptyStackException.java ------------------------------------------------------------------------------- Non consegno l'elaborato e mi ritiro dall'esame. Firma ________________________________ -------------------------------------------------------------------------------