Tipo astratto Pila

Il tipo astratto Pila rappresenta sequenze di elementi di una tipo prefissato T che vengono gestite con la politica LIFO (dall'inglese ``last in first out''), ossia l'ultimo elemento entrato è il primo ad uscire.

TipoAstratto Pila(T)
Sorte
  
Pila
: dominio di interesse del tipo
T
: dominio degli elementi delle pile
Funzioni
  
pilaVuota() $ \mapsto$  Pila
 
pre: nessuna
post: RESULT è la pila vuota
estVuota(Pila p) $ \mapsto$  Boolean
 
pre: nessuna
post: RESULT è true se p è il valore corrispondente alla pila vuota, false altrimenti
push(Pila p, T e) $ \mapsto$  Pila
 
pre: nessuna
post: RESULT è la pila ottenuta dalla pila p inserendo l'elemento e, che ne diventa l'elemento affiorante
pop(Pila p) $ \mapsto$  Pila
 
pre: p non è la pila vuota
post: RESULT è la pila ottenuta dalla pila p eliminando l'elemento affiorante
top(Pila p) $ \mapsto$  T
 
pre: p non è la pila vuota
post: RESULT è l'elemento affiorante della pila p
FineTipoAstratto

Si noti che Pila è un tipo astrazione di valori collezione. Quindi occorre effettuare l'overriding equals.

Nel caso della realizzazione funzionale non è necessario implementare clone. Infatti, gli oggetti sono immutibili.