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

Dúvida no Ex. 2 da Aula 7 - Atributos e métodos estáticos

Me pergunto se essa solução não estaria mais correta, fez tanto sentido para mim. Dessa forma não precisa de getIdentificador. O que acham?

private static int identificador = 0;

        public Funcionario(){
            identificador++;
        }

        public int getIdentificador(){
            return identificador;
        }
2 respostas
solução!

Olá Henrique! Veja bem, da forma como você fez há um problema de encapsulamento. Veja que o atribulo identificador é de cada Funcionario, ou seja, cada Funcionário deve ter seu próprio número identificador e esse número deve ser acessível apenas por esse Funcionario.

Do jeito como você fez o identificador é um atributo da classe, logo é acessível a partir da classe e não do Funcionário, também todo funcionário terá o mesmo número identificador e isso está errado.

Da forma como foi feito no exercício:

public class Funcionario {

    public static int proximoFuncionario = 0;
    private int identificador;

    public Funcionario(String nome) {
        this.nome = nome;
        this.identificador = proximoFuncionario++;
    }

    public int getIdentificador() {
        return this.identificador;
    }

    // restante da classe
}

Veja que por identificador ser uma variável de instancia, cada Funcionário terá seu próprio número. No entanto, será possível acessar através da classe, qual será o número do próximo Funcionário. Faz mais sentido, é mais semântico e torna os atributos bem encapsulados. Espero ter ajudado! Bons Estudos!

o primeiro funcionário não começaria do 0 com esse codigo?