- Fundamentos de ProgramaçãoEstruturas de DadosEstrutura de Dados: Pilha
- LinguagensJava
- Paradigmas de ProgramaçãoOrientação a ObjetosOrientação a Objetos: Classes e Objetos
- Paradigmas de ProgramaçãoOrientação a ObjetosOrientação a Objetos: Herança
Considere o seguinte código Java, escrito em um arquivo chamado TestePilha.java, que traz um rascunho (código incompleto) de duas implementações para uma estrutura de dados do tipo pilha:
|
import java.util.ArrayList; class PilhaA<T> extends ArrayList<T> { class PilhaB<T> { public void empilhar(T elem) { public T desempilhar() { |
Considerando-se o código acima, analise as afirmativas a seguir:
I. Ambas as implementações baseiam-se na classe ArrayList, que implementa uma estrutura de dados do tipo lista e pertence à API do Java, como parte do pacote java.util.
II. Os métodos empilhar() e desempilhar() devem ser implementados de modo a, respectivamente, inserir um elemento no início da lista e remover um elemento do final da lista, como é característico da pilha.
III. A implementação PilhaA reutiliza a classe ArrayList por meio do recurso da herança, enquanto a classe PilhaB o faz por meio de composição.
IV. A implementação PilhaA é menos adequada, pois quebra o contrato da estrutura de dados pilha, ao permitir que seja inserido um elemento no meio da pilha por meio do método add().
É CORRETO o que se afirma em