Questão
ID 1720600Disciplina: Tecnologia da Informação
Assunto: Pilhas
Ano: 2022 Banca: UFES - Universidade Federal do Espírito Santo Órgão: Universidade Federal do Espírito Santo
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;
import java.util.List;
class PilhaA<T> extends ArrayList<T> {
public void empilhar(T elem) {
// TODO: implementar.
}
public T desempilhar() {
// TODO: implementar.
return null;
}
}
class PilhaB<T> {
private List<T> elems = new ArrayList<>();
public void empilhar(T elem) {
// TODO: implementar.
}
public T desempilhar() {
// TODO: implementar.
return null;
}
}
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