Ajuda Orientação a Objetos - Apostila da Caelum (Iniciante)

Boa noite pessoal.
Estou iniciando em Java agora e estou com sérios problemas pra entender orientação a objetos, mesmo vendo algumas apostilas achadas no google, nunca achei nenhuma que realmente me fizesse entender de uma vez por todas.
Estou lendo uma apostila da Caelum sobre Orientação a objetos(umas das melhores que achei), ela começa a explicar sobre uma classe conta, mas não entendo direito os locais certos onde ficam as classes e onde criam-se os objetos, pois o mesmo cria a classe, depois instacia, depois referencia o objeto do tipo conta, depois acessa o objeto, mas isso ele faz em blocos separados e com o mesmo nome de programa e somente no último tem o número das linhas e mesmo assim fica confuso, pois fazendo no Eclipse, sempre dá erro, creio que seja pq estou colocando em local errado, vou colocar a baixo, trecho onde ele mostra os blocos:

==== Apostila CAELUM ====
4.4 - Criando e usando um objeto
Agora, temos uma classe em Java que especifica o que todo objeto dessa classe deve ter. Mas como usá-la? Além dessa classe, ainda teremos o Programa.java e a partir dele é que iremos utilizar a classe Conta.
Para criar (construir, instanciar) uma Conta, basta usar a palavra chave new, utilizamos também os parênteses, que descobriremos o que são, exatamente, em um capítulo posterior:

class Programa {
public static void main(String[] args) {
new Conta();
}
}

Bem, o código acima cria um objeto do tipo Conta, mas como acessar esse objeto que foi criado? Precisamos ter alguma forma de nos referenciarmos a esse objeto. Precisamos de uma variável:

class Programa {
public static void main(String[] args) {
Conta minhaConta;
minhaConta = new Conta();
}
}

Pode parecer estranho escrevermos duas vezes Conta: uma vez na declaração da variável e outra vez no uso do new. Mas há um motivo, que entenderemos também posteriormente. Através da variável minhaConta, agora, podemos acessar o objeto recém criado para alterar seu nome, seu saldo etc:

1 class Programa {
2 public static void main(String[] args) {
3 Conta minhaConta;
4 minhaConta = new Conta();
5
6 minhaConta.nome = "Duke";
7 minhaConta.saldo = 1000.0;
8
9 System.out.println("Saldo atual: " + minhaConta.saldo);
10 }
11 }

Diante do que coloquei acima, me digam, o primeiro bloco de código (class conta) deve ficar antes da class Programa? e a montagem do restante dos blocos? na apostila não tem o código completo pra mim examinar e confesso que já tentei em vários lugares diferentes no código.

Gostei muito de como essa apostila foi feita, a didática dela é muito boa, mas somente neste trecho fiquei confuso, até pq pela falta de experiência em programação em geral, e creio que Orientação a Objetos seja minha pedra em meu sapato.

Se puderem me dar uma dica eu agradeço. :?:
Abraço a todos.

Roni, em relação aos métodos “blocos” não há nenhuma regra que diga quem vem antes e quem vai depois.
Vc pode primeiro colocar o método a conta e depois o método Programa que contém a main ou vice-versa.
Os objetos vc pode criar no momento que vc sentir a necessidade de utiliza-lo.
Não é que todos utilizem o nome de Programa, pois Programa é o nome de uma classe e dentro dessa classe há vários métodos. Método Conta, método Conta Poupança, método Conta Corrente, etc “lembrando que todos os métodos ficam dentro da classe Programa”.
Post seu código que está dando erro pra gente dar uma olhada.

Atc,
Fernando.

[quote=santos.fernando]Roni, em relação aos métodos “blocos” não há nenhuma regra que diga quem vem antes e quem vai depois.
Vc pode primeiro colocar o método a conta e depois o método Programa que contém a main ou vice-versa.
Os objetos vc pode criar no momento que vc sentir a necessidade de utiliza-lo.
Não é que todos utilizem o nome de Programa, pois Programa é o nome de uma classe e dentro dessa classe há vários métodos. Método Conta, método Conta Poupança, método Conta Corrente, etc “lembrando que todos os métodos ficam dentro da classe Programa”.
Post seu código que está dando erro pra gente dar uma olhada.

