fiquei com duvida no uso do método adiciona
void adiciona(funcionario f){ this.func[this.livre] =f; this.livre++; }
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
fiquei com duvida no uso do método adiciona
void adiciona(funcionario f){ this.func[this.livre] =f; this.livre++; }
Oi Antonio,
Qual é sua dúvida? Pq a implementação parece ok :)
no caso ele vai adicionar o funcionario na posição livre e somar mais um passando para a próxima posição é isso, precisava ver um exemplo completo com as classes e o método pq o q tentei fazer nao rodou =(
Você pode baixar os códigos daqui => https://github.com/alura-cursos/moderadores/tree/master/Trilha%20-%20Java/Java%20I%20-%20Primeiros%20passos
Antonio, seria exatamente isso, você sempre terá seu sua classe a posição que esta livre no momento:
public class Array {
private int posicaoLivre = 0;
}
Então nó método adiciona basta adicionar sempre um elemento nessa posição e após adicionar incrementa-la:
public void adiciona(Object obj) {
this.objs[this.posicaoLivre] = obj;
this.posicaoLibre++;
}
Feito isso a posição livre agora sera = 1 pois ja possuímos um objeto na posição, e quando adicionar um objeto na posição 1 ela será 2 e assim sucessivamente....
Caso ainda tenha dúvidas em meu blog tenho um post que explico o funcionamento de um ArrayList onde o método adiciona faz exatamente isso: http://blog.matheuscastiglioni.com.br/Imitando-ArrayList
Espero ter ajudado.
Muito obrigado Alberto e Matheus agora sim entendi exatamente o que o método faz...
Joguei esse codigo no NetBeans e ele instanciou perfeitamente a classe porem o ultimo método empresa1.mostraFun(); nao funciona, nao aparecem os System.out.println, alguem sabe me explicar porque
segue o codigo abaixo
class Empresa{
String nomeEmp;
int cnpjEmp;
int livre=0;
Funcionario[] empregado;
void adiciona(Funcionario f){
this.empregado[this.livre]=f;
this.livre++;
}
void mostraFun(){
for (int count=0;count>=empregado.length;count++){
System.out.println("Funcionario da posição"+count);
System.out.println("Nome do funcionario posiçao"+count+"é"+this.empregado[count].nomeFun);
System.out.println("Rg do funcionario da posiçao"+count+"é"+this.empregado[count].rgFun);
System.out.println("Salario do empregado da posiçao"+count+"é"+this.empregado[count].salFun);
}}}
class Funcionario{
String nomeFun;
int rgFun;
double salFun;
}
class TestaEmpresa{
public static void main(String[] args){
Empresa empresa1 = new Empresa();
empresa1.nomeEmp = "Matrix Solutions";
empresa1.cnpjEmp = 51452;
empresa1.empregado = new Funcionario[5];
Funcionario fun1 = new Funcionario();
fun1.nomeFun = "Marcelo Gadioli";
fun1.rgFun = 45878754;
fun1.salFun = 3200.0;
empresa1.adiciona(fun1);
Funcionario fun2 = new Funcionario();
fun2.nomeFun = "Felipe Basso";
fun2.rgFun = 475841;
fun2.salFun = 2300.0;
empresa1.adiciona(fun2);
empresa1.mostraFun();
}}
int count=0;count>=empregado.length;count++
O cont aqui tem que ser menor :).
Ahhh blza agora rodou perfeitamente, obrigado =DD