Olá pessoal,
tenho dúvida em relação à atributos static, pois estou usando o atributo na Classe Funcionario e quando faço o for no método mostraFuncionarios() o valor do getIdentificador() permanece o mesmo. Desde já agradeço!
Segue abaixo o código:
class Funcionario{
private String nome; private String rg; private String departamento; private double salario; private Data dataDeEntrada = new Data(); private static int proximoFuncionario = 0; private int identificador;
public Funcionario(){
}
public Funcionario(String nome){ this.nome = nome; this.identificador = proximoFuncionario++; }
public int getIdentificador(){ return this.identificador; }
public String getNome(){ return this.nome; }
public void setNome(String nome){ this.nome = nome; }
public String getRg(){ return this.rg; }
public void setRg(String rg){ this.rg = rg; }
public String getDepartamento(){ return this.departamento; }
public void setDepartamento(String departamento){ this.departamento = departamento; }
public double getSalario(){ return this.salario; }
public void setSalario(double salario){ this.salario = salario; }
public Data getDataDeEntrada(){ return this.dataDeEntrada; }
public void setDataDeEntrada(Data dataDeEntrada){ this.dataDeEntrada = dataDeEntrada; }
public void recebeAumento(double aumento){ this.salario = salario + aumento; }
public double calculaGanhoAnual(){ return this.salario * 12; } }
class Data{
public int dia; public int mes; public int ano;
public Data(){
}
public Data(int dia, int mes, int ano) { this.dia = dia; this.mes = mes; this.ano = ano;
if (!isDataViavel(dia, mes, ano)) { System.out.println("A data " + getFormatada() + " não existe!"); } }
private boolean isDataViavel(int dia, int mes, int ano) {
if (dia <= 0 || mes <= 0) { return false; }
int ultimoDiaDoMes = 31; // por padrao são 31 dias if (mes == 4 || mes == 6 || mes == 9 || mes == 11 ) { ultimoDiaDoMes = 30; } else if (mes == 2) { ultimoDiaDoMes = 28; if((ano % 400 == 0) || ((ano % 4 == 0) && (ano % 100 != 0))){ ultimoDiaDoMes = 29; } }
if (dia > ultimoDiaDoMes) { return false; }
return true; }
public void preencheData(int dia, int mes, int ano){ this.dia = dia; this.mes = mes; this.ano = ano; }
public String getFormatada(){ return this.dia + "/" + this.mes + "/" + this.ano; } }
class Empresa{
private String nome; private String cnpj; private Funcionario[] funcionarios; private int livre = 0;
public Empresa(int livre){ this.funcionarios = new Funcionario[livre]; }
public Empresa(){
}
public String getNome(){ return this.nome; }
public void setNome(String nome){ this.nome = nome; }
public String getCnpj(){ return this.cnpj; }
public void setCnpj(String cnpj){ this.cnpj = cnpj; }
public Funcionario getFuncionario(int posicao){ return this.funcionarios[posicao]; }
public void adiciona(Funcionario f){ this.funcionarios[this.livre] = f; this.livre++;
}
void mostraFuncionarios(){
for(int i = 0; i < this.livre; i++){
System.out.println("Funcionario: " + this.funcionarios[i].getIdentificador());
System.out.println("Nome: " + this.funcionarios[i].getNome()); System.out.println("RG: " + this.funcionarios[i].getRg()); System.out.println("Salario: " + this.funcionarios[i].getSalario()); System.out.println("Departamento: " + this.funcionarios[i].getDepartamento()); System.out.println("Data de Entrada: " + (this.funcionarios[i].getDataDeEntrada() == null ? "Sem Data" : this.funcionarios[i].getDataDeEntrada().getFormatada())); System.out.println("O calculo do ganho anual eh " + this.funcionarios[i].calculaGanhoAnual() + "\n"); } }
void mostraTodasAsInformacoes(){
for(int j = 0; j < this.livre; j++){ System.out.println("Funcionario na posicao " + j); this.funcionarios[j].mostra(); } }
boolean contem(Funcionario f){ for(int x = 0; x < this.livre; x++){ if(f == this.funcionarios[x]){ return true; } } return false; } }
class TestaEmpresa{
public static void main(String[] args){
Empresa empresa = new Empresa(10);
Funcionario f1 = new Funcionario(); f1.setNome("Fulano"); f1.setRg("4798019"); f1.setDepartamento("Administrativo"); f1.setSalario(1000); f1.getDataDeEntrada().preencheData(01, 02, 2016); empresa.adiciona(f1);
Funcionario f2 = new Funcionario(); f2.setNome("Ciclano"); f2.setRg("4325645"); f2.setDepartamento("Contabeis"); f2.getDataDeEntrada().preencheData(02, 01, 2016); f2.setSalario(2000); empresa.adiciona(f2);
empresa.mostraFuncionarios(); } }