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

Não sei ao certo onde colocar o get e o set

class Empresa{
    Funcionario [] funcionarios;
    Data[] dataDeAdimissao;
    int livre=0;

    void adicionaFuncionario(Funcionario f){
        this.funcionarios[this.livre]=f;
        this.livre++;

    }

    void setFuncionario(){
        for(int i=0; i<this.funcionarios.length; i++){
            Funcionario funcionario= this.funcionarios[i];
            if(funcionario== null)continue;
            System.out.println("Nome do funcionario: "+funcionario.getNome());
            System.out.println("Setor do funcionario: "+funcionario.getSetor());
            System.out.println("Numero do cracha: "+funcionario.getCracha());
            System.out.println("Salario do funcionario: R$" +funcionario.getSalario());
            System.out.println("Data de adimmisao: "+ funcionario.dataDeAdimissao.getDia()+"/"+funcionario.dataDeAdimissao.getMes()+"/"+funcionario.dataDeAdimissao.getAno());
            System.out.println("");    
        }
    }

    boolean contem(Funcionario f){
                    for( int i=0; i<this.livre; i++){
                        if(f==this.funcionarios[i]){
                            return true;
                        }
                    }
                    return false;    
                }
}
class Funcionario{
    private String nome;
    private String setor;
    private int cracha;
    private double salario;
    private    Data dataDeAdimissao;

    void recebeAumento(double aumento){
        this.salario+= aumento;
    }
    double calculaGanhoAnual(double ganho){
        return this.salario*12;
    }
        ///////////////////Nome do Funcionario//////////////////////////////
        public void setNome(String nomeFuncionario){
        this.nome=nomeFuncionario;
        }
        public String getNome(){
        return this.nome;
        }            
        ///////////////////Nome do setor//////////////////////////////////    
        public void setSetor(String nomeSetor){
            this.setor=nomeSetor;
        }
        public String getSetor(){
            return this.setor;
        }
        //////////////////////Numero do crachá//////////////////////////////
        public void setCracha(int numeroCracha){
            this.cracha=numeroCracha;
        }     
        public int getCracha(){
            return this.cracha;
        }
        ///////////////////////Valor do salário////////////////////////////
        public void setSalario(double valorSalario){
            this.salario=valorSalario;
        }
        public double getSalario(){
            return this.salario;
        }

        //////////////////////Dia do contrato/////////////////////////////
        public void setDia(int novoDia){
            this.dia=novoDia;
        }
        public int getDia(){
            return this.dia;
        }
        //////////////////////Mes do contrato///////////////////////////////////
        public void setMes(String novoMes){
            this.mes=novoMes;
        }
        public String getMes(){
            return this.mes;
        }
        ///////////////////Ano do contrato//////////////////////////////
        public void setAno(int novoAno){
            this.ano=novoAno;
        }
        public int getAno(){
            return this.ano;
        }

}
    class Data{
        private int dia;
        private String mes;
        private int ano;
    }

Quando coloco o get e set do dia, mês e ano na classe data ele dá problema com o "System.out.println("Data de adimmisao: "+ funcionario.dataDeAdimissao.getDia()+"/"+funcionario.dataDeAdimissao.getMes()+"/"+funcionario.dataDeAdimissao.getAno());" dizendo que é privado porém quando coloco os get's e set's dentro da classe funcionário ele não reconhece o "this.dia; this.mes e this.ano" e nessa parte do programa

 class principal{
    public static void main(String args[]){


        Funcionario mauricio= new Funcionario();
        mauricio.dataDeAdimissao= new Data();
        Empresa fablab= new Empresa();
        fablab.funcionarios= new Funcionario[10];
        fablab.dataDeAdimissao= new Data[10];

        fablab.funcionarios[0] = new Funcionario();
        fablab.dataDeAdimissao[0]= new Data();

        fablab.dataDeAdimissao[0].setDia(1);
        fablab.dataDeAdimissao[0].setMes("Outubro");
        fablab.dataDeAdimissao[0].setAno(2000);
        fablab.funcionarios[0].setNome("Mauricio Akbar");
        fablab.funcionarios[0].setSetor("Faxina");
        fablab.funcionarios[0].setCracha(34567);
        fablab.funcionarios[0].setSalario(1000.0);


        fablab.funcionarios[1]= new Funcionario();
        fablab.dataDeAdimissao[1]= new Data();


        fablab.funcionarios[1].setNome("Guilherme Xispirito");
        fablab.dataDeAdimissao[1].setDia(1);
        fablab.dataDeAdimissao[1].setMes("Janeiro");
        fablab.dataDeAdimissao[1].setAno(2010);
        fablab.funcionarios[1].setSetor("Vendas");
        fablab.funcionarios[1].setCracha(171);
        fablab.funcionarios[1].setSalario(2500.0); 


        fablab.setFuncionario();

    }
}

Ele da erro na linha "mauricio.dataDeAdimissao= new Data();" dizendo que é privado e eu não sei arrumar o get e o set para contornar esse problema .

3 respostas
solução!

O primeiro problema é que você criou os get's e set's da Classe Data na Classe Funcionario, por isso não está conseguindo acessar.

O problema do dataDeAdimissao é que você em nenhum lugar criou o get e set dele, sendo assim não vai ser capaz de acessa-lo pois está privado.

Fora isso eu particularmente não consegui entender a função do programa, talvez com o enunciado ou uma explicação do propósito do programa ficaria mais claro

então tudo isso vai dentro do class data?

Exemplo

class Data{
        private int dia;
        private String mes;
        private int ano;
    }
public void setDia(int novoDia){
            this.dia=novoDia;
        }
        public int getDia(){
            return this.dia;
        }
        //////////////////////Mes do contrato///////////////////////////////////
        public void setMes(String novoMes){
            this.mes=novoMes;
        }
        public String getMes(){
            return this.mes;
        }
        ///////////////////Ano do contrato//////////////////////////////
        public void setAno(int novoAno){
            this.ano=novoAno;
        }
        public int getAno(){
            return this.ano;
        }

Sim Thiago, caso você queria criar get's e set's para a classe ela deve estar no Bloco da Classe:

Data {

Aqui o get's and set's }