/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package exemplopilha;

import java.util.ArrayList;

/**
 *
 * @author 42071420684
 */
public class PilhaHerdada<T> extends ArrayList<T> implements IPilha<T> {

  private int top_ = 0;        // top aponta para primeira posicao livre

  //------------------------------------------------------------
  // Construtores
  //------------------------------------------------------------ 
  public PilhaHerdada() {
    super();
  }
  public PilhaHerdada(int initialCapacity) {
    super(initialCapacity);
  }

  //------------------------------------------------------------
  // Iterface IPilha
  //------------------------------------------------------------
  public boolean vazia() {
    return top_ == 0;
  }

  public T top() throws PilhaException {
    if (vazia()) {
      throw new PilhaException("Pilha vazia: tentativa de obter o topo");
    } else {
      return get(top_-1);
    }
  }

  public T pop() throws PilhaException {
    if (vazia()) {
      throw new PilhaException("Pilha vazia: tentativa de desempilhar");
    } else {
      return (get(--top_));
    }
  }

  public void push(T val) throws PilhaException {
    add(top_++, val);
  }
}
