Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro referente a data de entrada. Help me please.

class Funcionario3 {
    private String nome;            //Atributos da classe privados, só poderão ser acessados por metodos
    private String departamento;
    private double salario;
    private Data dataDeEntrada;
    private String rg;

    public void recebeAumento(double valorDoAumento) {        //Encapsulamento: esconder a regra de negócio dentro dos metodos e não no Main.
        if(valorDoAumento > 0){
        this.salario += valorDoAumento;
        System.out.println("O " + this.nome + " recebeu um aumento de: R$" + valorDoAumento);
        } else {
            System.out.println("O valor do aumento eh insignificante.");
    }
}

    //Metodos sem VOID trazem valores na tela com o 'return'

    public double getGanhoAnual() {        //Metodo de trazer dado ##
        return this.salario * 12;
    }

    public void setSalario(double salario) {    //Metodo de registrar dado
        this.salario = salario;
    }

    public double getSalario() {        //Metodo de trazer dado ##
        return this.salario;
    }

    public void setNome(String nome) {        //Metodo de registrar dado
        this.nome = nome;
    }

    public String getNome() {        //Metodo de trazer dado ##
        return this.nome;
    }

    public void setDepartamento(String departamento) {        //Metodo de registrar dado
        this.departamento = departamento;
    }

    public String getDepartamento() {        //Metodo de trazer dado ##
        return this.departamento;
    }

    public String getRg() {        //Metodo de trazer dado ##
        return this.rg;
    }

    public void setRg(String rg){        //Metodo de registrar dado
        this.rg = rg;
    }

    public Data getDataEntrada() {        //Metodo de trazer dado ##
        return this.dataDeEntrada;
    }

    public void setDataEntrada (Data dataDeEntrada) {
        this.dataDeEntrada = dataDeEntrada;
    }

       public void mostra(){
        System.out.println("Nome: " + this.nome);
                System.out.println("Departamento: " + this.departamento);
                System.out.println("Salario: R$" + this.salario);
                System.out.println("Data de entrada: " + this.dataDeEntrada.getFormatada());
                System.out.println("RG: " + this.rg);
                System.out.println("Ganho anual: R$" + this.getGanhoAnual());
    }
}
class Data {
    int dia;
    int mes;
    int ano;

    void preencheData (int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

    String getFormatada() {
        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}
class TestaFuncionario2 {
    public static void main(String[] args) {
        Funcionario3 joseph = new Funcionario3();
        joseph.dataDeEntrada = new Data();

    joseph.dataDeEntrada.preencheData(1, 7, 2000);

    joseph.setDataEntrada(joseph.dataDeEntrada);
    System.out.println("Data de entrada: " + joseph.dataDeEntrada.getFormatada());

    joseph.setSalario(1000);
    System.out.println("\nSalario atual R$: " + joseph.getSalario());

    System.out.println("Salarial atual anual R$: " + joseph.getGanhoAnual() + "\n");    

    joseph.setNome("Joseph Rocha");
    System.out.println("Nome completo:" + joseph.getNome() + "\n");    

    joseph.setDepartamento("Tecnologia da Informacao");
    System.out.println("Departamento: " + joseph.getDepartamento() + "\n");

    joseph.setRg("58493092");
    System.out.println("Rg: " + joseph.getRg());

    joseph.mostra();
    }
}

Error: dataDeEntrada has a private access in Funcionario3 joseph.dataDeEntrada = new Data();

Error: dataDeEntrada has a private access in Funcionario3. joseph.dataDeEntrada.preencheData(1, 7, 2000);

Error: dataDeEntrada has a private access in Funcionario3. joseph.dataDeEntrada(joseph.dataDeEntrada);

Error: dataDeEntrada has a private access in Funcionario3. System.out.println("Data de entrada: " + joseph.dataDeEntrada.terFormatada());

4 errors

2 respostas
solução!

Bruno vamos lá...

Repara na sua classe, Funcionario3.

class Funcionario3 {
    private String nome;            //Atributos da classe privados, só poderão ser acessados por metodos
    private String departamento;
    private double salario;
    private Data dataDeEntrada;
    private String rg;

O atributo Data está privado,então não vai rolar fazer do jeito que você está fazendo.

Funcionario3 joseph = new Funcionario3();
        joseph.dataDeEntrada = new Data();

    joseph.dataDeEntrada.preencheData(1, 7, 2000);

    joseph.setDataEntrada(joseph.dataDeEntrada);

Para isso funcionar o atributo do tipo Data tinha que ser protected.

Mais ai perde o encapsulamento, oque seria uma solução correta a se fazer aqui, testa desse jeito e veja se roda.

public static void main(String[] args) {
        Funcionario3 joseph = new Funcionario3();
        Data entrada = joseph.getDataEntrada(); 
        entrada.preencheData(1, 7, 2000);
        joseph.setDataEntrada(entrada);
        System.out.println("Data de entrada: " + entrada.getFormatada());
        joseph.setSalario(1000);
        System.out.println("\nSalario atual R$: " + joseph.getSalario());
        System.out.println("Salarial atual anual R$: " + joseph.getGanhoAnual() + "\n");    
        joseph.setNome("Joseph Rocha");
        System.out.println("Nome completo:" + joseph.getNome() + "\n");    
        joseph.setDepartamento("Tecnologia da Informacao");
        System.out.println("Departamento: " + joseph.getDepartamento() + "\n");
        joseph.setRg("58493092");
        System.out.println("Rg: " + joseph.getRg());
        joseph.mostra();
    }

E sempre como é uma boa pratica de programação e até mesmo para não levar um exception de nullpointerexcption instancia já a classe Data no seu funcionario assim.

class Funcionario3 {
    private String nome;            //Atributos da classe 
  privados, só poderão ser acessados por metodos
    private String departamento;
    private double salario;
    private Data dataDeEntrada = new Data(); // JA INSTANCIA AQUI MESMO
    private String rg;

Veja se rola, e posta um feedback

Olá @Alisson!

Funcionou!

Obrigado man!