La classe Stack (vedi libro e manuale) usa un array Object[] per realizzare il dato astratto
"pila"; vengono implementati i metodi push e pop.
Per capire il comportamento di una pila, vedere il seguente esempio:
null | null | null | null | null | ||||
null | null | null | null | null | ||||
null | -> push("A") -> | null | -> push("B") -> | null | -> pop() -> | null | -> push("C") -> | null |
null | null | B | null | C | ||||
null | A | A | A | A |
Stack s = new Stack ();
s.push("A"); // inserisce una stringa.
// Nota che un oggetto della
// classe String, è anche
// un oggetto della
// classe Object.
s.push("B");
s.push("C");
// il ciclo seguente stampa C, B e A, eliminandoli dalla pila
while (s.size() > 0)
System.out.println(s.pop());
La classe MyStack usa, come la classe di libreria Java vista,
un array Object[] per realizzare il dato astratto "pila".
La classe utilizza le seguenti variabili d'istanza:
Nella classe MyStack i metodi che possono fallire devono sollevare eccezioni, ad es.:
throw new MyStackEmptyException(...) quando si riscontra un tentativo di accedere agli elementi di uno stack vuoto.
Occorre quindi definire delle nuove eccezioni (tante quante i diversi tipi di
errori possibili) e sollevarle anziché utilizzare i valori di ritorno
per segnalare errore.
Osservazione: per fare funzionare correttamente la classe di test proposta in seguito, chiamare
le eccezioni nel modo seguente:
Per provare la classe MyStack che avete implementato, usare la classe MyStackTest.