Srs, bom dia!
Estou tentando referenciar um array de um objeto. Temos as classes: Funcionário, Empresa e testaFuncionario.
No objeto Empresa eu faço uma referencia de um array de funcionário e tenho dois métodos add e mostra,
class Empresa
{
//Atributos
Funcionario[] employe; //Referencia de array para classe Funcionário
//Metodo Adciona
void add( Funcionario f )
{
for( int i = 0; i < employe.length; i++ )
{
employe[ i ] = f;
}
}//Fim do método
//Metodo Impressão
void mostra()
{
for( int i = 0; i < employe.length; i++ )
{
System.out.println( employe[ i ] );
}
}//Fim do método
}//Fim da classe
No objeto Funcionário, tenho um método que recebe um valor para salário,
class Funcionario
{
//Atributos da classe
Double salario;
//Método configura salário
void salario( double salario )
{
this.salario = salario;
}//Fim do método
}//Fim da classe
No objeto main faço as instâncias para os objetos e estou tentando passar Funcionário como referência para meu array dentro de empresa.
public class testaFuncionario
{
public static void main( String[] args )
{
//Cria instância para objeto empresa
Empresa empresa = new Empresa();
empresa.employe = new Funcionario[ 2 ]; //Definição de posições do array
//Cria instância para objeto Funcionário
Funcionario f1 = new Funcionario();
f1.salario ( 100 );
empresa.add( f1 );
empresa.mostra();
}//Fim do método main
}//Fim da classe
Questão: fiz alguns testes e observei que quando eu envio (f1) para método add no objeto empresa ele está como null. Este é um exercício que costa na apostila da Caelum no capitulo de array. Se alguém conseguir ajudar, eu gostaria de agradecer antecipadamente.
Srs, boa tarde!
Consegui solucionar meu problema, após algumas consultas na Web. Se alguém conseguir resolver de uma outra forma, favor compartilhar. Abraço.
import java.util.Scanner;
public class testaFuncionario
{
public static void main( String[] args )
{
//Instância dos Objetos
Empresa empresa = new Empresa( "Gimba", 54651 );
Funcionario func[] = new Funcionario[2];
Scanner input = new Scanner( System.in );
//Inclusão dos Registros
for( int i=0; i < func.length; i++ )
{
func[ i ] = new Funcionario();
System.out.print( "Nome:" );
func[ i ].nome = input.nextLine();
System.out.print( "Depto:" );
func[ i ].depto = input.nextLine();
empresa.add( func[ i ] );
}//Fim loop FOR
//Chama metódo de impressão
empresa.impressao();
}//Fim do metódo main
}//Fim da Classe Main
//Inicio da classe Empresa
class Empresa
{
//Atributos da classe
String razaoSocial;
int cnpj;
int cont=0;
Funcionario[] func = new Funcionario[2]; //Vetor da classe Funcionário
//Construtor
public Empresa( String nome, int codCnpj )
{
razaoSocial = nome;
cnpj = codCnpj;
Funcionario[] func = new Funcionario[2];
}//Fim do construtor
//Configura a razão Social da empresa
void setNomeEmpresa( String nome )
{
razaoSocial = nome;
}//Fim do método set
//Retorna a razão Social da empresa
String getNomeEmpresa()
{
return razaoSocial;
}//Fim do método Get
//Inclusão de Funcionários
void add( Funcionario f )
{
func[ cont ] = f;
cont++;
}//Fim da classe Add
//Impressão dos registros
void impressao()
{
System.out.printf( "Razão Social:%s\nCNPJ:%d\n", razaoSocial, cnpj );
impressaoFunc();//Chamada para metódo de impressão dos funcionários
}//Fim do metódo impressão
//Imprime funcionários
void impressaoFunc()
{
for( Funcionario funcionario : func )
{
System.out.printf( "Funcionário:%s\nDepto:%s\n", funcionario.nome, funcionario.depto );
}
}//Fim do metódo impressão Func
}//Fim da classe Empresa
//Inicio da classe Funcionário
class Funcionario
{
//Atributos da classe
String nome;
String depto;
//Configura o nome do funcionário
void setNomeFunc( String theNome )
{
nome = theNome;
}//Fim do método set
//Retorna o nome do funcionário
String getNomeFunc()
{
return nome;
}//Fim do método Get
}//Fim da classe Funcionário
Obs: se houver dúvida quanto essa solução, estou á disposição.