Implementazione di uno Stack (Pila) tramite array di oggetti Object

  1. Studiare la classe Stack delle librerie di Java

    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


    Creare una classe di prova contenente un main che usa questa classe ed esegue correttamente le seguenti istruzioni:

       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());

  2. Implementare la classe MyStack

    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:

    La classe implementa i seguenti metodi:

  3. Gestire le eccezioni

    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.