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

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

Ralei para entender trecho f1.setEntrada(new Data(1,7,2009)); Como proceder com o código para chegar à solução apresentada?

O mais próximo que cheguei foi o seguinte:

minha Classe Data:

class Data{
    private int dia;
    private int mes;
    private int ano;

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

minha Classe Funcionario

class Funcionario{
    private String nome;
    private String departamento;
    private double salario;
    private String rg;
    private Data entrada = new Data();

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

minha Classe TestaFuncionario

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

        f1.setNome("Samuel");
        f1.setDepartamento("Tecnologia");
        f1.setSalario(3000);
        f1.setRg("32106");
        f1.setDataEntrada(1,7,2009);

        f1.mostra();
    }
}
2 respostas
solução!

Oi Samuel, tudo bem?

Para conseguir o que você quer, vamos precisar de um assunto que talvez não tenha visto ainda, os construtores:

https://www.alura.com.br/course/java-1/section/6

Bem, peço veja a aula primeiro, aí as dúvidas que restarem vamos tirando aqui. :)

Segundo a própia descrição do capítulo:

Os Construtores são método invocados na hora que é chamado um novo método (new).

O construtor deve possuir o mesmo nome da classe, sem tipo de retorno (nem mesmo o void aparece), e pode receber argumentos.

A classe Data ficaria assim:

class Data{
    private int dia;
    private int mes;
    private int ano;

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

Isso deve permitir que você faça o que gostaria:

f1.setEntrada(new Data(1,7,2009));

Faz sentido? Qualquer dúvida é só falar que continuamos a discussão!

Abraço.

Obrigado pela explanação, Lucas.

Irei realizar a aula e se houver dúvida, retornarei ;-)

Abraço.