Análise de Algoritmos
Por: melissamfg • 17/10/2015 • Trabalho acadêmico • 1.058 Palavras (5 Páginas) • 332 Visualizações
Pontifícia Universidade Católica de Goiás
Sistemas Computacionais Aplicados-CMP1125
Documento de Software
Nome: Melissa Magda França Garcia
Matrícula: 201210280325
Goiânia, março de 2015
Introdução
Neste documento irei detalhar as principais partes da arquitetura proposta para o desenvolvimento do sistema, o padrão de projeto utilizado, os métodos usados para leitura de arquivo e uma base teórica dos algoritmos de ordenação usados no programa para ordenar os dados lidos do arquivo de entrada.
O problema
O problema proposto era desenvolver um programa que lesse de um determinado arquivo de entrada, no qual conteriam informações de alunos, no caso, nome e matrícula, e ordená-los, mostrando em uma saída os dados já ordenados conforme os parâmetros escolhidos pelo usuário. A ordenação deve ser implementada com 4 algoritmos diferentes. Quando o usuário executar o programa deve aparecer na interface os botões correspondentes aos métodos implementados, o que for escolhido será o responsável por ordenar.
As matrículas de cada aluno estão separados no arquivo por ponto-e-vírgula, sendo que a matrícula é formada por:
-ano que o aluno foi matriculado no curso;
-semestre em que ele começou o curso;
-código do curso;
-código gerado para cada novo aluno;
Dado que a matrícula é formada por esses itens, eles vieram separados por pontos no arquivo de entrada, para facilitar a visualização e uma posterior separação dos mesmos.
Construindo a interface do usuário
Foi definido que a interface do programa poderia conter alguns itens principais dentre eles:
- Botão para abrir o arquivo de onde os dados serão lidos
- Ítem clicável de escolha do parâmetro de ordenação(nome, matrícula, outro...)
- Botões que ativam o método de ordenação a ser utilizado para ordenar os dados.
- Ítem de tabela que mostrará o resultado da ordenação.
- Botão para limpar a tabela para uma nova ordenação(opcional).
Definindo o padrão de projeto
Como as comparações dos parâmetros utilizados para a ordenação podem variar, implementar essa comparação na mesma classe que implementa os algoritmos pode não vantajosa e dificultar alterações futuras pois se um parâmetro mudar ou for alterado, isso implicará em mudanças no programa todo. Sendo assim, viu se a necessidade de utilizar um padrão de projeto, nesse caso o padrão Template Method, que consiste em definir os passos de um algoritmo e permitir que a implementação de um ou mais desses passos seja fornecida por subclasses. Assim, o Template Method protege o algoritmo e fornece métodos abstratos para que as subclasses possam implementá-los. Vejamos como ficou o digrama de classe do projeto:
[pic 1]
Ilustração : (Diagrama de Classe. As subclasses são responsáveis pela implementação do método responsável por fazer a comparação dos parâmetros de ordenação(Nome, Matrícula, Semestre)
Como ler os dados do arquivo?
Para trabalhar com os dados contidos na tabela(.csv), é preciso ler e guardar os dados lidos em uma estrutura, para depois, separá-los nos atributos correspondentes na classe Aluno.
Para obter os dados da tabela a interface bufferedReader do Java pode ser usada apesar de não ser a única forma de ler de um arquivo. Os dados podem ser colocados em um ArrayList(classe do Java correspondente à uma lista) do tipo Aluno para depois serem ordenados.
Os algoritmos de ordenação
Foram implementados quatro algoritmos de ordenação:
->BubleSort
->SelectionSort
->InsertionSort
->QuickSort.
BubleSort
Neste algoritmo cada elemento da posição i será comparado com o elemento da posição i + 1, ou seja, um elemento da posição 2 será comparado com o elemento da posição 3. Caso o elemento da posição 2 for maior que o da posição 3, eles trocam de lugar e assim sucessivamente. Por causa dessa forma de execução, o vetor terá que ser percorrido quantas vezes que for necessária.
...