Buenas pessoal…
Estou estudando “por conta” na apostila da Caelum (atualmente no cap6) e estou num impasse para modificar um código.
Já pesquisei no fórum, mas não encontrei nada diretamente relacionado.
Sei que é um exercício, mas como não frequento aulas regulares peço este apoio e ajuda para achar a solução.
O problema apresentado é o seguinte: 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?
Quanto ao setter digo que não há a necessidade, mas não sei em que ponto posso definir a atriuição do ID.
Meus códigos até o momento:
[code]class Funcionario {
private String nome;
private String departamento;
private double salario;
private Data dataEntrada = new Data();
private String rg;
private boolean estaNaEmpresa;
private static int uid; //User ID como atributo de classe, mas não sei como referenciá-lo aos objetos
// metodos
//Contrutor funcionario
Funcionario(String n, double s, String rg, Boolean in){
this.nome = n;
this.salario = s;
this.rg = rg;
this.estaNaEmpresa = in;
}
Funcionario(){
}
public void setNome(String n){
this.nome = n;
}
public String getNome(){
return this.nome;
}
public void setSalario(int s){
this.salario = s;
}
public double getSalario(){
return this.salario;
}
public void setRG(String rg){
this.rg = rg;
}
public String getRG(){
return this.rg;
}
public void setEstaNaEmpresa(boolean in){
this.estaNaEmpresa = in;
}
public boolean getEstaNaEmpresa(){
return this.estaNaEmpresa;
}
//aumenta o salário em x%
void bonifica(double x){
this.salario = this.salario*(x/100+1);
}
boolean demite(){
if(this.estaNaEmpresa==false){
System.out.println("Não é funcionário da empresa");
return false;
}else{
System.out.println("Demitido!");
this.estaNaEmpresa = false;
return true;
}
}
void mostra(){
System.out.println("Nome: " + this.nome);
System.out.println("Departamento: " + this.departamento);
System.out.println("Salario: " + this.salario);
System.out.println("Data Admissão: " + this.dataEntrada.dia + "/" + this.dataEntrada.mes + "/" + this.dataEntrada.ano);
System.out.println("RG: " + this.rg);
System.out.println("Esta Na Empresa: " + this.estaNaEmpresa);
}
}
[/code]
[code]class Empresa {
//Outros atributos
Funcionario[] funcionarios;
String cnpj;
String nome;
int funcPos; // Contador número de funcionários
//métodos
//Adicionar novo funcionário
void adiciona(Funcionario f){
if(funcPos < funcionarios.length ){
this.funcionarios[funcPos] = new Funcionario(f.getNome(), f.getSalario(), f.getRG(), f.getEstaNaEmpresa()); //adiciona funcionário F na posição vazia
System.out.println("Funcionario " + funcPos + " adicionado.\n");
funcPos++;// posiciona Nfunc na próxima vazia
}else{
Funcionario[] temp = new Funcionario[funcionarios.length+1];
for(int i=0;i<funcionarios.length;i++){
temp[i]=this.funcionarios[i];
}
funcionarios = new Funcionario[temp.length];
for(int i=0;i<funcionarios.length;i++){
this.funcionarios[i] = temp[i];
}
System.out.println("Array agora com: " + funcionarios.length + " posições.\n\nFuncionario " + funcPos + " adicionado.\n");
this.funcionarios[funcPos] = new Funcionario(f.getNome(), f.getSalario(), f.getRG(), f.getEstaNaEmpresa()); //adiciona funcionário F na posição vazia
funcPos++;
}
}
void imprimeSalario(){
for(int i=0;i<this.funcPos;i++){
System.out.println(this.funcionarios[i].getNome()+" : "+this.funcionarios[i].getSalario());
}
}
boolean contem(Funcionario f){
for(int i=0;i<this.funcPos;i++){
if(f.getEstaNaEmpresa()==true){
System.out.println("Achei!");
return true;
}
}
System.out.println("Não está!!");
return false;
}
}
[/code]
Minha classe de teste:
[code]public class TesteEmpresa {
public static void main(String[] args){
Empresa empresa = new Empresa();
empresa.funcionarios = new Funcionario[0];
Funcionario f1 = new Funcionario("Joao",600,"1234",true);
Funcionario f2 = new Funcionario("Pedro",1200,"5678",false);
Funcionario f3 = new Funcionario("Carlos",2000,"456456",true);
Funcionario f4 = new Funcionario();
f4.setNome("Luiz");
f4.setSalario(1450);
f4.setRG("192837");
f4.setEstaNaEmpresa(true);
empresa.adiciona(f1);
empresa.adiciona(f2);
empresa.adiciona(f3);
empresa.adiciona(f4);
empresa.imprimeSalario();
empresa.contem(f1);
}
}
[/code]