Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema com setTipo

Olá.

Na aula, o tutor pede para criar uma cópia da classe Funcionario para realizar novas atividades, e dá o nome de FuncionarioTeste. No FuncionarioTeste, o tutor cria o getter e setter do tipo para modificar valores de bonificação para cada cargo.

Certo. Mais tarde no vídeo, o tutor consegue compilar os códigos feitos no TesteFuncionario (é outra classe diferente do FuncionarioTeste, criada para testar a compilação feita no FuncionarioTeste), e lá o setTipo funciona. Quando eu fiz em casa, o setTipo não vai. O Eclipse sugere que eu crie um setter no Funcionario (classe original, antes do ctrl C + ctrl V). É como se ele não estivesse lendo o código que eu fiz no FuncionarioTeste. Como eu resolvo isso?

Meu código abaixo:

Funcionario

public class Funcionario {

    private String nome;
    private String cpf;
    private double salario;

    public Funcionario() {
    }

    public double getBonificacao() {
        return this.salario * 0.10;
    }

    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;
    }
}

FuncionarioTeste

public class FuncionarioTeste {

    private String nome;
    private String cpf;
    private double salario;
    private int tipo = 0;


    public double getBonificacao() {
        if(tipo == 0) {        //funcionário
            return this.salario * 0.10;
        } else if(tipo == 1) {     //gerente
            return this.salario; 
        } else     //diretor
            return this.salario + 1000.0;
        }

    public int getTipo() {
        return tipo;
    }

    public void setTipo(int tipo) {
        this.tipo = tipo;
    }

    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;
    }
}

TesteFuncionario


public class TesteFuncionario {

    public static void main(String[] args) {


        Funcionario thomas = new Funcionario();
        thomas.setNome("thomas godoi");
        thomas.setCpf("123456789-70");
        thomas.setSalario(2500);

        System.out.println(thomas.getBonificacao());


        Funcionario f1 = new Funcionario();
        f1.setSalario(3000);
        f1.setTipo(1);
        System.out.println(f1.getBonificacao());



    }
}

Obrigado!

1 resposta
solução!

Oi Thomas,

O instrutor cria uma instância da classe FuncionarioTeste, é por isso que ele consegue chamar o método funcionario.setTipo:

public class Teste {

    public static void main(String[] args) {
        FuncionarioTeste f1 = new FuncionarioTeste();
        f1.setSalario(3000.0);
        System.out.println(f1.getTipo());
        System.out.println(f1.getBonificacao());

        FuncionarioTeste f2 = new FuncionarioTeste();
        f2.setTipo(1);
        f2.setSalario(5000.0);
        System.out.println(f2.getTipo());
        System.out.println(f2.getBonificacao());
    }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software