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

A data não é exibida corretamente. Pq?

class Data {

    int dia;
    int mes;
    int ano;

    void mostraData(int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
}
class Funcionario {
     // Atributos 

    String nome;
    String departamento;
    double salario;
    //String dataEntrada;
    String rg;
    Data dataDeEntrada;

  //Métodos
    void recebeAumento(double porcentagem) {
        double novoSalario = this.salario + (this.salario * porcentagem);
        this.salario = novoSalario;
    }

    double calculaGanhoAnual() {
         return (this.salario * 12);
    }

    void mostra(){
        System.out.println("Nome: "+ this.nome);
        System.out.println("departamento: " + this.departamento);
        System.out.println("Salário: " + this.salario);
          System.out.println("Data de Entrada: " + this.dataDeEntrada.mostraData(int, int, int));
        System.out.println("RG: " + this.rg);
        System.out.println("GAnho Anual: " + calculaGanhoAnual());

    }

}
class ModelaFuncionario {


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

        f1.dataDeEntrada = new Data();
        f1.dataDeEntrada.mostraData(18, 06, 90);

        f1.mostra();

 }
}
6 respostas

como a data é exibida ?

solução!

Olá Liliane,

Peguei o seu código e não chegou a compilar, pois há um erro no seguinte trecho:

System.out.println("Data de Entrada: " + this.dataDeEntrada.mostraData(int, int, int));

o método mostraData, é utilizado para você atribuir os valores, talvez o nome tenha te confundido, você pode trocar para atribuiData ou algo similar, isso é só uma dica.

O que você pode fazer para mostrar a data é na classe Data sobrescrever o método toString da seguinte forma

class Data {

    int dia;
    int mes;
    int ano;

    void mostraData(int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
    @Override
    public String toString() {
        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}

ou criar um método retorna data

class Data {

    int dia;
    int mes;
    int ano;

    void mostraData(int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
    public String retornaData(){
        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}

e no lugar do trecho que falei que está errado você pode fazer o seguinte: Caso tenha usado o toString():

System.out.println("Data de Entrada: " + this.dataDeEntrada);

Caso tenha criado o método retornaData():

System.out.println("Data de Entrada: " + this.dataDeEntrada.retornaData());

Espero ter ajudado.

Liliane o que o Joel falou está corretíssimo, acredito que nas próximas aulas esse método de retorna ou formatar a data será feito. Mas na maneira que você estava fazendo você so precisa corrigir lá no mostra a linha da data.

ficaria assim:

System.out.println("Data de Entrada: " + this.dataDeEntrada.dia + "/" + this.dataDeEntrada.mes + "/" + this.dataDeEntrada.ano);

Ola Liliane, o seu código não esta nem compilando, percebi que é iniciante então vou colocar aqui uma forma do seu código funcionar para que conclua o exercício.

coloquei os comentarios nas classes para explicar as alterações.

só devo avisar que existem formas melhores de trabalhar com data, por exemplo a nova api de data do java 8 LocalDate. mas isso você vera com o tempo.

bons estudos, espero ter ajudado.

class Data {

    //nao deixe de usar os modificadores de acesso dos atributos. para que não possam ser modificados fora dos métodos que disponibilizar.
    private int dia;
    private int mes;
    private int ano;

//coloquei os parâmetros da data no construtor da classe.
    public Data(int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

//agora este metodo devolve a data formatada para a sua classe Funcionário.
    public String mostraData() {
        return this.dia +"/"+ this.mes +"/"+ this.ano;
    }
}
class Funcionario {
    // Atributos 

   String nome;
   String departamento;
   double salario;
   //String dataEntrada;
   String rg;
   Data dataDeEntrada;

 //Métodos
   void recebeAumento(double porcentagem) {
       double novoSalario = this.salario + (this.salario * porcentagem);
       this.salario = novoSalario;
   }

   double calculaGanhoAnual() {
        return (this.salario * 12);
   }

   void mostra(){
       System.out.println("Nome: "+ this.nome);
       System.out.println("departamento: " + this.departamento);
       System.out.println("Salário: " + this.salario);
//este ponto estava com erro, pois chamava o método mostrarData com parâmetros errados. estava enviando o tipo primitivo do java int, e no caso deveria receber o valor.
         System.out.println("Data de Entrada: " + this.dataDeEntrada.mostraData());
       System.out.println("RG: " + this.rg);
       System.out.println("GAnho Anual: " + calculaGanhoAnual());

   }

}
class ModelaFuncionario {


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

        f1.dataDeEntrada = new Data(18, 06, 90);
    //Aqui não precisa mais chamar o mostraData, pois ele ja é chamado dentro do mostra de funcionário.
        //f1.dataDeEntrada.mostraData();

        f1.mostra();

 }
}

Segui a sugestão do amigo de cima, porem não consegui passar argumentos no construtor , fala que o construtor não está definido como ( int , int, int). ai fiz desse modo e deu tudo certo....

public class Data {

    private int dia = 2; // coloquei os valores direto nas variáveis..
    private int mes = 2;
    private int ano = 1993;



    void preencheData (int dia, int mes, int ano ){

        this.dia = dia;
        this.mes = mes;
        this.ano = ano;

    }

    public String mostraData(){

        return this.dia + "/" + this.mes + "/" + this.ano;
    }

}

Olá Matheus,

Quando você for escrever o seu constructor, você deve escrever ele com o mesmo nome da classe, ficando assim:

public class Data {

    private int dia = 2; // coloquei os valores direto nas variáveis..
    private int mes = 2;
    private int ano = 1993;



    void Data (int dia, int mes, int ano ){

        this.dia = dia;
        this.mes = mes;
        this.ano = ano;

    }

    public String mostraData(){

        return this.dia + "/" + this.mes + "/" + this.ano;
    }

}

Pelo que eu entendi você está fazendo a implementação do Eduardo correto? No caso toda a construção do main deve ser aplicado da forma que ele fez, a minha implementação foi feita no código da Liliane.