Pilhas: Meu código se encaixa nesse conceito?

Olá amigos, a alguns dias atrás postei aqui algumas duvidas sobre pilhas !!! Já que não tivesse aula sobre o assunto ainda e a maioria do conteúdo que encontrei ainda é um pouco vago, resolvi começar desenvolvendo um código usando apenas vetor sem utilizar a classe Stack, porém me surgiu uma duvida ao terminar o código: Será que ele se encaixa no conceito que envolve pilha? Vou deixa-lo abaixo para que possam analisa-lo:

[code]import javax.swing.JOptionPane;

public class Principal {

/**
 * @By: Robson Barreto 
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub
   String elemento[]= new String [10];
   String resultado ="";
   int op;

   do{
     op=Integer.parseInt(JOptionPane.showInputDialog("Escola uma opção"+"\n1-Empilhar"+"\n2-Desempilhar"+"\n0-Sair"));

    switch(op){
      case 1:
       for(int i=0;i<10;i++){
	     elemento[i]=JOptionPane.showInputDialog("Digite o elemento"+" "+(i+1));
	     if(elemento[i].isEmpty()){
		    JOptionPane.showMessageDialog(null,"Elemento não pode ser nulo!");
		    System.exit(0);
	     }
        }
        for(int i=0;i<10;i++){
          resultado=resultado+((i+1)+" "+elemento[i])+"\n";
          JOptionPane.showMessageDialog(null,"Sua pilha está assim: "+"\n"+resultado);     

        } 
      break;
      case 2:
        for(int i=10-1;i>=0;i--){
          resultado="";
	      resultado=resultado+((i+1)+" "+elemento[i])+"\n";
          JOptionPane.showMessageDialog(null,"Removendo elemento: "+"\n"+resultado);
        }
      break;

     default:
       JOptionPane.showMessageDialog(null,"Opção invalida");
     break;

     case 0:
      JOptionPane.showMessageDialog(null,"Finalizando programa...");
    }
 }while(op!=0);

}
}[/code]
Explicando um pouco sobre o código acima: no momento esse código está pedindo 10 nomes(um vetor com 10 posições) e impedindo que alguma posição fique nula usando a função isEmpty, logo após ele exibe os elementos em suas devidas posições.Agora vem a parte que ficou meio(ou muito) vaga: Procurei como remover elementos de uma vetor porém os textos que encontrei não me fizeram entender como isso pode ser feito, então nesse caso essa parte do código exibe a mensagem removendo elemento: + posição do elemento e seu valor( do elemento que está no topo até o elemento que está na base da pílha) !!! Esse meu código se encaixa em pilhas? Como posso melhora-lo? E a ultima pergunta: O uso da classe Stack é a melhor opção para demonstrar uma pilha em funcionamento? Obrigado amigos!!!

Para entender o conceito de pilhas basta entender como vc empilha coisas como livros por exemplo. Vc coloca um, dpois outro e dpois outro… Passado algum tempo se vc quiser tirar um livro da pilha vc precisa tirar o ultimo, dpois o penultimo e assim vai. O primeiro elemento passa a ser o ultimo a ser retirado da pilha.
Vc está programando em java portanto use e abuse de orientação a objetos. Crie uma classe pilha e inclua métodos nela. Não faça tdo no main isso torna seu programa um pouco ilegível (algumas pessoas vêm POO como coisa do demônio). Se vc tivesse fazendo em c ou pascal por exemplo iria falar pra vc criar as funções.

Aqui vai um esboço de como deve ficar sua classe:

[code]public class Pilha{
private String str = new String[10];
private int indiceAtual;

  /*Retorna true se a pilha estiver vazia e false se tiver pelo menos um elemento*/
  public boolean isEmpty(){

  }

  /**Desempilha, retorna o último elemento da pilha*/
  public String pop(){
  
  }
  
  /**Empilha/adiciona um elemento na pilha*/
  public void push(String elemento){
  }

}
[/code]

Ai você pode criar uma outra classe chamada principal q usa um objeto da classe Pilha (ou pode incluir um método main na classe Pilha). Ficaria assim:

public class Principal{
      public static void main (String args[]){
            Pilha pilha = new Pilha();
            pilha.push("Primeiro elemento");
            pilha.push("Segundo");
            System.out.println(pilha.pop());
      }
}

Fazendo desta forma você pode melhorar o código para passar um integer para o construtor criar um vetor com x possições.
Não tenho como compilar o código aqui por isso lhe mandei apenas um esboço. Se vc digitar no google “estruturas de dados pilhas” vc encontrará um monte de implementações a maioria delas em c mas também encontrará algumas em java.