Você tem acompanhado a quantidade de queimadas que temos visto ultimamente? Com estes acontecimentos, alguns pesquisadores estão cada vez mais relatando dados sobre as queimadas. Nesta prova-trabalho você deverá ler os dados das queimadas disponível no Google Classroom. Um arquivo contém as informações do data set e outro arquivp contém o data set propriamente dito.
Você deverá criar um código OO que armazene as informações sobre cada queimada. Deverá portanto fazer a leitura do data set instanciando os objetos. As queimadas são classificadas de acordo com a área de acontecimento, veja o diagrama abaixo:
Para cada queimada, você deverá armazená-la em um Pilha do mês correspondente. Sendo portanto 12 pilhas existentes no seu código. Você se lembra do Tipo Abstrato de Dados Pilha? Pilha é uma estrutura de dados do tipo LIFO(Last-In-First-Out) em que o último elemento a entrar é o primeiro a sair. Por definição as operações básicas de uma pilha são empilhar e desempilhar. Nesta prova-trabalho você não poderá usar Queue existente de Java, implementando sua própria.
Quando tiver todos os objetos em memória separados pelas pilhas mensais, faça um relatório (pode ser um print) do resultado encontrado por mês. Observe se algo a mais pode ser classificado ou avaliado nos seus dados.
a) Uso de uma interface PilhaTAD que garanta as duas operações básicas de empilhar e desempilhar como comportamento da classe da letra 'b'.
b) Uso de uma classe Pilha para representar o TAD e que implemente a interface da letra 'a'.
c) Uso de exceções próprias que podem ocorrer na classe Pilha.
d) Uso correto de visibilidade dos atributos, métodos, de contrutores, interface, herança, polimorfismo e classe abstrata, se forem o caso.
e) Uso de alocação dinâmica.
f) Extra: Registro das exceções que ocorrerem em arquivo log(txt) e relatório em arquivo.
Classe responsável por gerenciar o ArrayList de Pilhas de cada mês. Ela segue um padrão de projeto chamado Singleton. Este padrão garante a existência de apenas uma instância de uma classe, mantendo um ponto global de acesso ao seu objeto.
Superclasse responsável por mapear os parâmetros das queimadas de maneira geral. Suas Subclasses são: BurnX1to3, BurnX4to6 e BurnX7to9.
Cada uma é uma subclasse de Burn.java. Sua condição de construção é a coordenada X estar no intervalo correto descrito em seu nome.
Exceção que trata a tentativa do usuário remover um item de uma lista vazia. Ela utilziada no método pop() da classe Stack.
Classe responsável por ler e escrever os arquivos csv do projeto. Ela também define os tipos de relatório a serem gerados de acordo com a entrada do usuário.
Classe responsável por salvar todas as exceções que acontecerem durante a execução da aplicação.
Enum dos meses do ano definido pelos valores de 0 a 11. Essa classe é utilizada no método getMonthlyBurns() da classe FileHandler.java. Utilizamos para criar o nome dos arquivos de relatório de cada mês.
Classe que representa um item da Pilha. É utilizada na classe Stack.java.
Classe principal do projeto.
Implementação da estrutura de dados Pilha FIFO. Perceba que essa classe foi implementada de maneira genérica, ou seja, pode ser instanciada pilhas de qualquer tipo de dados.
Interface onde é definida as assinaturas dos métodos da classe Stack.java
Exceção que trata a coordenada X correta de sua respectiva classe.