fiquei com duvida no uso do método adiciona
void adiciona(funcionario f){ this.func[this.livre] =f; this.livre++; }
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