Metodos da apostila, nao estou conseguindo entender
10 respostas
olivercld
boa noite my friends estou fazendo os exercicios e lendo entendi o metodo, mais nao entendi o que as linhas fazem dentro desse metodo porque tanta coisa, alguem se disponibiliza a me explicar obrigado!
// metodo adiciona alunopublicvoidadiciona(intposicao,Alunoaluno){if(!this.posicaoValida(posicao)){thrownewIllegalArgumentException("Posicao invalida");}for(inti=totalDeAlunos-1;i>=posicao;i--){alunos[i+1]=alunos[i];}this.alunos[posicao]=aluno;this.totalDeAlunos++;}//metodo remove publicvoidremove(intposicao){if(!posicaoOcupada(posicao)){thrownewIllegalArgumentException("posicao invalida ");}for(inti=posicao;i<totalDeAlunos-1;i++){alunos[i]=alunos[i+1];}this.totalDeAlunos--;}
desde já agradeço a ajuda, gostaria de entender melhor cada linha desses metodos “codigos”,obrigado pela paciencia abraço.
boa noite my friends estou fazendo os exercicios e lendo entendi o metodo, mais nao entendi o que as linhas fazem dentro desse metodo porque tanta coisa, alguem se disponibiliza a me explicar obrigado!
// metodo adiciona alunopublicvoidadiciona(intposicao,Alunoaluno){//cria esse metodo que necessita de 2 parametrosif(!this.posicaoValida(posicao)){//cria uma condicao para que se a posicao for invalida ele mostra essa mensagemthrownewIllegalArgumentException("Posicao invalida");}for(inti=totalDeAlunos-1;i>=posicao;i--){// pro int i = a variavel totalDeAlunos-1 e o i menor ou igual a posicao o i vai diminuiralunos[i+1]=alunos[i];// faz essa soma onde o vetor alunos com parametro i +1 recebe alunos com parametro i}this.alunos[posicao]=aluno;//isso deve ser um vetor global que ta recebendo na posicao indicada o valor alunothis.totalDeAlunos++;//acrescenta o total de alunos}//metodo remove publicvoidremove(intposicao){//cria o metodo remove que necessita da posicao do aluno a ser removido(o parametro)if(!posicaoOcupada(posicao)){// cria uma condicao para que se a posicao que voce da como parametro ja estiver sendo ultilizada ele retorne essa mensagemthrownewIllegalArgumentException("posicao invalida ");}for(inti=posicao;i<totalDeAlunos-1;i++){//para o i igual a posicao e o i menor que o total de alunos menos 1 o i acrescentaalunos[i]=alunos[i+1];// vetor aluno na posicao i recebe vetor alunos na posicao i +1}this.totalDeAlunos--//total de alunos diminui}
desde já agradeço a ajuda, gostaria de entender melhor cada linha desses metodos “codigos”,obrigado pela paciencia abraço.
Bem se faltou algo [e porque realmente n’ao da pra explicar sem o codigo completo. So da pra ter uma nocao.
olivercld
já deu para entender, ter uma noção, depois vou postar o codigo inteiro do restante dos metodos, estou escrevendo eles. obrigado por enquanto.
valeu JoatanGuj, lineofgol
JoatanGuj
olivercld:
já deu para entender, ter uma noção, depois vou postar o codigo inteiro do restante dos metodos, estou escrevendo eles. obrigado por enquanto.
valeu JoatanGuj, lineofgol
precisar ja sabe
olivercld
ok amigão, logo logo posto o restante dos codigos metodos ok valeu abraço.
olivercld
terminei poderiam aproveitando me explicar se possível, se nao for nenhum incomodo
packagebr.com.caelum.ed;publicclassVetor{// declarando e inicializando um array de aluno com capacidade 100/** * Se amanhã ou depois precisarmos de uma Lista de carro ou uma Lista de * computador teríamos que implementar novamente o Vetor. Em vez de * colocarmos um array de Aluno na classe Vetor vamos colocar um array de * Object. Assim, estamos generalizando a nossa estrutura de dados. Desta * forma, poderemos armazenar qualquer tipo de objeto. */privateObject[]objetos=newObject[100];privateintTotalDeObjetos=0;// atributo para guardar a quantidade de// alunos existentes na lista/** * * @param aluno */publicvoidadiciona(Objectobjeto){this.garantaEspaço();// verifica antes se tem espaço para adicionar// alunothis.objetos[TotalDeObjetos]=objeto;this.TotalDeObjetos++;// implementação que leva mais tempo/* * for (int i = 0; i < this.alunos.length; i++) { if (this.alunos[i] == * null) {// achando o primeiro valor null // guarda o alunonessa * referencia. this.alunos[i] = aluno;// achando o valor null entao * guarda o // aluno. break;// para o laço for quando for encontrado } } */}/** * esse metodo tem como caracteristica verificar se o array esta cheio. caso * estiver cheio ele criará um novo array com o dobro do tamanho e moverá os * alunos do array antigo para o novo. O metodo garantaEspaco() so e util * dentro da classe vetor, e nao sera disponivel para o usuario por isso * esta como private */privatevoidgarantaEspaço(){if(this.TotalDeObjetos==this.objetos.length){Object[]novaArray=newObject[this.objetos.length*2];for(inti=0;i<objetos.length;i++){novaArray[i]=this.objetos[i];}this.objetos=novaArray;}}// metodo para deslocar aluno de posicaopublicvoidadiciona(intposicao,Alunoaluno){this.garantaEspaço();// verificar se tem espaçoif(!this.posicaoValida(posicao)){thrownewIllegalArgumentException("posicao invalida");}for(inti=TotalDeObjetos-1;i>=posicao;i--){this.objetos[i+1]=objetos[i];}this.objetos[posicao]=aluno;this.TotalDeObjetos++;}publicObjectpega(intposicao){if(!this.posicaoOcupada(posicao)){thrownewIllegalArgumentException("posicao invalida");}returnthis.objetos[posicao];}/** * este metodo faz com que compara o aluno dado com os demais alunos * existentes * * @param aluno */publicbooleancontem(Alunoaluno){for(inti=0;i<this.TotalDeObjetos;i++){// nao e necessario// percorrer o array// todo para achar o// aluno,nos podemos// obter a ultima posiçao ocupada atraves do atributo TotalDeAlunos// // totaldeobjetosif(aluno.equals(this.objetos[i])){// equals e para comparar objectreturntrue;}}returnfalse;}/** * esse metodo devolve verdadeiro se posicao estiver ocupada ou false caso * contrario * * @param posicao * @return verdadeiro se a posicao estiver ocupada e falso se nao estiver */publicbooleanposicaoOcupada(intposicao){returnposicao>=0&&posicao<this.TotalDeObjetos;}/** * este metodo verifica se podemos adicionar um aluno numda dada posicao * devemos testar se o aluno esta no intervalo [0, this.TotalDeAlunos] * * @param posicao * @return um aluno numa dada posicao */privatebooleanposicaoValida(intposicao){returnposicao>=0&&posicao<=TotalDeObjetos;}/** * esta implementaçao ficou simples porque na classe vetor ja tem o atributo * para armazenar a quantidade de alunos armazenados.Entao basta devolver o * valor do total de alunos. */publicinttamanho(){returnthis.TotalDeObjetos;}/** * utilizamos a classe StringBuilder para Construir a String que mostrara os * elementos da lista. */publicStringtoString(){if(this.TotalDeObjetos==0){return"[]";}StringBuilderbuilder=newStringBuilder();builder.append("[");for(inti=0;i<this.TotalDeObjetos-1;i++){builder.append(this.objetos[i]);builder.append(", ");}builder.append(this.objetos[TotalDeObjetos-1]);builder.append("]");returnbuilder.toString();// return Arrays.toString(alunos);}}
os metodos lendo e fazendo os exercicios eu entendi, oque nao entendi e alguns totalDeObjetos - 1 isso por exemplo, gostaria de entender mais, do jeito que o amigo JoatanGuj explicou aqui para mim eu entendi o dois metodos, se possivel for puderem me explicar eu gradeço.
até mais
hvivox
o que especificamente vc não entendeu?
this.TotalDeObjetos - 1; Bem está linha significa que ele está decrementando o valor da variável this.Total…, Algo mais?
olivercld
por exemplo hvivox o metodo to String algumas linhas ali ta meia confusa, o metodo remove e adiciona ja me explicaram. valeu orbigado
JoatanGuj
publicStringtoString(){if(this.TotalDeObjetos==0){// se não tiver objetos retona apenas "[]" isso. e claro, é vazio porque não tem objetos.return"[]";}StringBuilderbuilder=newStringBuilder();// Instancia a StringBuilder.builder.append("[");//aciciona na builder o valor em String > "[" . oque temoa até agorá?, bem se o vetor não estiver vazio temos isso > "[", guarde as infomações pra entenderfor(inti=0;i<this.TotalDeObjetos-1;i++){//cria uma condição para que i = 0 e i menor que o Total de Objetos -1; enquando isso for verdadeiro o "i" vai acrescentar.builder.append(this.objetos[i]);// enquanto o for tiver sendo rodado ele vai adicionar os objetos existentes no teu Array aqui. digamos que seus objetos até agora vc só tem os objetos "oi" e "oioi"//oque esse for vaifazer é justamente incluir esses teus objetos aqui na builder. e depois por uma virgula , builder.append(", ");//< tae a virgula. pra separar.//oque temos até agora? , bom juntando tudo e aceitando os objetos que dei como exemplo temos isso "[ oi, oioi, " < essa virgula no final será corigida logo abaixo.}builder.append(this.objetos[TotalDeObjetos-1]);//adiciona o ultimo objeto depois daquela virgula o valor dele é =(Objeto na posição TotaldeObjetos -1) diagamos que esse objeto tem valor "oioioi".builder.append("]");// fecha a chaves, no final temos isso >> "[oi, oioi, oioioi]" <<< ;)returnbuilder.toString();// return Arrays.toString(alunos); }
se você olhar bem verá que isso é nada mais nada menos que a criação de um vetorzinho de String baseado no Array de objetos
olivercld
hum entendido, meus sinceros agradecimentos aos colegas JoatanGuj, hvivox, lineofgol