Ajuda para Iniciar com OO

6 respostas
I

Estou iniciando agora em Java, de início não gostei da linguagem, mas agora analisando seus extensos recursos me interessei…
Minha maior dúvida de início é quanto às classes, objetos etc…
Por exemplo, quando utilizar :

"public class" "public void" "public static void" ?

Ps.: Estudei o C Básico…

6 Respostas

S

Interpreter.Java:
Estou iniciando agora em Java, de início não gostei da linguagem, mas agora analisando seus extensos recursos me interessei…
Minha maior dúvida de início é quanto às classes, objetos etc…
Por exemplo, quando utilizar :

"public class" "public void" "public static void" ?

Ps.: Estudei o C Básico…

public class significa que você está declarando uma classe de visibilidade publica (todos as classes de todos os pacotes podem ve-la). A classe precisa ser declarada dentro de um arquivo com o mesmo nome da classe.

Exemplo:

MinhaClasse.java

public class MinhaClasse {

}

public void faz parte da declaração de um metodo. public (como dito acima) é a visibilidade do metodo, nesse caso todas as classes de todos os pacotes. void é o retorno dele (no caso, não retorna nada).

Exemplo:

MinhaClasse.java

public class MinhaClasse {

       public void nomeDoMetodo(parametros) {
             //corpo do metodo
}

}

public static void também faz parte da declaração do metodo. É igual ao acima mas com a palavra static você indica que não é necessario uma instacia de uma classe para acessa-lo mas o metodo não podera fazer referencia a metodos e atributos de instancia (ou seja, tudo aquilo que não tiver static).

Exemplo:

MinhaClasse.java

public class MinhaClasse {

       public static void nomeDoMetodo(parametros) {
             //corpo do metodo
}

}
I

Obrigado pela explicação, no momento está sendo muito difícil entender o que é um método, classe, objeto… acho que a dificuldade maior é entender quando utilizar cada um deles, acho que sabendo em que irei utilizar com certeza ficaria mais fácil entender o que é…

d34d_d3v1l

baixe a apostila da Caelum

S

É bem assim:

Imagine a classe como como um projeto. Suponhamos a classe Pessoa. Ela seria como um projeto de como uma pessoa deve ser. Tem os atributos (altura, peso, nome, idade) e metodos (o que ela faz, como comer, dormir, beber, correr).

public class Teste {

	public static void main(String[] args) {
		Pessoa umCara; // criamos uma variavel de referencia do tipo Pessoa, ela
						// só
						// aceita referencias a objetos do tipo pessoa
		umCara = new Pessoa("João", 25, 1.75); // instanciamos um objeto do tipo
												// pessoa e passamos a
												// referencia
												// para umCara. Aqui foi chamado
												// o metodo
												// construro Pessoa(String, int,
												// altura)
		umCara.mostraInformacao(); // invocamos o metodo mostraInformacao() a
									// partir
									// da variavel umCara
		umCara.corre(); // invocamos o metodo corre() a partir da variavel
						// umCara
		umCara.dorme(); // invocamos o metodo dorme() a partir da variavel
						// umCara

		Pessoa outraPessoa; // criamos outra variavel de referencia, nós a
							// chamamos de outraPessoa
		outraPessoa = new Pessoa("Zé", 30, 1.90); // instanciamos um outro
													// objeto do tipo pessoa e
													// passamos a referencia
													// desse novo objeto para a
													// variavel outraPessoa
		outraPessoa.mostraInformacao(); // invocamos o metodo mostraInformacao()
										// a partir de outraPessoa
		outraPessoa.come(); // invocamos o metodo come() a partir de outraPessoa
		outraPessoa.dorme(); // invocamos o metodo dorme() a partir de
								// outraPessoa
		System.out
				.println("Outra pessoa acabou de fazer alguns anos e agora ele tem"
						+ outraPessoa.fazerAlgunsAniversarios(5));
		/*
		 * Perceba que umCara e outraPessoa armazenam estados diferentes. Eles
		 * são o mesmo tipo de objeto mas possuem estados diferentes.
		 */
	}
}

class Pessoa {

	private String nome; // declaramos um atributo do tipo String com
							// visibilidade private
	private int idade; // declaramos um atributo do tipo String com visibilidade
						// private
	private double altura; // declaramos um atributo do tipo double com
							// visibilidade private
	private boolean cansado; // declaramos um atributo do tipo boolean com
								// visibilidade private

	public Pessoa(String nome, int idade, double altura) { // metodo construtor,
															// ao fazer new
															// Pessoa(String,
															// int, altura) este
															// metodo sera
															// chamado
		this.nome = nome; // a palavra this é usada para se referenciar ao
							// objeto atual, no caso chamamos o atributo nome do
							// nosso objeto pessoa, dessa forma o compilador
							// pode saber a diferença entre as variaveis nome
							// que pertence ao objeto e a variavel nome que foi
							// passado como parametro
		this.idade = idade;
		this.altura = altura;
	}

	public void mostraInformacao() { // metodo de visibilidade public que não
										// retorna nada
		System.out.println("Nome: " + nome); // aqui imprimimos o nome no
												// console
		System.out.println("Idade: " + idade); // aqui imprimimos a altura no
												// console
		System.out.println("Altura: " + altura); // aqui imprimimos a altura no
													// console
		System.out.println("Eu "
				+ (cansado ? " estou cansado." : " não estou cansado.")); // aqui
																			// verificamos
																			// se
																			// a
																			// variavel
																			// cansado
																			// é
																			// verdadeira,
																			// caso
																			// seja
																			// true
																			// retorna
																			// a
																			// String
																			// " estou cansado."
																			// caso
																			// seja
																			// false
																			// retorna
																			// a
																			// String
																			// " não estou cansado."
	}

	public void come() { // metodo de visibilidade public do tipo void
		System.out.println(nome + " se alimentou bem"); // aqui imprime a String
		// "Estava bom."
	}

	public void corre() { // metodo de visibilidade public do tipo void
		if (!cansado) { // aqui verificamos se cansado é igual a false, se for
						// true ele entra no bloco de código abaixo, caso seja
						// true entra no bloco else
			System.out.println(nome + " correu muito e agora está cansado.");
			cansado = true; // passamos a variavel para true
		} else { // se cansado for true, o código cai nesse bloco
			System.out.println(nome + " está muito cansado para correr.");
		}
	}

	public void dorme() { // metodo de visibilidade public do tipo void
		System.out.println("Agora " + nome + " não está mais cansado.");
		cansado = false; // passamos a variavel para false
	}

	public int fazerAlgunsAniversarios(int quantosAnos) { // metodo de
															// visibilidade
															// public que
															// retorna um
															// inteiro e pede um
															// inteiro como
															// parametro para
															// poder ser
															// invocado
		idade += quantosAnos;
		return idade;
	}

}
I

Obrigado, muito detalhada a explicação, mas como estou inciando ainda é confuso… mas estou lendo e estudando para tentar me adaptar ao “ambiente” java…
Poderia me dar um exemplo de classes e métodos por exemplo de um conversor de temperaturas F/Cº ou mesmo de uma Calculadora ?

I

Up… ninguém?

Criado 21 de setembro de 2012
Ultima resposta 25 de set. de 2012
Respostas 6
Participantes 3