E ae galera, Seguinte, entendi o funcionamento, mas não entendi onde a variavel livre é incrementada, pois em nenhum momento usamos o método adiciona da classe Empresa. E la sim tem o livre++. Entao como no método abaixo quando uso o for ele sabe que tem tantos arrays? Eu fiz o exercico e rodou, mas fiquei olhando e revendo o código e em nenhum momento foi chamado o adiciona.
void mostraEmpregados() {
for (int i = 0; i < this.livre; i++) {
System.out.println("Funcionário na posição: " + i);
System.out.println("R$" + this.empregados[i].salario);
}
}
Classe Empresa
class Empresa {
String nome;
String cnpj;
Funcionario[] empregados;
int livre = 0;
void adiciona(Funcionario f){
this.empregados[this.livre] = f;
this.livre++;
}
void mostraEmpregados () {
for(int i=0; i < this.livre; i++){
System.out.println("Nome do Funcionario: "+this.empregados[i].nome);
System.out.println("Departamento: "+this.empregados[i].departamento);
System.out.println("Salario Registrado: R$"+this.empregados[i].salario);
System.out.println("Data de Entrada: "+this.empregados[i].entradaBanco.formataData());
System.out.println("Registro de Identidade: "+this.empregados[i].RG);
System.out.println("Salario Base Anual: "+this.empregados[i].calculaGanhoAnual());
System.out.println("");
}
}
}
Testa Empresa
class testaEmpresa {
public static void main(String[] args) {
Empresa empresa = new Empresa();
empresa.empregados = new Funcionario[10];
for(int i = 0; i < 10; i++){
Funcionario f1 = new Funcionario();
f1.nome = "Cleiton";
f1.departamento = "Desenvolvimento";
f1.salario = 1000 + i * 100;
f1.entradaBanco = new Data();
f1.entradaBanco.preencheData(12,6,1984);
f1.RG = "378917239871";
empresa.adiciona(f1);
}
//empresa.empregados[9].mostraDadosFuncionario();
empresa.mostraEmpregados();
}
}