Manipulando vetor de objetos

Caso ninguem responda até la, a noite, se eu tiver tempo, entro na internet e pego o exercicio direito contigo.
Ai, se você quiser, a gente discute melhor por msn ou algo do tipo.

[quote=gRoOve]Vejam esse link http://www.guj.com.br/posts/list/77982.java, era o maldito problema de buffer do C mesmo =((

Kura, minha classe cadastro cadastra um por vez, mas preciso limitar a quantidade de objetos em 100…se declarasse no método main teria que passar pela função o objeto né? Sou novo em OOP, não tenho muita noção de como as coisas ficam melhor…O que vc sugere?[/quote]

Dentro da classe Cadastro a classe Pessoa que foi instânciada está correta.
Pode ser dessa forma. acredito que seja a melhor, se passar como parâmetro daria na mesma, ai instânciava na classe teste, e passava no contrutor da classe Cadastro, ai pegava do contrutor e joga em seus atributos, mas dessa forma, nesse caso, é pior.

Então vou deixar da forma mais fácil, a classe Pessoa sendo instânciada dentro da classe Cadastro, até aí consigo entrar com os dados e armazenar na sua devida posição dentro do array. Agora, como faço com a classe Endereco? Tenho que instância-lá dentro da classe Cadastro também? Criar um array como a classe Pessoa?

Olhem como eu fiz:

import java.util.Scanner;

public class Cadastro {
	
	private int cont = 0; //Conta a quantidade de registros
	final int MAX = 2;
	
	Scanner s = new Scanner(System.in);
	Pessoa[] pessoa = new Pessoa[MAX];
	Endereco[] endereco = new Endereco[MAX];
	
	//Metodos
	public void cadastrar()
	{
		if(cont == MAX) return;
		
		pessoa[cont] = new Pessoa(); //Instanciar o objeto pessoa referente a posição cont do array
		endereco[cont] = new Endereco(); //Instanciar o objeto endereco referente a posição cont do array
		
		System.out.println("Nome: ");
		pessoa[cont].setNome(s.nextLine());
		
		System.out.println("Idade: ");
		pessoa[cont].setIdade(s.nextInt());
		
		System.out.println("CPF: ");
		pessoa[cont].setCpf(s.nextInt());
		
		s.nextLine();//Pega o buffer do teclado
		System.out.println("Rua: ");
		endereco[cont].setRua(s.nextLine());
		
		pessoa[cont].setEndereco(endereco[cont]);
		cont++;
	}
	
	public void excluir()
	{
		String nome;
		System.out.println("Digite o nome que deseja exlcuir: ");
		nome = s.nextLine();
		for(int i=0; i<cont; i++)
		{
			if(nome.equals(pessoa[i].getNome()))
				pessoa[i].setNome(null);
		}
	}
	
	public void exibir()
	{
		for(int i=0; i<cont; i++)
		{
			if(! (pessoa[i].getNome().equals(null)) )
			{
				System.out.println("Nome: " + pessoa[i].getNome());
				System.out.println("Idade: " + pessoa[i].getIdade());
				System.out.println("CPF: " + pessoa[i].getCpf());
				System.out.println("Rua: " + pessoa[i].getEndereco().getRua());
				System.out.println("");
			}
		}
	}
}

Só uma dúvida na função exibir(), quero comprar o conteudo do nome com null, mas essa função não tá dando certo. Como eu faria ali?

Para comparar com null faça:

if(pessoa[i].getNome() != null){...} 

Na classe pessoa que deveria estar o endereço, algo assim:

[code]public class Pessoa
{

private Endereco endereco; // Uma pessoa irá ter apenas 1 endereço? se for assim está certo
// E todos os atributos aqui

}[/code]

Dessa forma eu falo que a Pessoa possui um endereço, a cada cadastro o objeto Pessoa será preenchido, sendo assim, irá ter o endereço daquela pessoa…

Caso surgir dúvidas ao cadastrar o endereço dessa forma, faça assim:

[code]public class Pessoa
{

private Endereco endereco; // Uma pessoa irá ter apenas 1 endereço? se for assim está certo
// E todos os atributos aqui

public Endereco getEndereco()
{
	return this.endereco;
}

}[/code]

ai onde está assim:

System.out.println("Rua: "); endereco[cont].setRua(s.nextLine());

use dessa forma:

System.out.println("Rua: "); pessoa[cont].getEndereco().setRua(s.nextLine());

Tipo, como vc viu no meu código ali, primeiro eu atribui os valores ao objeto endereco, depois coloquei-o dentro do objeto pessoa.

Porém eu tentei assim:

System.out.println("Rua: ");    
pessoa[cont].getEndereco().setRua(s.nextLine()); 

E não deu certo não. O encapsulamento com set e get, pra acessar Endereco está feito na classe Pessoa.