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

Dúvida no identificar - Ex.1 da Aula 7

Não consegui achar o erro, mas quando coloco para rodar, o identificador de cada funcionário é o mesmo. (0 e 0). Alguém poderia tirar a dúvida de como posso resolver isso?

public class Funcionario {

    private String departamento;
    private String nome;
    private double salario;
    private String dataEntradaBanco;
    private String rg;
    private Data dataDeEntrada;
    private static int identificador;
    private int nFuncionario = 0;



    public Funcionario() {
        Funcionario.identificador = ++nFuncionario;
    }

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

    public static int getIdentificador() {
        return Funcionario.identificador;
    }




public class TesteFuncionario {

    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();
        Funcionario f2 = new Funcionario();

//        f1.setNome("Gustavo");
//        f1.setSalario(2000);
//        f1.recebeAumento(200);
//
//        f1.setDataDeEntrada(new Data());                   
//        f1.preencheDataDeEntrada(new Data(24, 12, 2016));
//
//        f1.mostra();
//        
        System.out.println(f1.getIdentificador());
        System.out.println(f2.getIdentificador());



    }
}
3 respostas
solução!

Você deve alterar o código,

A variável estática (comum a todos os objetos) deve ser declarada assim:

 private static int nFuncionario = 0;

Ela vai guardar o número do próximo funcionário.

Mas, a variável que identifica o funcionário deve ser declarada assim (será única para cada objeto).

private int identificador;

Nos construtores, incremente a variável assim:

this.identificador = ++nFuncionario ;

E o método deve ser alterado para ficar assim (pois retornará um atributo do objeto e não da classe):

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

Qual seria a diferença de colocar o "++" antes e depois?

Colocar antes, incrementa o valor da variável nFuncionário e depois atribui o valor a this.identificador.

Colocar depois, atribui o valor atual da variável nFuncionario a this.identificador e depois incrementa o valor da variável nFuncionário.