Estou na apostila FJ-11 e estou querendo tirar uma duvida.
“Página 53 - Capitulo 5 - Um pouco de arrays”
5.5 - Exercícios: Arrays
Crie uma classeTestaEmpresa que possuirá um método main. Dentro dele crie algumas instâncias de Funcionario e passe para a empresa pelo método adiciona .Repare que antes você vai precisar criar a array, inicialmente o atributo empregados da classe Empresa não referencia lugar nenhum b.[/b]
Ou você pode construir a array dentro da própria declaração da classe Empresa, fazendo com que toda vez que uma Empresa é instanciada,a array deFuncionarioque ela necessita também é criada.
E agora oque eu não entendi ?
R; hân? como assim ele disse que tinha que atribuir um valor empresa.empregados = new funcionario[10];
mas porque
Provavelmente na sua Classe Empresa vc tem um atributo chamado empregados e que é um array do tipo funcionário.
Então no seu método adiciona vc está instanciando um array e definindo o tamanho dele (10).
MaYaRa_SaN
Se voce não instanciar o array, informando a quantidade maxima que ele pode guardar, você nao consegue trabalhar com ele pois tua referencia está nula.
se quiser deixar dinamico, voce pode solicitar ao usuario a quantidade de funcionarios e passar essa informação no construtor da classe empresa… la no contrutor voce inicializa o array de funcionarios dessa forma:
empregados = new funcionario[qtdFunc];
G
Guilherme.Escarabel
Bem eu não entendi muito bem eu acho que se vcs verem o código acho que será mais façil explicar
classEmpresa{Stringnome;Stringcnpj;Funcionario[]empregados;staticintcontrolador=0;// Método Adicionavoidadiciona(Funcionarionome){this.empregados[controlador]=nome;controlador++;}// Método Mostra os Empregados na empresavoidmostraEmpregados(){for(inti=0;i<this.empregados.length;i++){System.out.println("Funcionario na posição: "+i);System.out.println("Funcionario na posição: "+i);System.out.println("Funcionario na posição: "+i);System.out.println("Funcionario na posição: "+i);}}}classFuncionario{Stringnome;Stringdepartamento;StringdataEntrada;StringdataDeEntrada;Stringrg;doublesalario;booleandemitido=false;//Mostra Todos os Dados do Funcionariovoidmostra(){System.out.println(" ------------------------------------ ");System.out.println("~* Google Officer Departament Contrater *~");System.out.println(" ------------------------------------ ");System.out.println("");System.out.println("Nome: "+this.nome);System.out.println("Departamento: "+this.departamento);System.out.println("Data de Entrada: "+this.dataEntrada);System.out.println("RG: "+this.rg);System.out.println("Salário: "+this.salario);System.out.println("Demitido?: "+this.demitido);}//Bonifica o Funcionariovoidbonifica(doubleaumento){doublebonificacao=this.salario+aumento;this.salario=bonificacao;}//Demite o Funcionariovoiddemitir(){this.demitido=true;}//Contratar o FuncionariovoidContratar(){this.demitido=false;}}classIniciandoPrograma{publicstaticvoidmain(String[]args){Empresaempresa=newEmpresa();// variavel do Objeto 'Empresa' será 'empresa' empresa.empregados=newFuncionario[10];//atributo 'empregados' da classe 'Empresa'//Cria Funcionario 1 ~ 'F1'FuncionarioF1=newFuncionario();F1.salario=1000;empresa.adiciona(F1);//Cria Funcionario 2 ~ 'F2'FuncionarioF2=newFuncionario();F2.salario=2000;empresa.adiciona(F2);//mostra os empregadosempresa.mostraEmpregados();}}
MaYaRa_SaN
esta funcionando porque voce inicia o array no programa principal… o ideal é colocar a linha:
empresa.empregados=newFuncionario[10];//atributo 'empregados' da classe 'Empresa'
no construtor da classe empresa para evitar esquecimento e ganhar um nullPointer de presente.