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

Dúvida no Ex. 3 da Aula 5 - Modificadores de acesso

Não estou conseguindo fazer o set da data da entrada do funcionário corretamente na classe TestandoFuncionario. Já tentei de várias formas e na hora de compilar sempre resulta em erro. Alguém poderia me ajudar a solucionar esse problema?

```public class Funcionario {

private String nome;
private String rg;
private Data dataDaEntrada;
private String departamento;
private double salario; 

public void setNome(String nome) {
    this.nome = nome;
}

public String getNome() {
    return this.nome;
}

public void setRg(String rg) {
    this.rg = rg;
}

public String getRg() {
    return this.rg;
}

public void setDataDaEntrada(Data dataDaEntrada) {
    this.dataDaEntrada = dataDaEntrada;
}

public Data getDataDaEntrada() {
    return this.dataDaEntrada;
}

public void setDepartamento(String departamento) {
    this.departamento = departamento;
}

public String getDepartamento() {
    return this.departamento;
}

public void recebeAumento(double valor) {
    this.salario += valor; 
}

public double getGanhoAnual() {
    return this.salario * 12;
}

public void setSalario(double valor) {
    this.salario = valor;
}

public double getSalario() {
    return this.salario;
}


public void mostra() {

    System.out.println("");
    System.out.println("Nome: " + getNome());
    System.out.println("RG: " + getRg());
    System.out.println("Departamento: " + getDepartamento());
    System.out.println("Salário R$: " + getSalario());
    System.out.println("Ganho Anual: " + getGanhoAnual());
    System.out.println("Data de entrada: " + this.dataDaEntrada.getFormatada());

}

}```

```class Data {

int dia;
int mes;
int ano;

void imprimeData (int dia, int mes, int ano){

    this.dia = dia;
    this.mes = mes;
    this.ano = ano;
}
String getFormatada() {
    return this.dia + "/" + this.mes + "/" + this.ano;

}

}```

```public class TestandoFuncionario {

public static void main ( String [] args ) {

    Funcionario Joao = new Funcionario();


    Joao.setNome("João Carlos");
    Joao.setRg("28.665.999-1");

    Joao.setDataDaEntrada(?);  **// Não consigo fazer este set de forma correta!!!**

    Joao.setDepartamento("Financeiro");
    Joao.setSalario(3800.00);

    Joao.mostra();


}

}```

8 respostas

Diego,

o que está acontecendo que você não está criando o objeto do tipo Data , em nenhum momento você instancia a classe Data

faça a seguinte modificação.

``` public class TestandoFuncionario {

public static void main ( String [] args ) {

Funcionario Joao = new Funcionario();


Joao.setNome("João Carlos");
Joao.setRg("28.665.999-1");

Data data = new Data();
data.imprimeData(22,01,2016);
Joao.setDataDaEntrada(data);  **// Não consigo fazer este set de forma correta!!!**

Joao.setDepartamento("Financeiro");
Joao.setSalario(3800.00);

Joao.mostra();

} }

```

Repare que a mudança no código está aqui :

Data data = new Data(); data.imprimeData(22,01,2016); Joao.setDataDaEntrada(data);

Espero ter ajudado , Bons Estudos

Olá Celso tudo bom? Então postei a classe funcionário "errada" como eu fiz vários testes acabei duplicando alguns arquivos e postei um dos testes que fiz e não a classe correta. Minha classe Funcionario correta é esta:

public class Funcionario {
    private String nome;
    private String rg;
    private Data dataDaEntrada = new Data();  **// Esta linha que difere da primeira classe que postei!!!**
    private String departamento;
    private double salario; 

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return this.nome;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public String getRg() {
        return this.rg;
    }

    public void setDataDaEntrada(Data dataDaEntrada) {
        this.dataDaEntrada = dataDaEntrada;
    }

    public Data getDataDaEntrada() {
        return this.dataDaEntrada;
    }

    public void setDepartamento(String departamento) {
        this.departamento = departamento;
    }

    public String getDepartamento() {
        return this.departamento;
    }

    public void recebeAumento(double valor) {
        this.salario += valor; 
    }

    public double getGanhoAnual() {
        return this.salario * 12;
    }

    public void setSalario(double valor) {
        this.salario = valor;
    }

    public double getSalario() {
        return this.salario;
    }


    public void mostra() {

        System.out.println("");
        System.out.println("Nome: " + getNome());
        System.out.println("RG: " + getRg());
        System.out.println("Departamento: " + getDepartamento());
        System.out.println("Salário R$: " + getSalario());
        System.out.println("Ganho Anual: " + getGanhoAnual());
        System.out.println("Data de entrada: " + this.dataDaEntrada.getFormatada());

    }
}

As classes Data e TestandoFuncionarios permanecem as mesmas.

solução!

Diego,

fiz um modificação em seu código ,na classe Funcionario em vez de criar o setDataDaEntrada , alterei para o seguinte método :

 public void preencheDataDaEntrada(int dia,int mes, int ano) {
        this.dataDaEntrada.imprimeData(dia, mes, ano);
    }

e na classe TestaFuncionario , fiz a seguinte chamada :

 Joao.preencheDataDaEntrada(25,01,2016);

faça essas alterações que dará certo em seu código .

Espero ter ajudado, Bons Estudos

Fiz as alterações no código deu tudo certo, muito obrigado Celso!!!

Fiz as alterações no código deu tudo certo, muito obrigado Celso!!!

Fiz as alterações no código deu tudo certo, muito obrigado Celso!!!

Fiz as alterações no código e funcionou perfeitamente, muito obrigado Celso!!!

Fiz as alterações no código e funcionou perfeitamente, muito obrigado Celso!!!

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