1
resposta

Na hora de imprimir nao sai o valot total da soma com o bonus e ainda acumula:

package bancoNico; public class Empregado {

private String nome;
private String cpf;
private double salario;   // protected - fica publico para os filhos ainda 

public double bonus () {   // ele colocou getBonificacao

    return this.salario * 0.1;
}

public String getNome() {
    return nome;
}
public void setNome(String nome) {
    this.nome = nome;
}
public String getCpf() {
    return cpf;
}
public void setCpf(String cpf) {
    this.cpf = cpf;
}
public double getSalario() {
    return salario;
}
public void setSalario(double salario) {
    this.salario = salario;
}

}

package bancoNico;

public class Gerente extends Empregado{ // gerente e um funcionario ele vem de funcionario pois tambem e um empregado assim ele e uma extensa, ou seja estende de empregado

private int senha = 5;  // declarei a senha como 5 

public boolean autentica (int tentativaSenha) {
    return this.senha == tentativaSenha;
}
@Override       
public double bonus () {   // ele colocou getBonus esse metodo ja tem na classe mae ele foi reescrito
    // return this.salario;
    System.out.println("Teste de bonus do GERENTE"); // na aula Aplicando Polimorfismo em 14:37 ele adc esse print para diferenciar do metodo bonus do empregado

    return super.getSalario() + super.bonus();  // super.salario - mostra que salario vem da classe pai
    // super.bonus() - pega o metodo da classe mae Empregado
    // Ps: se colocasse o this.bonus() ele mesmo iria ficar se chamando dando erro num loop




} 

}

package bancoNico;

public class ControleBonus {

private double soma;

    public void registra(Empregado e) { //Esse metodo fica bem generico assim podemos colocar mais 1000 empregados que vai dar bom

        this.soma += e.bonus();    // chamou o bonus do empregado se clicar com o Ctrl observe

    }
    public double getSoma() {
        return soma;   // aqui pq nao coloca o this?? 
    }

}

package bancoNico;

public class EditorVideo extends Empregado {

    public double registra() {
        System.out.println("Bonus  EDITOR DE VIDEO");
            return  150; 
    }

}

package bancoNico;

public class Designer extends Empregado {

    public double registra() {
        System.out.println("Bonus do DESIGNER");
            return  200; 

    }

}

package bancoNico;

public class TesteReferencias {

public static void main(String[] args) {

    // aqui ele vai testar as chamadas de classes usando referências

    Empregado g1 = new Gerente();
    g1.setNome("Marcos");
    g1.setSalario(5000);

    Empregado g2 = new Gerente();
    g2.setNome("Marcus");

    System.out.println("A 1 forma funciona: " + g1.getNome() + " A segunda tambem: " + g2.getNome());

    Empregado emp1 = new Empregado();
    emp1.setSalario(2000);        

    // Gerente emp2 = new Empregado(); nao pega pois a heranca e de mae para filha e nao vice-versa

    EditorVideo ed1 = new EditorVideo();
    ed1.setSalario(2500);

    Designer d = new Designer();
    d.setSalario(2000);

    ControleBonus controle = new ControleBonus();
    controle.registra(g1);
    controle.registra(emp1);
    controle.registra(ed1);
    controle.registra(d);

     System.out.println(controle.getSoma());
     System.out.println(d.bonus());
     System.out.println(emp1.bonus());
     System.out.println(ed1.bonus());
     System.out.println(g1.bonus());

}

}

Saida: 

A 1 forma funciona: Marcos A segunda tambem: Marcus

Teste de bonus do GERENTE 6150.0 200.0 200.0 250.0 Teste de bonus do GERENTE 5500.0

1 resposta
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!