Meu código é:
class Empresa {
String nome;
String cnpj;
Funcionario[] funcionarios;
int livre = 0;
void adiciona(Funcionario f) {
this.funcionarios[this.livre] = f;
this.livre++;
}
void mostraTodasAsInformacoes() {
for (int i = 0; i < this.funcionarios.length; i++) {
Funcionario funcionario = this.funcionarios[i];
if(funcionario == null) continue;
System.out.println("Funcionário na posição: " + i);
funcionario.mostra();
}
}
void mostra() {
System.out.println("===========================================================");
System.out.println();
System.out.println("*********************************************************");
System.out.println(" MOSTRANDO TODAS AS INFORMAÇÕES DE TODOS OS FUNCIONARIOS ");
System.out.println("*********************************************************");
System.out.println();
for(int i = 0; i < this.funcionarios.length; i++) {
Funcionario funcionario = this.funcionarios[i];
if(funcionario == null) continue;
System.out.println("Nome do Funcionario: " + funcionario.nome);
System.out.println();
System.out.println("Sua Função é: " + funcionario.funcao);
System.out.println();
System.out.println("Tem um salario de: " + funcionario.salario);
System.out.println();
System.out.println("Teve um aumento de: " + funcionario.aumento);
System.out.println();
System.out.println("Seu vale refeição tem valor de: " + funcionario.vale);
System.out.println();
System.out.println("Seu salario mais o aumento ficou: " + funcionario.salarioMaisAumento());
System.out.println();
System.out.println("Seu salario mais aumento e vale ficou: " + funcionario.salarioMaisValeMaisAumento());
System.out.println();
System.out.println("Com isso passou a ganhar por ano: " + funcionario.ganhoTotalPorAno());
System.out.println();
System.out.println("Sua data de contratação foi: " + funcionario.dataDeEntrada.getFormatada);
System.out.println();
System.out.println("===========================================================");
}
}
class Funcionario {
String nome;
String funcao;
double salario;
double aumento;
double vale;
Data dataDeEntrada;
double salarioMaisAumento() {
return this.salario + this.aumento;
}
double salarioMaisValeMaisAumento() {
return this.salario + this.aumento + this.vale;
}
double ganhoTotalPorAno() {
return this.salarioMaisValeMaisAumento() * 12;
}
}
class Data {
String getFormatada;
void getFormatada(int dia, int mes, int ano) {
this.getFormatada = dia + "/" + mes + "/" + ano;
}
}
class TestaEmpresa {
public static void main(String[] args) {
//====================================================================//
//Criando uma nova empresa.
Empresa emp1 = new Empresa();
emp1.nome = "Comercial Carvalho";
emp1.cnpj = "10.354.987/0003-38";
//====================================================================//
//====================================================================//
//Criando um novo Array de Funcionario;
Funcionario func0 = new Funcionario();
emp1.funcionarios = new Funcionario[10];
// Criando o 1º funcionario;
emp1.funcionarios[0] = new Funcionario();
emp1.funcionarios[0].nome = "Mauricio";
emp1.funcionarios[0].funcao = "Motorista";
emp1.funcionarios[0].salario = 3560;
emp1.funcionarios[0].aumento = 55;
emp1.funcionarios[0].vale = 45;
emp1.funcionarios[0].dataDeEntrada = new Data();
emp1.funcionarios[0].dataDeEntrada.getFormatada(20, 10, 2014);
emp1.adiciona(emp1.funcionarios[0]); // adicionando o funcionario no Array.
//====================================================================//
//====================================================================//
//Criando um novo funcionario;
Funcionario func1 = new Funcionario();
//emp1.funcionarios = new Funcionario[10]; Tem que tomar cuidado porque aqui estou jogando o array fora sempre.
emp1.funcionarios[1] = new Funcionario();
emp1.funcionarios[1].nome = "Felipe";
emp1.funcionarios[1].funcao = "Bebezinho";
emp1.funcionarios[1].salario = 5000;
emp1.funcionarios[1].aumento = 100;
emp1.funcionarios[1].vale = 45;
emp1.funcionarios[1].dataDeEntrada = new Data();
emp1.funcionarios[1].dataDeEntrada.getFormatada(30,05,2015);
emp1.adiciona(emp1.funcionarios[1]);
emp1.mostraTodasAsInformacoes();
}
}