Baixei um livro da Caelum: Java e Orientação a Objetos, e lá fiquei sabendo do GUJ.
Esse é o meu primeiro post, me ajudem a montar o post, por favor… imagino que seja possível editar, então aceito sugestões e dicas, obrigado
Então, vamos lá…
Tenho um projeto pronto aqui mas não to entendendo duas coisas:
método insereEmpregado(Empregado emp):
public boolean insereEmpregado(Empregado emp) {
if (pos > this.empregados.length){
return false;
}else{
this.empregados[pos] = emp;
pos++;
return true;
}
}
método removeEmpregado(int idx):
public boolean removeEmpregado(int idx) {
if (pos == 0 || idx < 0){
return false;
}else{
Empregado tempEmpregado[] = new Empregado[this.empregados.length];
int j = 0;
for (int i = 0; i < pos; i++){
if (i != idx){
tempEmpregado[j] = this.empregados[i];
j++;
}
}
this.empregados = tempEmpregado;
pos--;
return true;
}
}
início da classe pra ajudar vocês a me ajudar
public class FolhaDePagamento {
private Empregado []empregados;
private int pos = 0;
public FolhaDePagamento(int nEmp){
super();
empregados = new Empregado[nEmp];
}
Enfim, o que peço é: vocês podem me comentar e explicar o que tá acontecendo em mínimos detalhes nos dois métodos?
public boolean insereEmpregado(Empregado emp) {
if (pos > this.empregados.length) { // se o atributo 'pos' é maior que o comprimento do array 'empregados'
return false; // encerra a execução desse método retornando 'false' para quem o chamou
} else { // senão
this.empregados[pos] = emp; // a posição 'pos' do array 'empregados' recebe o parâmetro 'emp'
pos++; // o atributo 'pos' é incrementado
return true; // encerra a execução desse método retornando 'true' para quem o chamou
}
}
public boolean removeEmpregado(int idx) {
if (pos == 0 || idx < 0) { // se o atributo 'pos' for igual à 0 ou o parâmetro 'idx' for menor que 0
return false; // encerra a execução desse método retornando 'false' para quem o chamou
} else { // senão
Empregado[] tempEmpregado = new Empregado[this.empregados.length]; // cria um array temporário chamado 'tempEmpregado' que tem o mesmo comprimento do array 'empregados'
int j = 0; // cria uma variável 'j' e inicializa ela com 0
for (int i = 0; i < pos; i++) { // um laço com 'i' inicializando em 0 e repete enquanto 'i' for menor que o atributo 'pos', incrementa 'i' a cada iteração
if (i != idx) { // se 'i' for diferente do parâmetro 'idx'
tempEmpregado[j] = this.empregados[i]; a posição 'j' do array 'tempEmpregado' recebe o conteúdo da posição 'i' do array 'empregados'
j++; // a variável 'j' é incrementada
}
}
this.empregados = tempEmpregado; // o array 'empregados' é substituído pelo array 'tempEmpregado'
pos--; // o atributo 'pos' é decrementado
return true; // encerra a execução desse método retornando 'true' para quem o chamou
}
}
Muito obrigado pelo teu tempo! Ficou muito mais claro o que tá acontecendo no código.
Porém, um pouco confuso ainda:
porquê foi criado um array temporário? qual a necessidade?
e, ele tem o mesmo tamanho do array Empregados pra poder colocar o valor do tempEmpregado nele depois?
@smatt obrigado pela sugestão, já li e certamente vou usar no meu próximo post