Skip to content

Instantly share code, notes, and snippets.

@Gabrielgtt
Last active November 3, 2017 12:51
Show Gist options
  • Save Gabrielgtt/290267643fb857a12b1c60876b7f7776 to your computer and use it in GitHub Desktop.
Save Gabrielgtt/290267643fb857a12b1c60876b7f7776 to your computer and use it in GitHub Desktop.
/**
* 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