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

Problemas com o private no dataEntrada na classe Data

Pessoal, não consegui fazer funcionar o private no dataEntrada. Os outros atributos funcionaram corretamente. Estou colocando abaixo o código sem o private nesse atributo dataEntrada. Se alguém puder me auxiliar como devo proceder, eu agradeço. Obrigado.

class Funcionario {

    private String nome;
    private String departamento;
    private double salario;
    Data dataEntrada;
    private String rg;


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

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

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

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

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

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

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

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

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

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

    public void mostra(){

        System.out.println("Nome: " + this.nome);
        System.out.println("departamento: " + this.departamento);
        System.out.println("RG: " + this.rg);
        System.out.println ("Salário: " + this.salario);
        System.out.println("Ganho anual: " + this.calculaGanhoAnual());
        System.out.println ("Data de entrada: " + dataEntrada.getFormatada());  
    }

}

class Data {

    int dia, mes, ano;

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

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

    }

    String getFormatada(){

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

class Empresa {

     String nomeEmpresa;
    String cnpj;
    Funcionario[] funcionarios;
    int livre = 0;

    void adiciona(Funcionario func){
        this.funcionarios[this.livre] = func;
        this.livre ++;
    }



    void mostraTodasAsInfos(){
        for (int i = 0; i < this.livre ; i++) {
            System.out.println("Funcionário na posição: " + i);
            this.funcionarios[i].mostra();
            System.out.println(this.contem(funcionarios[i]));
        }
    }

    boolean contem(Funcionario func){
        for (int i = 0; i < this.livre ; i++) {
            if (func == this.funcionarios[i]){
                return true;
            }
        }
        return false;

    }

}

class TestaEmpresa {

    public static void main(String[] args) {

        Empresa minhaEmpresa = new Empresa();
        minhaEmpresa.funcionarios = new Funcionario[10];

        Funcionario f1 = new Funcionario();
        f1.setSalario(6.200);
        f1.setNome("José da Silva");
        f1.setDepartamento("Gerência");
        f1.setRg("23764743");
        f1.dataEntrada = new Data();
        f1.dataEntrada.preencheData(1,3,2012); 
        minhaEmpresa.adiciona(f1);


        minhaEmpresa.mostraTodasAsInfos();

    }

}
5 respostas

Bom dia Rodrigo, quando você coloca o acesso do tipo private você não consegue acessar? faz o seguinte, criar os getters e os setters do atributo Data, na classe dos funcionarios, ai você ira conseguir acessar.

E lembrando com essa modificação ira ter que mudar coisas minimas no seu código, como você chamar o metodo dentro do metodo mostra. Ira ficar mais ou menos assim.

public void mostra(){

        System.out.println("Nome: " + this.nome);
        System.out.println("departamento: " + this.departamento);
        System.out.println("RG: " + this.rg);
        System.out.println ("Salário: " + this.salario);
        System.out.println("Ganho anual: " + this.calculaGanhoAnual());
        System.out.println ("Data de entrada: " + dataEntrada.getFormatada());  // Aqui vai ter uma modificação, alguma coisa assim.
    System.out.println("Data de entrada: " +getDataEntrada().getFormatada());
    }

Pois é. O que eu não estou conseguindo é justamente setar o atributo dataEntrada no main. Já tentei de várias maneiras e não deu certo. Ele sempre dá o erro dataEntrada has private access in Funcionario

solução!

Oi Alisson. Consegui resolver. O código resolvido está abaixo. O que faltava fazer corretamente era criar no main uma nova instância data (minhaDataEntrada) e referencia-la ao método setDataEntrada(). Obrigado pela ajuda.

class Funcionario {

    private String nome;
    private String departamento;
    private double salario;
    private Data dataEntrada;
    private String rg;


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

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

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

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

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

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

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

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

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

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

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

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

    public void mostra(){

        System.out.println("Nome: " + this.getNome());
        System.out.println("departamento: " + this.getDepartamento());
        System.out.println("RG: " + this.getRg());
        System.out.println ("Salário: " + this.getSalario());
        System.out.println("Ganho anual: " + this.calculaGanhoAnual());
        System.out.println ("Data de entrada: " + this.getDataEntrada().getDataFormatada());  
    }

}

class Data {

    int dia, mes, ano;

    public void setPreencheData (int dia, int mes, int ano) {

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

    }

    public String getDataFormatada(){

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

class Empresa {

     String nomeEmpresa;
    String cnpj;
    Funcionario[] funcionarios;
    int livre = 0;

    void adiciona(Funcionario func){
        this.funcionarios[this.livre] = func;
        this.livre ++;
    }



    void mostraTodasAsInfos(){
        for (int i = 0; i < this.livre ; i++) {
            System.out.println("Funcionário na posição: " + i);
            this.funcionarios[i].mostra();
            System.out.println(this.contem(funcionarios[i]));
        }
    }

    boolean contem(Funcionario func){
        for (int i = 0; i < this.livre ; i++) {
            if (func == this.funcionarios[i]){
                return true;
            }
        }
        return false;

    }

}

class TestaEmpresa {

    public static void main(String[] args) {

        Empresa minhaEmpresa = new Empresa();
        minhaEmpresa.funcionarios = new Funcionario[10];

        Data minhaDataEntrada = new Data(); //nova instância Data

        Funcionario f1 = new Funcionario();
        f1.setSalario(6200.0);
        f1.setNome("José da Silva");
        f1.setDepartamento("Gerência");
        f1.setRg("23764743");

        minhaDataEntrada.setPreencheData(1,3,2012); // setar o método setPreencheData com os valores à nova instância
        f1.setDataEntrada(minhaDataEntrada); // referencia a nova instância minhaDataEntrada ao método setDataEntrada

        minhaEmpresa.adiciona(f1);


        Funcionario f2 = new Funcionario();
        f2.setSalario(3200.0);
        f2.setNome("Jurandir Cunha");
        f2.setDepartamento("Almoxarifado");
        f2.setRg("2397829287");

        minhaDataEntrada.setPreencheData(5,2,2002);

        f2.setDataEntrada(minhaDataEntrada); 

        minhaEmpresa.adiciona(f2);



        minhaEmpresa.mostraTodasAsInfos();

    }

}

Boa mano. Que bom que acho o eerro