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

não estou conseguindo usar o modificador de acesso em data.

Olá, não estou conseguindo usar o modificador de acesso em Data, ja tentei usar a lógica do set e do get, mais como se trata de uma classe não estou tendo exito, consegui usar o get em getFormatadaData() para imprimir porém quando deixo o Data dataDeEntrada; em private não consigo prosseguir. Segue o código:

class Funcionario {

    private String nomeFuncionario;
        public void setNomeFuncionario(String texto) {
            this.nomeFuncionario = texto;        
        }

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

    private String funcao;
        public void setFuncao(String texto) {
            this.funcao = texto;
        }

    private double salario;
        public void setValorDoSalario(double valor) {
            this.salario = valor;
        }

    private double aumento;
        public void setAumento(double valor) {
            this.aumento = valor;
        }
        public double recebeAumento() {
            return this.salario + this.aumento;
        }
        public double calculaGanhoAnual() {
            return this.salario * 12;
        }
        public double calculaGanhoAnualComAumento() {
            return this.recebeAumento() * 12;
        }

    private Data dataDeEntrada;
        public void setDataDeEntrada(int dia, int mes, int ano) {
            this.dataDeEntrada() = dia + mes + ano;
        }

    private int idade() {

        return 2017 - this.dataDeEntrada.ano;
    }

    public void mostra() {

        System.out.println("===========================================================");
        System.out.println();
        System.out.println("****************************************************************");
        System.out.println(" MOSTRANDO TODAS AS INFORMACOES DO FUNCIONARIO " + this.nomeFuncionario);
        System.out.println("****************************************************************");
        System.out.println();

        System.out.println("o funcionario: " + this.nomeFuncionario);   
        System.out.println("Tem CPF: " + this.cpf);
        System.out.println("Ocupa o cargo: " + this.funcao);
        System.out.println("Sua idade e: " + this.idade());
        System.out.println("Entrou na empresa em: " + this.dataDeEntrada.getFormatadaData());
        System.out.println("Recebe a quantia de: " + this.salario);
        System.out.println("Teve um aumento de: " + this.aumento);
        System.out.println("Seu salario mais aumento somam: " + this.recebeAumento());
        System.out.println("Tendo ganho anual de: " + calculaGanhoAnual() + " sem o aumento.");
        System.out.println("Com seu aumento o Ganho Anual passa a: " + this.calculaGanhoAnualComAumento());
    }
}

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

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

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

Adendo: Também tentei usar o get assim:

private Data dataDeEntrada;
        public void getDataDeEntrada() {
            return dataDeEntrada;
        }

Os demais privates e public foram aplicado com certa facilidade.

solução!

Olá, seu método getter deve ser assim:

public Data getDataDeEntrada() {
    return dataDeEntrada;
}

o método setter deve ser:

public void setDataDeEntrada(int dia, int mes, int ano) {
   Data newData = new Data();
   newData.preencheData(dia, mes, ano);
   this.dataDeEntrada = newData;
}

Boa galera!!

Olá vocês poderiam dar uma explicação breve de o porque ser assim?

Como você tem um objeto da classe Data, para efetuar o set é necessário fazer como eu descrivi no post anterior.

Na sua duvida, o código this.dataDeEntrada() = dia + mes + ano; daria erro pois está sendo feito uma atribuição de uma soma para um método que não existe

Obrigado Sávio!