Oi, alichicao.
Melhor explicação sobre booleanos do que aqui não tem.
Porém, a minha dúvida nesse teu exercício é se você reamente tem que utilizar booleanos para o mestrado e doutorado, fica extremamente confuso. E da onde vem o calculaSalario? Ele não vem da classe Funcionario? Por que você extende Pessoa, então?
public class Professor extends Pessoa {
Enfim, tirando as minhas dúvidas quanto a
coesão e
clareza da tua implementação, aqui estão as modificações:
- Agora a classe
Professor extende
Funcionario, senão não tem acesso ao salário, entende?
- Adicionei dois atributos
boolean, como você pediu, um chamado mestrado e outro doutorado;
- Quando você cria o
Professor o construtor válida o grau (se é
Mestrado ou
Doutorado) atribuindo
TRUE para o grau informado;
- Essa atribuição é o que difere o método
double calculaSalario, pois ele possui cálculos diferentes para quem possuir mestrado ou doutorado.
Classe Professor modificada:
public class Professor extends Funcionario{
private String carteiraTrabalho;
private boolean mestrado = false;
private boolean doutorado = false;
public Professor(String carteiraTrabalho, String grau) {
this.carteiraTrabalho = carteiraTrabalho;
if(grau.equalsIgnoreCase("Mestrado")){ mestrado = true;}
if(grau.equalsIgnoreCase("Doutorado")){ doutorado = true;}
}
public String getCarteiraTrabalho() {
return carteiraTrabalho;
}
public void setCarteiraTrabalho(String carteiraTrabalho) {
this.carteiraTrabalho = carteiraTrabalho;
}
public double calculaSalario(int valorDias){
if(mestrado){
salario = salario +100;
return salario * valorDias;
}
else if(doutorado){
return (salario+200)*valorDias;
}
else
return (salario+200) * valorDias;
}
}
Classe Main modificada:
public class Main {
public static void main(String[] args) {
Professor professor1 = new Professor("001","Mestrado");
Professor professor2 = new Professor("002","Doutorado");
Scanner entrada = new Scanner(System.in);
int valorDia = 0;
double resultado;
System.out.println("Entre com o número de dias que o professor com MESTRADO trabalhou: ");
valorDia = entrada.nextInt();
resultado = professor1.calculaSalario(valorDia);
System.out.println("Salario calculado = " + resultado);
System.out.println("\nEntre com o número de dias que o professor com DOUTORADO trabalhou: ");
valorDia = entrada.nextInt();
resultado = professor2.calculaSalario(valorDia);
System.out.println("Salario calculado = " + resultado);
}
}