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

Cap. 3 - Exe: 6

Galera! Sobre o exercício 6 do capitulo 3! Eu não entendi muito bem como funciona esse programa... Colem o código do programa de vocês aqui pra mim ver como é! Ou se não me expliquem, sei lá rs. desde já agradeço!

7 respostas

Você deverá possuir duas classes -> "Funcionario" e "TestaFuncionario" o exercicio pede para que você crie a terceira classe "Data" e justamente essa nova classe e que o funcionario passe a usa-la como um atributo. Ex.

private Data data;

apos isso rodar normalmente o código da classe TestaFuncionário que é o único que possui metódo main.

Exatamente como o Odenilton falou, você deverá criar um outra classe chamada Data e deverá substituir a propriedade dataentrada da sua classe Funcionário para utilizar essa classe Data e não uma String.

Exatamente Sandro e Odenilton, concordo. Se ele veio seguindo ATENTAMENTE o curso, será capaz de realizar estes procedimentos.... Bom código galera.

Seja mais humilde Ricardo, nem todos tem a capacidade de aprender algo tão rápido. Mas galera aqui ta o meu código. Não consigo compilar ele, gosto de quebrar a cabeça até resolver, mas agora admito preciso de um help! rs. Segue o cód:

class Funcionario2 { String nome; double salario; Data dataEntrada;

void mostra(){ System.out.println("Data: " + dataEntrada); } }

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 TestaFuncionario2{ public static void main(String[] args){ Funcionario f1 = new Funcionario(); f1.nome = "Marcos"; f1.salario = 200;

f1.dataEntrada = new Data(); f1.dataEntrada.preencheData(1, 4, 2005);

f1.mostra();

} }

solução!

Tiago, o que exatamente você não está conseguindo entender? Veja, o código é relativamente simples: 1. A classe Data define um objeto que conterá os dados que permitem tratar uma data, com dia, mês e ano. Até aí, acho que está tranquilo, certo? 2. O método preencheData serve para definir em uma única chamada todos os atributos da classe, ele é apenas um facilitador, que evita de você fazer coisas como

Data.dia=1;
Data.mes=4;
Data.ano=2015;

No lugar disso, você usa uma única chamada que faz o mesmo:

Data.preencheData(1,4,2015);
  1. A classe funcionário possui um campo dataEntrada que é do tipo Data, ou seja, ele pode receber um valor nesse atributo que é na verdade uma instância da classe Data;
  2. Na classe TestaFuncionario2, você apenas instancia uma classe do tipo Funcionário define os valores de seus atributos e manda a classe mostrar a data de entrega.

Mas dois detalhes me chamaram a atenção: 1. Na definição da classe você chamou de Funcionario2, mas no código da TestaFuncionario instanciou a classe Funcionário, sem o 2, não sei se foi erro no momento de transcrever o código aqui ou se foi erro na hora da programação mesmo que impediu o Java de compilar; 2. No método mostra, você faz:

System.out.println("DataEntrada: " + DataEntrada);

quando deveria fazer algo como :

System.out.println("DataEntrada: " + this.DataEntrada.dia + "/" + this.DataEntrada.mes + "/" + this.DataEntrada.ano);

Talvez esses tenham sido os motivos de suas dúvidas, se não for nada disso, explique melhor o que está acontecendo.

esse código que você passou por ultimo

class Funcionario2 {
    String nome;
    double salario;
    Data dataEntrada;

    void mostra() {
        System.out.println("Data: " + dataEntrada);
    }
}

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 TestaFuncionario2 {
    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();// hora de criar o funcionarío vc da tipo "Funcionário" mas na classe vc deu nome de Funcionario2 veja isso
        f1.nome = "Marcos";
        f1.salario = 200;

        f1.dataEntrada = new Data();
        f1.dataEntrada.preencheData(1, 4, 2005);

        f1.mostra();

    }
}

Valeu Sandro e Odenilton! Problema resolvido!obrigado pela paciência, é que estou começando agora, estou me esforçando o máximo mas as vezes me perco mesmo assim. Valeu!! Se desse eu marcava as duas como solução, mas... Abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software