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

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

Ao tentar compilar a classe main, está apresentando a seguinte mensagem de erro:

Exercicio1.java:13: error: constructor Data in class Data cannot be applied to given types:    
    dani.setDataDeEntrada(new Data(1, 1, 2015));

required: no arguments    
found: int, int, int    
reason: actual and formal argument list differ in length

Segue as classes:

Agradeço desde já

class Funcionario{

    private String nome;    
    private String rg;
    private String cpf;
    private String departamento;
    private double salario;
        private Data dataDeEntrada;    

    public String getNome(){
        return this.nome;
    }

    public void setNome(String nome){
        this.nome = nome;
    }

    public String getRg(){
        return this.rg;
    }

    public void setRg(String rg){
        this.rg = rg;
    }

    public String getCpf(){
        return this.cpf;
    }

    public void setCpf(String cpf){
        this.cpf = cpf;
    }

    public String getDepartamento(){
        return this.departamento;
    }

    public void setDepartamento(String departamento){
        this.departamento = departamento;
    }

    public double getSalario(){
        return this.salario;
    }

    public void setSalario(double salario){
        this.salario = salario;
    }

    public Data getDataDeEntrada(){
        return this.dataDeEntrada;
    }

    public void setDataDeEntrada(Data dataDeEntrada){
        this.dataDeEntrada = dataDeEntrada;
    }



        public void recebeAumento(double valorAumento){
            this.salario += valorAumento;
        }    


        public void calculaGanhoAnual(){
             double ganhoAnual = salario * 12;
            System.out.println("Ganho Anual:" +  ganhoAnual);
        }    

        public void descontoSalario(double valorDesconto){
            this.salario -= valorDesconto;
        }    

        public void mostra(){    
            System.out.println("Nome:" + nome);
            System.out.println("Rg:" + rg);
            System.out.println("Cpf:" + cpf);
            System.out.println("Departamento:" + departamento);
            System.out.println("Salário:" + salario);
            System.out.println("Data de entrada:" + this.dataDeEntrada.getFormatada());
        }
    }
class Exercicio1{

    public static void main (String[] args){

    Funcionario dani = new Funcionario();

    dani.setNome("Daniella Nunes");
    dani.setRg("123456789");
    dani.setCpf("987654321");
    dani.setDepartamento("TI");
    dani.setSalario(2500.0);

    dani.setDataDeEntrada(new Data(1, 1, 2015));

    dani.recebeAumento(500.0);
    dani.descontoSalario(200.0); 
    dani.mostra();
    dani.calculaGanhoAnual();
      }
    }
class Data{    


    private int dia;    
    private int mes;    
    private int ano;    

    public int getDia(){
        return this.dia;
    }

    public void setDia(int dia){
        this.dia = dia;
    }

    public int getMes(){
        return this.mes;
    }

    public void setMes(int mes){
        this.mes = mes;
    }

    public int getAno(){
        return this.ano;
    }

    public void setAno(int ano){
        this.ano = ano;
    }

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

     }

    public String getFormatada(){
    return this.dia + "/" + this.mes + "/" + this.ano;
    }
    }
4 respostas

Boa noite Daniella. Tudo bom? Acredito que você tenha esquecido de colocar um construtor na sua Classe Data. Tente colocar um construtor na Classe Data e depois tente compilar. Ex:

public Data(int dia, int mes, int ano){
            this.dia = dia;
            this.mes = mes;
            this.ano = ano;
        }
solução!

Oi Daniella, tudo bem?

O problema é relacionado ao construtor. É um assunto que você irá estudar um pouco mais para frente neste mesmo curso.

A forma mais simples de resolver nesse momento, é fazendo a seguinte alteração no seu código da classe Exercício1:

class Exercicio1{

    public static void main (String[] args){

        Funcionario dani = new Funcionario();

        dani.setNome("Daniella Nunes");
        dani.setRg("123456789");
        dani.setCpf("987654321");
        dani.setDepartamento("TI");
        dani.setSalario(2500.0);

    Data data = new Data(); // criando o objeto data
    data.setDia(1); // preenchendo o dia
    data.setMes(1); // preenchendo o mês
    data.setAno(2015); // preenchendo o ano

        dani.setDataDeEntrada(data); // passando data como argumento

        dani.recebeAumento(500.0);
        dani.descontoSalario(200.0); 
        dani.mostra();
        dani.calculaGanhoAnual();
    }
}

Para o código atual que você tem, fucionar, basta uma alteração de feita na classe Data, mas isso exige o conhecimento sobre construtoresm que acredito que ainda irá adquirir:

class Data{    


    private int dia;    
    private int mes;    
    private int ano;    

    public Data() {} // construtor padrão

    public Data(int dia, int mes, int ano) { // construtor que recebe dia mes e ano
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

    public int getDia(){
        return this.dia;
    }

    public void setDia(int dia){
        this.dia = dia;
    }

    public int getMes(){
        return this.mes;
    }

    public void setMes(int mes){
        this.mes = mes;
    }

    public int getAno(){
        return this.ano;
    }

    public void setAno(int ano){
        this.ano = ano;
    }

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

     }

    public String getFormatada(){
    return this.dia + "/" + this.mes + "/" + this.ano;
    }
    }

Faz sentido? Testa e vê se funciona?

Abraço.

Olá Lucas e Mihael, obrigada pela ajuda.

Lucas, faz todo sentido, testei e funcionou, obrigada!