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

Modificadores de Acesso - Exercicio 3 (Atribuir valor para Data com o método Set)

Olá. Não estou conseguindo atribuir uma data no metodo Setter, pois está apresentando o erro abaixo na minha classe Main:

Exception in thread "main" java.lang.Error: nresolved compilation problem: The constructor Data(int, int, int) is undefined at TestaPrograma.main(TestaPrograma.java:29)

Poderiam me informar onde estou errando, por favor? Segue meu código, obrigado !


public class TestaPrograma {

public static void main(String[] args) {

        Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[4];

        for (int i = 0; i < empresa.empregados.length; i++) {
        Funcionario func = new Funcionario();
        func.setSalario(1000 + i * 100);// = 1000 + i * 100;
        func.setNome ("Func" + i); // = "Func" + i;
        empresa.adiciona(func);
        }
        empresa.mostraEmpregados();

        // como a array tem 5 espaços, tenho que abrir um If no metodo adiciona para ñ dar erro !!


        Funcionario f = new Funcionario();
        f.setNome("func1"); // = "func1";


        Funcionario f1 = new Funcionario();
        f1.setNome("Eu1"); // = "Eu1";
        f1.setSalario(100);
        f1.RG = "123";
        //f1.dataEntrada.preencheData(8, 8, 1986);
        f1.setDataEntrada(new Data(8, 8, 1986)); // -> O ERRO ESTÁ AQUI 


        Funcionario f2 = new Funcionario();        
        //f2.nome = "Eu2";
        f2.setSalario(2000);
        f2.RG = "123";
        //f2.dataEntrada = "01/01/2011";

        Funcionario f3 = new Funcionario();
        //f3.nome = "Eu3";
        f3.setSalario(3000);
        f3.RG = "456789";
        //f3.dataEntrada = "01/01/2013";

        f1.recebeAumento(50);
        //f1.mostra();
        //f1.calculaGanhoAnual();

        f2 = f1;

        //System.out.println("salario " + f1.salario + " aumento de ");

        if(f1 == f2){
            System.out.println("salario de f1 e f2 são iguais");
        }else{
            System.out.println("salario de f1 e f2 são diferentes");    
            }
        }
    }


public class Funcionario {
    private double salario;
    //String dataEntrada;
     String RG;
    private String nome;


    public Data dataEntrada=new Data();
        public Data getDataEntrada(){
            return this.dataEntrada;
        }
        public void setDataEntrada (Data dataEntrada) {
            this.dataEntrada = dataEntrada;
        }


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

    public double calculaGanhoAnual () {
        return this.salario += salario * 11;
    }

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


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



    void mostra(){
        System.out.println("Nome " + this.nome);
        System.out.println("Salario " + this.salario);
        System.out.println("RG " + this.RG);
        System.out.println("Dia da Admissão " + this.dataEntrada.dia);
        System.out.println("Data da Admissão " + this.getDataEntrada().getFormatada());
        System.out.println("Ganho Anual " + this.calculaGanhoAnual());
    }
}

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

    //Data preencheData = new Data();

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

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

Oi Rafael,

para deixar o seu código compilar, adicione na classe Data dois construtores, o construtor padrão e um outro construtor que recebe 3 Integers:

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

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

abs

Olá Nico. Criei os construtores, e apesar do programa rodar o resultado não está correto e tbm acredito que a sintaxe não está correta. Veja como ficou .... Poderia me orientar onde estou errando ? Obrigado !

public class TestaPrograma {

public static void main(String[] args) {
Funcionario f1 = new Funcionario();
        f1.nome = "Eu1";
        f1.salario = 1000;
        f1.RG = "123";
        f1.setDataEntrada.preencheData(8, 8, 1986);
        System.out.println(f1.getDataEntrada());
public class Data {
    public int dia;
    public int mes;
    public int ano;

    // Data dataEntrada=new Data();

    void preencheData (int dia, int mes, int ano) {
    this.dia = dia;
    this.mes = mes;
    this.ano = ano;
    }
    String getFormatada(){
        String data = this.dia + "/"+ this.mes + "/" + this.ano;
        return data;
                }
}
public class Funcionario {
    double salario;
    //String dataEntrada;
    String RG;
    String nome;
    private Data dataEntrada=new Data();
    Data setDataEntrada = new Data();

    public Data getDataEntrada(){
        return this.dataEntrada;
    }

    public void setDataEntrada (Data dataEntrada) {
        this.dataEntrada = dataEntrada;
    }
solução!

Resolvido. Quando assisti a aula de Construtores, que até então não havia assistido, pude entender melhor a resposta do Nico (não estava entendendo).

Segue como ficou minha classe agora ajustada:


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

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

    public Data() {
        // TODO Auto-generated constructor stub
    }

    public String getFormatada(){
        String data = this.dia + "/"+ this.mes + "/" + this.ano;
        return data;
                }
}
        Funcionario f1 = new Funcionario();
        f1.setNome("Eu1"); // = "Eu1";
        f1.setSalario(100);
        f1.RG = "123";
        f1.setDataEntrada(new Data (8, 8, 1986));
public class Funcionario {
    private double salario;
    //String dataEntrada;
     String RG;
    private String nome;


    public Data dataEntrada=new Data();

        public Data getDataEntrada(){
            return this.dataEntrada;
        }
        public void setDataEntrada (Data dataEntrada) {
            this.dataEntrada = dataEntrada;
        }
}

Obrigado !

use o método _construct