Oi Taina,
O da classe Data
segue a mesma ideia de passar o Funcionario
para a Empresa
.
Imagine que você queira colocar uma data de admissão na classe Funcionario
e você tenha a seguinte classe Data
:
class Data {
int dia;
int mes;
int ano;
Data(int dia, int mes, int ano) {
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
}
Aí você precisa acrescentar um atributo do tipo Data
pois o Funcionario
TEM uma dataAdmissao
. Sua classe Funcionario
ficaria:
class Funcionario {
Data dataAdmissao;
String nome;
// outros atributos
Funcionario(String nome) {
this.nome = nome;
}
}
Na hora de colocar a dataAdmissao
no Funcionario
você precisa primeiro criar o objeto do tipo Data
(através do new) e depois passar a referência deste objeto para o Funcionario
. Ficaria assim o código com o main:
class TestaFuncionario {
public static void main(String [] args) {
Data dataDeHoje = new Data(15, 7, 2016);
Funcionario taina = new Funcionario("Taina");
taina.dataAdmissao = dataDeHoje;
}
}
Deste jeito você consegue copiar a referência da dataDeHoje
para o objeto referenciado pela variável taina
.
Quanto a sua outra dúvida: entao se eu colocar if empregados == null, nao daria?
Dá sim! Você pode fazer tanto:
void adiciona (Funcionario f) {
for (int i = 0; i < funcionarios.length; i++) {
if (funcionarios[i] == null) {
this.funcionarios[i] = f;
} else {
continue;
}
}
}
quanto:
void adiciona(Funcionario f) {
if (this.livre < this.empregados.length) {
this.empregados[this.livre] = f;
this.livre++;
}
}
Não tinha entendido sua dúvida anterior, as duas soluções funcionam, na segunda você só precisa verificar se ainda tem posições livres no array, conforme fiz acima.
Abraço!