Bom dia pessoal, tentando fazer esse exercicio da apostila caelum f11, o ecercicio pede para colocar uma identificador no código:
(opcional) Adicione um atributo na classe Funcionario de tipo int que se chama identificador. Esse identificador
deve ter um valor único para cada instância do tipo Funcionario. O primeiro Funcionario instanciado
tem identificador 1, o segundo 2, e assim por diante. Você deve utilizar os recursos aprendidos aqui para
resolver esse problema.
Crie um getter para o identificador. Devemos ter um setter?
Eu tentei usar o mesmo processo que está mostrando na apostila usando static, mas do meu jeito nao está dando certo, talvez seja a posição da variável no contexto do código, vou mostrar o código pra vcs
[code]class Funcionario {
private String nome;
private String depto;
private double salario;
private Data dataEntrada;
private String rg;
boolean estaNaEmpresa = true;
private static int identificador;
Funcionario() {
Funcionario.identificador = Funcionario.identificador +1;
}
public int getIdentificador() {
return Funcionario.identificador;
}
Funcionario(String nome) {
this.nome = nome;
}
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDepto() {
return this.depto;
}
public void setDepto( String depto) {
this.depto = depto;
}
public double getSalario() {
return this.salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
public Data getDataEntrada() {
return this.dataEntrada;
}
public void setDataEntrada( Data dataEntrada) {
this.dataEntrada = dataEntrada;
}
public String getRG() {
return this.rg;
}
public void setRG(String rg) {
this.rg = rg;
}
void bonifica(double aumento) {
this.salario += aumento;
}
void demite () {
this.estaNaEmpresa=false;
System.out.println("O Funcionario nao trabalha mais aqui");
}
void mostra() {
System.out.println("Nome "+ this.nome);
System.out.println("Departamento " + this.depto);
System.out.println("Salario atual" + this.salario);
System.out.println("RG " + this.rg);
System.out.println("Esta na empresa: " + this.estaNaEmpresa);
System.out.println("Dia: " + this.dataEntrada.dia);
System.out.println("Mes: " + this.dataEntrada.mes);
System.out.println("Ano: " + this.dataEntrada.ano);
}
}[/code]
[code]class TestaFuncionario {
public static void main(String[] args) {
int total = Funcionario.getIdentificador();
Funcionario f1 = new Funcionario(Tiririca);
f1.setSalario(100);
f1.setDepto("Administrativo");
f1.bonifica(50);
f1.setRG("46.625.423-4 SSP");
Data dt = new Data();
f1.setDataEntrada(dt);
dt.dia = 1;
dt.mes = 2;
dt.ano = 10;
f1.estaNaEmpresa = true;
f1.mostra();
System.println("Identificador :"+ getIdentificador());
Funcionario f2 = new Funcionario(Jepeto);
f2.setSalario(100);
System.println(" Identificador :"+ getIdentificador());
System.out.println("salario atual "+f1.getSalario());
if (f1.estaNaEmpresa==true) {
System.out.println("Esta na empresa desde " + dt.dia +"/" + dt.mes + "/" + dt.ano);
} else {
System.out.println("Funcionario demitido");
}
if (f1 == f2) {
System.out.println("Iguais");
} else {
System.out.println("Diferentes");
}
}
}[/code]
Quando é criado o funcionario eu coloquei no código para que mostrasse o identificador,eu apenas quero que quando fosse criado o objeto que em seguida mostrasse o numero identificador dele, mas alguma coisa está errado, alguem pode me ajudar?