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

Dúvida Modificadores de Acesso

Tenho o seguinte problema na hora de mostrar dataDemissao e dataAdmissao.

O problema é que quero converter as datas de admissão e demissão, que são private na classe Funcionário.

  • A conversão fica na classe Data.
  • A chamada da conversão fica na classe Funcionario.
  • O método mostraData, onde tem a gambiarra, fica na classe Funcionario

Eu gostaria de ter algo tipo:

System.out.println("Demissao  :" + this.empregados[i].dataDemissao.converteData());
System.out.println("Admissao  :" + this.empregados[i].dataAdmissao.converteData());

Mas não posso devido ao modificador private (quero manter private) de dataAdmissao e dataDemissao.

por isto, fiz uma gambiarra o método mostraData. Nem sei se é gambiarra, ou se é a solução ideal mesmo. vou postar aqui os trechos que interessam.Alguém se habilita?

classe Funcionário

class Funcionario {
    int codigo;
    Pessoa dadosCadastrais;
    private double salario;
    private int departamento;
    private Data dataAdmissao;
    private Data dataDemissao;
    ...
    public String mostraData(String tipo) {
        if (tipo == "A") {
            return(this.dataAdmissao.converteData())    ;
        } else if (tipo == "D")    {
            return(this.dataDemissao.converteData())    ;
        } else {
            return("xx/xx/xx");
        }

    }

classe Empresa

    void mostraEmpregados() {
        for (int i = 0; i < this.empregados.length; i++) {
        if (this.empregados[i] != null) {
            System.out.println("Funcionário na posição: " + i);
            System.out.println("Nome        :" + this.empregados[i].dadosCadastrais.getNome());
            System.out.println("Salario     :" + this.empregados[i].getSalario());
            System.out.println("Nascimento  :" + this.empregados[i].dadosCadastrais.dataNascimento.converteData()); 
            System.out.println("Admissao    :" + this.empregados[i].mostraData("A"));             
            System.out.println("Demissao    :" + this.empregados[i].mostraData("D"));                         
        }           
        }
    }

classe Data

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


            }

            String converteData () {
                String dt_trab_dia, dt_trab_mes ;
                if (this.dia < 10){
                    dt_trab_dia = "0" + this.dia;
                } else {
            dt_trab_dia = "" + this.dia;                    
                }
                if (this.mes < 10){
                    dt_trab_mes = "0" + this.mes;
                } else {
            dt_trab_mes = "" + this.mes;                    
                }
                String dt_trab_ano = "" + this.ano;
                return (dt_trab_dia + "/" + dt_trab_mes + "/" + dt_trab_ano);
            }

}
3 respostas
solução!

Oi Sidnei,

Você poderia fazer na sua classe um método getDataAdmissao e outro getDataDemissao.

Seu código poderia ficar da seguinte forma:

classe Funcionario

class Funcionario {
    int codigo;
    Pessoa dadosCadastrais;
    private double salario;
    private int departamento;
    private Data dataAdmissao;
    private Data dataDemissao;
    //...
    public Data getDataAdmissao(){
        return this.dataAdmissao;
    }

    public Data getDataDemissao(){
        return this.dataDemissao;
    }
}

E na classe Empresa você pode fazer:

System.out.println("Demissao :" + this.empregados[i].getDataDemissao().converteData());
System.out.println("Admissao :" + this.empregados[i].getDataAdmissao().converteData());

Abraço!

Joviane, puxa vida!!!! Eu pensei que ninguém ia ter saco de ler meu post... Só por isto você já merece parabéns!

Mas não posso ficar apenas nos parabéns: você matou minha charada!!! Eu devia tar dormindo, mas insisti em teimar. Ora, para que servem os getters?

Deu certo.

Muito obrigado mesmo.

Abraço!

Imagina Sidnei, precisando só falar :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software