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

Exercício 6 - Atividade 3 - Não entendi muito bem como fazer, e não consigo fazer as duas classes funcionarem. Não sei como separo as classes

class Funcionario { String nome; double salario;

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; }

}

class TestaFuncionario { public static void main(String[] args) { Funcionario f1 = new Funcionario(); f1.nome = "Hugo"; f1.salario = 100;

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

f1.mostra(); } }

7 respostas
solução!

Olá Aline, o melhor é você criar 3 arquivos, um para cada classe, no caso seria um Funcionario.java, Data.java e TestaFuncionario.java, e colocar cada um o seu respectivo código:

Data.java:

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;
    }

}

Funcionario.java:

class Funcionario {
    String nome;
    double salario;
    public Data dataDeEntrada;

    public void mostra() {
        //implementar mostra
    }
}

TestaFuncionario.java:

class TestaFuncionario {
    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();
        f1.nome = "Hugo";
        f1.salario = 100;

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

        f1.mostra();
    }
}

Todos eles devem ficar na mesma pasta. Compila nessa ordem também.

Qualquer problema avisa

Isso que o amigo falou acima

Quase posto a mesma coisa que você Joel. : )

:D

Acontece, já fiz isso algumas vezes.

Obrigada pela ajuda!!!!

Não entendi bem o trecho de código abaixo

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

Quando escrevo f1.dataDeEntrada = new Data(); estou inicializando o atributo dataDeEntrada com o objeto Data() certo? Mas quando escrevo f1.dataDeEntrada.preencheData(1, 7, 2009); estou chamando o método preencheData da classe Data partindo do atributo de f1 dataDeEntrada e ai não entendi a relação entre eles, pode me explicar melhor por favor?

Oi Tadeu,

O f1 é um Funcionario, isso pode ser visto um pouco mais acima no código

Funcionario f1 = new Funcionario();

Acho que isso não é o problema, certo? Mas para entender o código que vem mais abaixo você tem que entender o que há na classe funcionario:

class Funcionario {
    String nome;
    double salario;
    public Data dataDeEntrada;
    .
    .
    .
}

e você notar bem a classe Funcionario tem um atributo chamado dataDeEntrada e ele é do tipo Data, que por sua vez é da seguinte forma:

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

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

Quando você faz f1.dataDeEntrada você está acessando o atributo dataDeEntrada da classe Funcionario, como o atributo dataDeEntrada é do tipo Data e essa classe tem o método preencheData então você pode fazer o comando:

f1.dataDeEntrada.preencheData(1, 7, 2009);

Isso vai depender das permissões que você dá para o método, mas isso é algo que você verá mais para a frente no curso.