Cógido da página 66 do livro Use a Cabeça! Java - DÚVIDA! Peço ajuda para entender o código

5 respostas
W

Boa noite a todos.

Este é o primeiro post que faço nesse fórum.

Sou extremamente iniciante em Java, OO e em programação como um todo. Escolhi o Java para ingressar nesse mundo de desenvolvimento de software que sempre achei muito interressante. :smiley:

Para isso, estou usando o livro USE A CABEÇA! JAVA. Mas tenho algumas dificuldades conforme coloco abaixo.

Estou analisando o seguinte algoritmo, que está disponível na [color=darkred]páginas 66[/color] do citado livro e fiquei com as dúvidas que coloquei logo abaixo desse código:

public class Mix401 {
 	int counter = 0;
 	public static void main(String [] args) {
 		int count = 0;
		Mix401 [] m4a = new Mix401[20];
		int x = 0;
		
		while (x < 20) {
			
			m4a[x] = new Mix401();
			
			m4a[x].counter = m4a[x].counter + 1;
			
			count = count + 1;
			
			count = count + m4a[x].maybeNew(x);

			x = x + 1;
		}
	System.out.println(count + " " + m4a[1].counter);
	}
	
	public int maybeNew(int index) {
		
		if (index < 5) {
			
			Mix401 m4 = new Mix401();
			
			m4.counter = m4.counter + 1;
			return 1;
		}
		return 0;
	}
}

Mesmo seguindo fielmente a ordem dos assuntos apresentados pelo livro em questão, não consigo sanar a dificuldade de entender esse código que coloquei acima, [color=red]parece que nele há recursos que ainda não foram apresentados pelo livro, náo sei…[/color]

Na linha 23, entendo que está sendo criada uma classe de nome maybeNew, até aí tudo bem, mas o que significa a variável int index que está entre parênteses nesta mesma linha? Vejo que ela é usada no comando IF da linha 25, mas as variáveis não devem ser criadas em uma linha a parte, dentro do corpo da classe? Ou isso não faz diferença?

Na linha 27, é criado o objeto m4, com base na classe Mix401, ok!

Na linha 29, o que consigo entender, é que a variável counter do objeto m4 é somada em 1 e o resultado dessa soma é atribuído a ela mesma, ou seja, à variável counter do objeto m4. Mas essa variável, antes da soma, tem qual valor? Zero?

Na linha 30, há um retorno de valor 1. O que significa isso exatamente? Esse retorno é armazenado em que local? Esse valor 1 é usado para alguma coisa durante a execução desse código?

Na linha 32, novamente há um retorno, segue as mesmas dúvidas que fiz para a linha 30.

Não sei se compliquei muito para colocar minhas dificuldades, mas é isso.

[color=red]O pessoal que já conhece o livro, pode me dizer se isso que estou perguntando será tratado posteriormente à página 66?[/color]. Já reli os capítulos iniciais para ver se não me atentei a alguma explicação, mas não ajudou muito. He, he…

Obrigado.

5 Respostas

Diego_Silveira

Nesta linha esta sendo criado um método (ou operação) dentro da classe Mix401, e não uma classe. A variável int index é um parâmetro que este método recebe.

Exatamente. Perceba que a variável é iniciada como 0 na linha 2. Na primeira execução do método maybeNew, seu valor é igual a 0. Logo nesta primeira execução ela fica igual a 1, pois counter = conter + 1. Na proxima execução, seu valor será 2, e assim sucessivamente. Lembre-se, primeiro o Java faz a operação (soma) e depois a atribuição (armazenamento).

O retorno é o resultado da operação/método. Neste caso ele será usado na linha 16. Uma vez que o return é executado, o fluxo do método é interrompido e retorna para a parte do código que a invocou.

Qualquer dúvida é so falar!

W

Bom dia!

Obrigado pela ajuda. Vendo agora com mais detalhes o que acontece em cada linha fica mais fácil entender.

Acho que preciso revisar alguns conceitos.

Obrigado Diego.

D

Bom dia!

Não querendo ser chato ou pragmático demais, mas realmente é necessário antes de prática, teoria - pois do contrário, perde o direcionamento. Todavia, lhe recomendo que estude bastante orientação à objetos, de forma à saber o que cada conceito significa, e depois sim, se exercitar com o Java. Pois o Java - fantástico do jeito que é - vai lhe abrir muitas portas e se você não souber, por exemplo, o que é herança ou encapsulamento, vai ficar perdido, com toda a certeza.

Bons estudos!

[]'s

DanielGimenes

wss,

Recomendo que vc estude OO antes de ler este ou outros livros de Java. Vc cometeu erros básicos na hora de escrever o post (como chamar o counter de variável, e achar que na linha 23 uma classe estava sendo criada), e acredito que ler um livro de OO vai facilitar muito a sua vida para depois entender Java, além de que Orientação a Objetos é um paradigma que te ajudará a pensar em arquitetura de sistemas, etc, e não é restrito à linguagem.

[[]]'s

W

Boa dia amigos.

Diego e Daniel, agradeço pela dica. Eu achava que o livro iria comentar OO de forma suficiente, mas a dica de vocês é ótima. Tá bem difícil mesmo entender esses código.

Alguém pode sugerir alguma bibliografia e Orientação a Objetos boa para leigo?

Obrigado a todos.

Criado 9 de junho de 2010
Ultima resposta 10 de jun. de 2010
Respostas 5
Participantes 4