aluno: Nome do Aluno
ano/sem: 2008/2o.
data do laboratório (num. da semana) : 06/08/2008 (2)
Introdução
Esse laboratório teve como objetivo a familiarização com o Java. Para tanto, foi criado um aplicativo de entrega, fila e correção de relatórios.
Desenvolvimento
Segue o esquema do aplicativo:
Segue os códigios das classes:
public abstract class Aluno { protected int conhecimento = 0; protected String nome; protected RelaQueue queue; protected double qualidade; protected double originalidade; public void fazEEntregaRelatorio(){ Relatorio relat = new Relatorio(this.qualidade,this.originalidade,this); queue.queue(relat); } public int getConhecimento(){ return conhecimento; } public double getQualidade(){ return qualidade; } public double getOriginalidade(){ return originalidade; } abstract public double getInteligencia(); abstract public double getDedicacao(); public String getNome(){ return nome; } }
import java.util.*; public class AlunoEsforcado extends Aluno { protected double inteligencia; protected double dedicacao; public AlunoEsforcado(String nome, RelaQueue queue){ this.inteligencia = 0.5 ; this.dedicacao = 1; this.nome = nome; this.queue = queue; super.qualidade = (2 * this.getDedicacao() + 1 * this.getInteligencia() ) / 3 ; super.originalidade = (1 * this.getDedicacao() + 2 * this.getInteligencia() ) / 3 ; } public double getInteligencia(){ return this.inteligencia; } public double getDedicacao(){ return this.dedicacao; } }
import java.util.*; public class AlunoSafoPreguicoso extends Aluno { protected double inteligencia; public AlunoSafoPreguicoso(String nome, RelaQueue queue){ this.inteligencia = 1; this.nome = nome; this.queue = queue; super.qualidade = (2 * this.getDedicacao() + 1 * this.getInteligencia() ) / 3 ; super.originalidade = (1 * this.getDedicacao() + 2 * this.getInteligencia() ) / 3 ; } public double getInteligencia(){ return inteligencia; } public double getDedicacao(){ Random generator = new Random(); double r = generator.nextDouble(); return r*0.5; } }
public class RelaQueue { private Relatorio[] array = new Relatorio[10]; private int inicio; private int fim; private Relatorio valor; public RelaQueue(){ this.inicio=0; this.fim=0; } public void queue(Relatorio elem){ array[fim] = elem; fim = (fim + 1) % 10; } public Relatorio dequeue(){ if(inicio == fim) return null; valor = array[inicio]; inicio = (inicio + 1) % 10; return valor; } }
import java.util.*; public class Professor { protected RelaQueue queue; protected double nota; public Professor(RelaQueue queue){ this.queue=queue; } private double corrigirRelatorio(Relatorio rela){ return ( rela.getQualidade() + rela.getOriginalidade() + fatorAleatorioDe0a1() ) / 3 * 10; } public void corrigirRelatorios(){ Relatorio relat; relat = queue.dequeue(); while(relat!=null){ nota = corrigirRelatorio(relat); System.out.println(relat.getAluno().getNome()+" "+nota); relat = queue.dequeue(); } } public double fatorAleatorioDe0a1() { Random generator = new Random(); double r = generator.nextDouble(); return r ; } }
public class Relatorio { protected double qualidade; protected double originalidade; protected Aluno aluno; public Relatorio(double qualidade, double originalidade, Aluno aluno){ this.qualidade=qualidade; this.originalidade=originalidade; this.aluno = aluno; } public Aluno getAluno(){ return aluno; } public double getQualidade(){ return qualidade; } public double getOriginalidade(){ return originalidade; } }
Segue o resultado dos testes:
Conclusão
O apredizado com o laboratório foi grande, boa parte do trabalho se deu na sintaxe da linguagem Java, principalmente para os iniciantes. O nível de dificuldade está adequado para o primeiro laboratório.
getOriginalidade() e getQualidade() não deveriam ser métodos públicos de Aluno. São características do Relatorio. Você calculou estes atributos na criação do aluno, não contemplando a possibilidade deles serem alterados depois da sua criação (ex.: o aluno poderia passar a ter uma maior dedicação e faria relatórios com uma qualidade maior). Qualidade e originalidade deveriam ser calculados no momento da criação dos relas.
Vc expos o método fatorAleatorioDe0a1() como público em Professor (deveria ser privado, não tem nada a ver com o que o professor faz).
Seu rela está quase "em branco" (vc só colou o código sem comentários e 2 print screens).