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

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

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 getFormatadata() {
    return this.dia + "/" + this.mes + "/" + this.ano;
  }
}

class TestaFuncionario {
   public static void main(String[] args) {
     Funcionario f1 = new Funcionario();

     f1.setNome("Hugo");
     f1.setSalario(100);
     f1.setDepartamento("TI");
     f1.setRg("123456");
     Data data1 = new Data();
     data1.preencheData(1,7,2009);

     f1.setDataEntrada(data1);

     f1.mostra();
  }
}

Como faço para substituir esta linha

f1.setDataEntrada(data1); por esta f1.setDataEntrada(new Data().preencheData(1,7,2009));

4 respostas

Laercio ,

o jeito que você fez está correto .

mas caso queira mesmo mudar para uma linha apenas , você precisa apenas fazer do jeito que você escreveu mesmo mas terá que apagar ou comentar a seguinte linha :

//Data data1 = new Data();
    // data1.preencheData(1,7,2009);

     //f1.setDataEntrada(data1);

e trocar por

f1.setDataEntrada(new Data().preencheData(1,7,2009));

se a resposta for suficiente , por gentileza , feche o topico .

espero ter ajudado , Bons estudos

Laercio,

somente se atente ao fato do seu método "preencheData" ser void, portanto ele não retorna nada.

E quando você chama esse código:

f1.setDataEntrada(new Data().preencheData(1,7,2009));

você está passando o retorno do último método chamado como parâmetro para o "setDataEntrada", que nesse caso vai ser o "preencheData" e vai dar erro.

Se você quiser chamar o set dessa maneira o método "preencheData" precisa retornar uma Data, sendo mais especifico, deve retornar a própria instância que você está manipulando, o que ficaria mais ou menos assim.

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

    return this;
  }

Você viu o que foi modificado no código acima? O método preencheData passa a retornar uma instância de Data ao invés de void e ali no return você passa this, uma referência a própria instância que está sendo manipulada.

Bons estudos.

solução!

Laercio ,

so complementando a resposta do Djonathan , o seu método preenche data poderá também chamar o método getFormatada no caso ficaria desse jeito :

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

    return  getFormatada();
  }

assim teríamos a data no formato .

espero ter ajudado , Bons Estudos

Certinho, muito obrigado