Olá Leonardo, tudo bem!?
Um array em java é um objeto. Sendo assim, ele possui métodos e atributos. No primeiro exercício de arrays, é pedido para criar um array de funcionários na classe empresa, correto?
Antes de pensar nisso, imagine como você criaria um Array de inteiros! Veja se não seria algo do tipo:
new int[10];
/*
Aqui, eu criei um objeto array em memória.
Isto significa que eu possuo um espaço na HEAP para guardar dez números inteiros indexáveis. O primeiro índice é 0 e o último 9.
Porém, como acessá-los? Eu preciso de uma referência para arrays de inteiros. Ou seja, de uma variável que "aponte" para meu array em memória. Sendo assim, poderíamos ter algo do tipo:
*/
int[] numeros = new int[10];
/*
Agora, o que fiz foi dizer ao java que eu vou armazenar uma referência(o endereço) de um vetor de inteiros de 10 posições(new int[10]) numa variável de referência para vetor de inteiros(int[]) chamada numeros.
Assim, podemos acessar o vetor através da variável 'numeros'.
Podemos fazer numeros[0] = 2 ou System.out.println(numeros[0]) //que vai imprimir 2, certo?
Através da nossa referência numeros, acessamos um objeto em memória array de dez posições de inteiros nesse exemplo.
*/
Imagina agora a sua classe Funcionario com seus atributos: nome, matricula, dataAdmissao... Algo do tipo:
class Funcionario{
String nome;
int matricula;
String dataAdmissao
}
Beleza?
E a classe Empresa? Ela tem um nome, um cnpj e funcionários, certo?
Acho que o exercício propõe criar a classe empresa com um atributo funcionarios. Os funcionarios são um conjunto(array) de funcionario. Não são um conjunto de inteiros, correto? Logo, o que acha do trecho abaixo:
class Empresa{
String nome;
String cnpj;
Funcionario[] funcionarios; // parecido com int[] numeros?
}
Então, o que a classe Empresa expressa é que ela tem uma referência chamada funcionarios para um array do "tipo" Funcionario.
class TestaEmpresa{
// Criação de um funcionário de exemplo com o atributo nome:
Funcionario f = new Funcionario();
f.nome = "Leonardo";
// Criação de uma empresa de exemplo:
emprea = new Empresa();
empresa.nome = "XPTO"
empresa.cnpj = "35.757.354/0001-60"
/*
Abaixo, estamos criando um vetor do tipo Funcionario que pode armazenar 5 referências de Funcionario. Além disso, eu guardei a referência desse vetor de funcionarios no atributo empresa.funcionarios.
Quando criei um funcionario acima, eu guardei a referência dele em 'f', correto?
*/
empresa.funcionarios = new Funcionario[5];
/*
Agora, podemos fazer:
*/
empresa.funcionarios[0] = f
System.out.println(empresa.funcionarios[0].nome) //Leonardo
}
Espero ter ajudado e não complicado ainda mais!
De qualquer forma, se ainda tiver dúvidas, continue mandando para o fórum!!
Abs.