Last active
November 3, 2017 12:51
-
-
Save Gabrielgtt/290267643fb857a12b1c60876b7f7776 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Conta de uma aluno em um labotório. | |
* | |
* @author Gabriel Alves Tavares | |
*/ | |
public class Disciplina { | |
private String nome; | |
private int horasTrabalhadas; | |
private double[] notas; | |
private int[] pesos; | |
/** | |
* Constrói a disciplina a partir do nome | |
* Os pesos tem, por padrão, valor 1. As notas, 0 | |
* | |
* @param nomeDisciplina: nome da disciplina | |
*/ | |
public Disciplina (String nomeDisciplina){ | |
this.nome = nomeDisciplina; | |
this.horasTrabalhadas = 0; | |
this.notas = new double[4]; | |
this.pesos = new int[]{1, 1, 1, 1}; | |
} | |
/** | |
* Constrói a disciplina a partir do nome | |
* Os pesos tem, por padrão, valor 1. As notas, 0 | |
* | |
* @param nomeDisciplina: nome da disciplina | |
* @param numProvas: quantidade de provas | |
*/ | |
public Disciplina (String nomeDisciplina, int numProvas){ | |
this.nome = nomeDisciplina; | |
this.horasTrabalhadas = 0; | |
this.notas = new double[numProvas]; | |
this.pesos = new int[numProvas]; | |
} | |
/** | |
* Constrói a disciplina a partir do nome, de quatro notas e seus respectivos pesos | |
* | |
* @param nomeDisciplina: nome da disciplina | |
* @param nota1...4: notas do aluno nas 4 provas | |
* @param peso1...4: pesos de cada nota, respectivamente | |
*/ | |
public Disciplina (String nomeDisciplina, double[] notas, int[] pesos){ | |
this.nome = nomeDisciplina; | |
this.horasTrabalhadas = 0; | |
this.notas = notas; | |
this.pesos = pesos; | |
} | |
/** | |
* Calcula a média ponderada das notas na disciplina | |
* | |
* @return a média ponderada | |
*/ | |
public double mediaNotas(){ | |
double somaPonderada = 0; | |
for (int i = 0; i < notas.length; i++){ | |
somaPonderada += this.notas[i] * this.pesos[i]; | |
} | |
int somaPesos = pesos[0] + pesos[1] + pesos[2] + pesos[3]; | |
return somaPonderada/somaPesos; | |
} | |
/** | |
* Cadastra uma nota em uma determinada prova | |
* | |
* @param prova: o número da prova, varia de 1 a 4 (o index no array de notas começa em 0) | |
* @param valorNota: o valor para qual a nota é mudada | |
*/ | |
public void cadastraNota(int prova, double valorNota){ | |
this.notas[prova-1] = valorNota; | |
} | |
/** | |
* Cadastra horas trabalhas | |
* | |
* @param horasTrabalhadas: horas trabalhadas | |
*/ | |
public void cadastraHoras(int horasTrabalhadas){ | |
this.horasTrabalhadas += horasTrabalhadas; | |
} | |
/** | |
* Verifica a aprovação do aluno na disciplina | |
* | |
* @return true se a media do aluno for maior ou igual a 7.0, false do contrário | |
*/ | |
public boolean aprovado(){ | |
if (this.mediaNotas() >= 7.0){ | |
return true; | |
} | |
return false; | |
} | |
/** | |
* Representação em String da disciplina | |
* | |
* @return uma string com o nome da disciplina, as horas trabalhadas, a média e as notas do aluno | |
*/ | |
public String toString(){ | |
String notas = this.mediaNotas() + " [" + this.notas[0] + " " + this.notas[1] + " " + this.notas[2] + " " + this.notas[3] + "]"; | |
return String.format("%s %d %s", this.nome, this.horasTrabalhadas, notas); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment