Crie um novo projeto de código em sua IDE preferida e copie os códigos de interfaces de Colecoes
, Pilha
, Fila
e Lista
desenvolvidos no repositório de códigos da disciplina.
- Escreva especificação javadocs para todos os métodos das interfaces importadas do código do professor.
- Crie uma nova classe denominada
PilhaIntegerCSV
, que implementa a interfacePilha<Integer>
. Essa classe utiliza umaString
para armazenar os valores dos objetos empilhados, separados por vírgulas. Um objeto empilhado é tranformado em string e concatenado à string CSV (Comma-separated Values) da coleção. Quando desempilhado, a substring do objeto em CSV é removida e tornada objeto novamente.
Por exemplo, se empilharmos os Integers 20, 11 e 48, terminaremos com o armazenamento CSV igual a "20,11,48"
. Ao desempilhar um elemento, a substring ",48"
é removida de CSV, que se torna "20,11"
, e o método retona o Integer 48
.
- Utilizando lógica similar à
PilhaIntegerCSV
, implemente uma nova classe denominadaFilaIntegerCSV
, que implementa a interfaceFila<Integer>
.
- Ainda se pautando pela lógica de
PilhaIntegerCSV
, implemente uma nova classe denominadaListaIntegerCSV
, que implementa a interfaceLista<Integer>
.
- Faça testes para as TDAs implementadas, para mostrar que estão funcionando. Todos os métodos implementados de cada TDA devem ser exercitados.
- Faça uma análise de complexidade assintótica de desempenho para cada uma das três TDAs implementadas. Compare o desempenho assintótico dessas implementações com as implementações com nós-encadeados e arranjos, feitas em sala de aula.
- Desafio opcional. É possível generalizar essas classes de coleções implementadas, para que armazenem objetos de quaisquer tipos de dados. Para tal, as classes precisam receber uma
Function<String, T> valueOf
, tal que, para qualquer instância de objeto do tipoT obj
, a expressãoobj.equals(valueOf.apply(obj.toString()))
é sempre verdadeira. Com essa informação, implemente:
PilhaCSV<T>
FilaCSV<T>
ListaCSV<T>
Entregue os códigos .java do projeto, sem empacotar em formatos de compressão. Trabalho em duplas, lembre-se de identificar os nomes da dupla. Comentários da turma