Lab1 Luty Rodrigues

aluno: Luty Rodrigues Ribeiro
ano/sem: 2008/2o.
data do laboratório (num. da semana) : 06/08/2008 (2)

Introdução

O trabalho deste 1º laboratório teve como objetivo pôr em prática os conceitos de
orientação a objeto comentados em sala de aula. Para isso, foi proposta a elaboração de
um projeto em linguagem java, composto de vários arquivos, contendo as classes
necessárias para a realização desta tarefa. Este projeto consiste de um sistema no qual
alguns alunos, fazem um relatório cada e entregam estes relatórios para um professor, colocando estes relatórios enfileirados. O professor corrige e mostra as notas na ordem
em que recebeu os relatórios.

Desenvolvimento

Para ver o projeto funcionando, criamos os elementos iniciais (instâncias de algumas classes).
que criarão novos elementos, mostrando-nos assim o projeto em funcionamento.
Abaixo exibimos alguns trechos do código que usaremos para os testes:

//criando os objetos
        RelaQueue queue = new RelaQueue(); 
        Professor prof = new Professor(queue);
        AlunoEsforcado aluno1 = new AlunoEsforcado("John Smith", queue);
        AlunoEsforcado aluno2 = new AlunoEsforcado("Mark Smith", queue);
        AlunoSafoPreguicoso aluno3 = new AlunoSafoPreguicoso("Joseph Smith", queue);
        AlunoSafoPreguicoso aluno4 = new AlunoSafoPreguicoso("Robert Smith", queue);

Temos acima, nessa ordem, a criação das seguintes instâncias:

  • Fila de relatórios, inicialmente vazia;
  • Professor, que corrigirá e dará notas aos relatórios;
  • Quatro alunos, denominados aluno1, aluno2, aluno3 e aluno4.

Inserimos o código acima nas linhas de comando do BlueJ, como mostrado na figura a seguir:

lab1-1.JPG

Depois de definidos as instâncias iniciais, podemos fazer algumas verificações manualmente:

lab1-2.JPG

Mandamos exibir os nomes dos quatro alunos inseridos:

lab1-3.JPG

Vemos que os nomes mostrados são aqueles que foram atribuídos no momento em que foram
criadas as instâncias iniciais, como era de se esperar.
A seguir, vamos mostrar o funcionamento da função fazEEntregaRelatorio, com o comando:

aluno1.fazEEntregaRelatorio();

Para testar as demais funções do projeto e verificar o funcionamento desta última, fazemos os
comandos a seguir:

lab1-4.JPG

Com estes testes, vemos que, como o aluno1 foi declarado como AlunoEsforcado, por definição,
sua inteligência deve ser 0,5. A outra linha a ser impressa mostrará os nomes de aluno1 e o nome do aluno que entregou seu relatório primeiro. Esperamos que os nomes sejam os mesmos, pois na nossa sequência de testes, apenas aluno1 entregou seu relatório.
Abaixo, vemos a saída na janela do BlueJ, que nos mostra os resultados esperados:

lab1-5.JPG

A seguir, daremos os comandos para que os outros alunos façam seus relatórios:

aluno2.fazEEntregaRelatorio();
aluno3.fazEEntregaRelatorio();
aluno4.fazEEntregaRelatorio();

Feito isso, o próximo passo é a correção dos relatórios, que será feita pela instância prof da
classe Professor, através do método corrigirRelatórios:

lab1-6.JPG

Inserido o código nas linhas de comando, vemos o resultado na tela do BlueJ:

lab1-7.JPG

Vemos que os relatórios foram corrigidos, as notas foram lançadas e na ordem em que os alunos entregaram, mostrando o funcionamento correto da fila. Vemos também que o relatório do aluno1, que havia sido retirado da fila, não aparece nesta última visualização, o que mostra o
funcionamento correto do método dequeue da classe RelaQueue.

Temos a seguir uma imagem que mostra as classes no BlueJ já compiladas:

lab1-8.JPG

A figura nos mostra as dependências entre as classes (setas pontilhadas), bem como a relação de herança (setas cheias). A relação de dependência ocorreu nestes casos, porque as classes precisavam de intâncias de outras classes, bem como utilizar os métodos de outras classes para obter informações úteis para si mesma. A relação de herança, neste caso, ocorreu entre a classe abstrata Aluno e suas subclasses AlunoEsforcado e AlunoSafoPreguicoso. O fato de Aluno ser abstrata significa que ela não pode ser instanciada diretamente, assim, suas subclasses, que são concretas é que possuíram instâncias.

Abaixo os códigos fontes das classes implementadas, inclusive a classe de testes que foi proposta em laboratório para testar o programa:
classe Aluno
classe AlunoEsforacdo
classe AlunoSafoPreguicoso
classe Relatorio
classe RelaQueue
classe Professor
classe de testes

lab1-9.JPG

A seguir, utilizamos a classe de testes, opção Test All (como mostrado na figura acima), para fazer as verificações indicadas no código, e exibimos o resultado na figura abaixo:

lab1-10.JPG

O resultado destes testes são os das três últimas linhas. Para ter certeza disto, é só lembrar que a execução anterior gerou as notas dos três alunos por último. É interessante notar que, mesmo fazendo os mesmos testes, obtivemos notas diferentes para os alunos nas duas situações. Isto é resultado da aplicação do método nextFloat() da classe Random.

Conclusão

Este trabalho permitiu que os alunos tivessem bastante contato com a linguagem java,
servindo assim para um aprendizado inicial de comandos básicos, bem como foi possível
verificar o uso do conceito de objeto, que havia ficado abstrato durante a aula e teve
sua funcionalidade comprovada depois deste laboratório. Entretanto, houve um certo
contraste para os alunos que não conheciam ainda a linguagem nem tinham conhecimento
sobre orientação a objeto, de modo que, apesar de o trabalho não ser tão complexo,
foi necessário bastante tempo até ganhar uma certa segurança. Talvez fosse mais
proveitoso que houvesse a aula introdutória, sobre funções básicas de java, um pouco
antes deste trabalho. Isso economizaria algum tempo que foi demandado para aprender
comandos básicos.

Add a New Comment
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License