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

Modificadores de Acesso - getData() retorna 0

Boa tarde! Estava fazendo o código dos Funcionários, e acabei travando na parte da Data, quando chamo o getData() ele me retorna o valor 0 para o dia, mês e ano. Até reescrevi o código, para ver se conseguia entender o erro, mas ainda não consegui resolver.

Segue a classe Funcionario:

class Funcionario {
    private String nome, departamento;
    private double salario;
    private Data dataEntrada;

    //Criando GET e SET
    public String getNome(){
        return this.nome;
    }
    public void setNome(String nome){
        this.nome = nome;
    }
    public String getDepartamento(){
        return this.departamento;
    }
    public void setDepartamento(String departamento){
        this.departamento = departamento;
    }
    public double getSalario(){
        return this.salario;
    }
    public void setSalario(double salario){
        this.salario = salario;
    }
    public Data getData(){
        return this.dataEntrada;
    }
    public void setData(Data dataEntrada){
        this.dataEntrada = dataEntrada;
    }

    void mostra(){
        System.out.println("Nome: "+this.nome);
        System.out.println("Departamento: "+this.departamento);
        System.out.println("Data de Admissao: "+this.getData().dia+"/"+this.getData().mes+"/"+this.getData().ano);
        System.out.println("Salario: R$ "+this.salario);
    }
}

Classe Data:

class Data{
    int dia, mes, ano;
    public Data setClassData(int dia, int mes, int ano){
        Data dataPreenchida = new Data();
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
        return dataPreenchida;
    }
}

Classe TestaFuncionario:

class TesteFuncionario{
    public static void main(String[] args) {
        Empresa empresa = new Empresa();
        empresa.nome = "Herweg";
        empresa.cnpj = "789456123456";
        empresa.funcionarios = new Funcionario[10];

        Funcionario f1 = new Funcionario();
        f1.setNome("Fabio Chuman");
        f1.setDepartamento("Programacao JAVA");
        f1.setSalario(15000.00);
        f1.setData(new Data().setClassData(10,05,2017));

        empresa.adicionar(f1);
        empresa.mostraTodosFuncionarios();
    }
}
6 respostas

Não entendi em qual momento você está chamando o getData().

Está chamando no método mostra() ? É isto ?

Exatamente, chamo o getData() dentro do método mostra()

solução!

Amigo, porque você não testa usar:

class Data{
    int dia, mes, ano;
    public Data setClassData(int dia, int mes, int ano){
        Data dataPreenchida = new Data();
        dataPreenchida.dia = dia;
        dataPreenchida.mes = mes;
        dataPreenchida.ano = ano;
        return dataPreenchida;
    }
}

ao invés de usar:

class Data{
    int dia, mes, ano;
    public Data setClassData(int dia, int mes, int ano){
        Data dataPreenchida = new Data();
        //você criou um objeto Data, mas não passou nada para ele... talvez por isso que retornou 0. 
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
        return dataPreenchida;
    }
}

Altere a classe DATA para:

class Data{
    int dia, mes, ano;
    public Data (int dia, int mes, int ano){
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
}

E a invocação do método para :

 f1.setData(new Data(10,05,2017));

A solução do Gabriel é mais elegante.

Obrigado Daniel e Gabriel, deu certo, realmente, a solução do Gabriel é mais elegante e interessante, só que já tinha marcado solucionada quando vi a resposta. De qualquer forma, obrigado e abraço a todos.