1
resposta

Método cadastrarFuncionario

Criei a classe Funcionario, conforme código a seguir.

package empresa;

public class Funcionario { private String nome; private String cpf; private double salario;

public void cadastrarFuncionario(String nome, String cpf, double salario) {
    this.setNome(nome);
    this.setCpf(cpf);
    this.setSalario(salario);
}

public double getBonificacao(double percentual) {
    return this.salario * percentual / 100;
}

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

}

Na classe Funcionario foi definido o método cadastrarFuncionario, com o objetivo de passar as informações como parâmetro e o método realizar todo processo de definição dos valores dos atributos.

Este é o código da classe testeFuncionario:

package empresa;

public class testeFuncionario {

public static void main(String[] args) {

    Funcionario funcionario;
    String funcionarioNome;
    String funcionarioCpf;
    double funcionarioSalario;

    int percentualBonificacao;

    funcionarioNome = "João da Silva"; 
    funcionarioCpf = "111.111.111-11";
    funcionarioSalario = 8000;
    funcionario = new Funcionario();
    funcionario.cadastrarFuncionario(funcionarioNome, funcionarioCpf, funcionarioSalario);

    percentualBonificacao = 10;

    System.out.println("Funcionário " + funcionario.getNome());
    System.out.println("CPF " + funcionario.getCpf());
    System.out.println("Salário R$ " + funcionario.getSalario());
    System.out.println("Bonificação de R$ " + funcionario.getBonificacao(percentualBonificacao));
    System.out.println();
}

}

Nesta classe eu utilizei dois comandos, um para criar o objeto Funcionario e outro para inicializar os atributos:

    funcionario = new Funcionario();
    funcionario.cadastrarFuncionario(funcionarioNome, funcionarioCpf, funcionarioSalario);

Eu quero colocar o comando "new" dentro do método.

public Funcionario cadastrarFuncionario(String nome, String cpf, double salario) {
    Funcionario funcionario = new Funcionario();
    funcionario.setNome(nome);
    funcionario.setCpf(cpf);
    funcionario.setSalario(salario);
    return funcionario;
}

Se tento executar o método testeFuncionario, dá erro que a variável "funcionario" não foi inicializada.

    funcionarioNome = "João da Silva"; 
    funcionarioCpf = "111.111.111-11";
    funcionarioSalario = 8000;
    // funcionario = new Funcionario();
    funcionario.cadastrarFuncionario(funcionarioNome, funcionarioCpf, funcionarioSalario);

Exception in thread "main" java.lang.Error: Unresolved compilation problems: The local variable funcionario may not have been initialized at empresa.testeFuncionario.main(testeFuncionario.java:18)

Neste caso, como eu faço para chamar o método "cadastrarFuncionario(...)" na classe testeFuncionario? Tem como?

1 resposta

Bom Dia Rogério,

Acho que o Nico vai comentar sobre os contrutores de classe mais para frente, mas basicamente o que você quer é isso. Vou deixar o código aqui embaixo mas se você quiser testar antes de colocar no seu código pode dar uma olhada aqui

Classe Main

class Main {
  public static void main(String[] args) {
    String funcionarioNome = "João da Silva"; 
    String funcionarioCpf = "111.111.111-11";
    double funcionarioSalario = 8000;

    Funcionario funcionario = new Funcionario(funcionarioNome, funcionarioCpf, funcionarioSalario);

    double percentualBonificacao = 10;

    System.out.println("Funcionário " + funcionario.getNome());
    System.out.println("CPF " + funcionario.getCpf());
    System.out.println("Salário R$ " + funcionario.getSalario());
    System.out.println("Bonificação de R$ " + funcionario.getBonificacao(percentualBonificacao));
    System.out.println();
  }
}

Classe Funcionário

public class Funcionario { 
    private String nome;
    private String cpf; 
    private double salario;

    public Funcionario(String nome, String cpf, double salario){
        this.setNome(nome);
        this.setCpf(cpf);
        this.setSalario(salario);
    }

    public double getBonificacao(double percentual) {
        return this.salario * percentual / 100;
    }

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