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

Aula 5 Exercício 2 Get e set para a Data

Primeiro tenho meu get e set para a data de entrada do funcionário:

public void setData(Data dataEntrada){
        this.dataEntrada = dataEntrada;
    }

    public Data getData(){
        return this.dataEntrada;
    }

Agora a classe Data:

class Data{

    int dia;
    int mes;
    int ano;

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

    String getData(){
        return dia + "/" + mes + "/" + ano;
    }
}

E por fim o minha classe Main:

class FuncionarioMain{

    public static void main(String[] args){

        Funcionario f1 = new Funcionario();

        f1.setNome("Rafael");
        f1.setDepartamento("Vendas");
        f1.setSalario(4000);
        f1.setData(dataEntrada.setData(14,07,2011));
        f1.setRG("486739008");
    }
}

Eu não sei como colocar a data de entrada do funcionário... Se eu colocar como sempre coloquei:

f1.dataEntrada.setData(14,07,2011);

Recebo este erro:

dataEntrada has private access in Funcionario

Tentei de várias formas mas nenhuma deu certo... Gostaria de saber como resolver... Quero que o argumento do método seja uma variável Data.

6 respostas

Ola, seu erro está me parecendo porque você deixou algum atributo ou metodo privado, na sua classe funcionario, ta herdando ou esta tendo uma composição com a class data?

class Funcionario{

    private String nome;
    private String departamento;
    private double salario;
    private Data dataEntrada = new Data();
    private String rg;

Na explicação do exercício está falando pra deixar "private" e criar o "get" e "set". Estou trabalhando com 3 classes, Main, Funcionário e Data.

Na resposta do exercício está assim:

public Data getDataEntrada() {
        return this.dataEntrada;
    }

    public void setDataEntrada (Data dataEntrada) {
        this.dataEntrada = dataEntrada;

Mas não consegui fazer com que o "set" receba "Data" e "get" devolva "Data". Só consegui fazer o programa funcionar trabalhando com "Strings":

public void setData(int dia, int mes, int ano){
        this.dataEntrada.setData(dia, mes, ano);
    }

    public String getData(){
        return this.dataEntrada.getData();
    }
class FuncionarioMain{

    public static void main(String[] args){

        Funcionario f1 = new Funcionario();

        f1.setNome("Rafael");
        f1.setDepartamento("Vendas");
        f1.setSalario(4000);
        f1.setData(14, 07, 2011);
        f1.setRG("486739008");

        System.out.println(f1.getNome());
        System.out.println(f1.getDepartamento());
        System.out.println(f1.getSalario());
        System.out.println(f1.getData());
        System.out.println(f1.getRG());
    }
}
class Data{

    int dia;
    int mes;
    int ano;

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

    String getData(){
        return dia + "/" + mes + "/" + ano;
    }
}
solução!

Problema resolvido... Eu tenho que criar uma variável do tipo Data, preenchê-la e depois atribuir ao funcionário "f1".

class FuncionarioMain{

    public static void main(String[] args){

        Funcionario f1 = new Funcionario();

        f1.setNome("Rafael");
        f1.setDepartamento("Vendas");
        f1.setSalario(4000);        
        f1.setRG("486739008");    

        Data dataEntrada = new Data();
        dataEntrada.setData(14,07,2001);
        f1.setData(dataEntrada);

        f1.mostra();
    }
}
class Funcionario{

    private String nome;
    private String departamento;
    private double salario;
    private Data dataEntrada = new Data();
    private String rg;

//Getters e Setters

public void setData(Data dataEntrada){
        this.dataEntrada = dataEntrada;
    }    

    public Data getData(){
        return this.dataEntrada;
    }    

    public void mostra(){
        System.out.println(this.getNome());
        System.out.println(this.getDepartamento());
        System.out.println(this.getSalario());
        System.out.println(this.getData().getDataFormatada());
        System.out.println(this.getRG());
        System.out.println("");
    }
}
class Data{

    int dia;
    int mes;
    int ano;

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

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

Consegui resolver por que achei uma dúvida aqui no fórum do Alura que era a mesma da minha. Obrigado!!!

boa manooo