Atc,
Fernando.[/quote]

Grande Fernando Santos, muito obrigado por me responder e ainda por cima tão rápido.
Diante do que falou, fiz uma alteração no código, aparentemente funcionou, tem como dar uma analisada no que fiz abaixo e ver se está certo?
Agradeço muito pela força.

[code]
class ProgramaConta{
int numero;
String nome;
double saldo;
double limite;
}

public class conta {

public static void main(String[] args){
	new ProgramaConta();
	ProgramaConta minhaConta;
	minhaConta = new ProgramaConta();
	
	minhaConta.nome = "Duke";   
	minhaConta.saldo = 1000.0;   
	   
	System.out.println("Saldo atual: " + minhaConta.saldo);		
}

}[/code]

class ProgramaConta{  
	int numero;  
	String nome;  
	double saldo;  
	double limite;  
}  
   
	class conta {  
   
	public static void main(String[] args){  
		ProgramaConta minhaConta; 
		minhaConta = new ProgramaConta(); 
		minhaConta.nome = "Duke";     
		minhaConta.saldo = 1000.0;     
            
		System.out.println("Nome: " + minhaConta.nome + "\n" + "Saldo atual: " + minhaConta.saldo);       
	}  
}  

Isso mesmo, está no caminho certo. A única coisa que não faz muito sentido é a linha 11 do teu código, e se vc perceber a linha 13 faz a mesma coisa, a diferença que na linha 13 vc tem a referencia que é a minhaConta e na linha 11 não tem referencia, então não pode utilizar o objeto criado e na 13 tem.

Abs,
Fernando

[quote=santos.fernando][code]
class ProgramaConta{
int numero;
String nome;
double saldo;
double limite;
}

class conta {  

public static void main(String[] args){  
	ProgramaConta minhaConta; 
	minhaConta = new ProgramaConta(); 
	minhaConta.nome = "Duke";     
	minhaConta.saldo = 1000.0;     
        
	System.out.println("Nome: " + minhaConta.nome + "\n" + "Saldo atual: " + minhaConta.saldo);       
}  

}
[/code]

Isso mesmo, está no caminho certo. A única coisa que não faz muito sentido é a linha 11 do teu código, e se vc perceber a linha 13 faz a mesma coisa, a diferença que na linha 13 vc tem a referencia que é a minhaConta e na linha 11 não tem referencia, então não pode utilizar o objeto criado e na 13 tem.

Abs,
Fernando[/quote]

Acho que agora começou a clarear’, quer dizer que a linha 11 não está fazendo nada no meu código, é que não tinha dado erro no compilador, então pensei que tava certo.
Me diz uma coisa, pq a “class conta”, vc colocou ela como “public” ? Do jeito que fiz fica errado? ela tem que ser obrigatoriamente pública por estar com o “void main” ?

Grande abraço,

Não é que a linha 11 não estava fazendo nada, ela estava sim, estava criando um objeto do tipo ProgramaConta.
Sempre que vc utilizar um new, vc vai criar alguma coisa, por exemplo:
new Pessoa(); , aqui vc está criando um objeto do tipo Pessoa, mas não tem referencia para acessá-lo, então nesse exemplo não vai resolver nada.

Pessoa() p1 = new Pessoa ();
ou
Pessoa() p1;
p1 = new Pessoa(); , nesses dois outros exemplos vc está tbm está criando um objeto do tipo pessoa, mas dessa vez com a referencia p1, então através dessa
referencia vc consegue acessar os atributros da do objeto.

Em relação a main sempre terá que ser public. A main é o start do nosso programa, qualquer classe, qualquer objeto tem que enxergar ela.
Outros métodos obrigatóriamente não precisam ser public, podem ter qualquer modificador de acesso, depende da sua necessidade.

Abs,
Fernando.