Duvida em implementação de metodo para inserir pessoas

Boa tarde pessoal.

Estou fazendo um trabalho em Java para a faculdade e estou com dificuldades em um método para inserir pessoas.

A descrição de um dos métodos da classe é:

[i][b]Classe Comercial:

Atributos: pessoas (lista de Pessoas), produtos (lista de Produtos), compras (lista de Compras) e lista de vendas (lista de Vendas). As listas devem ser implementadas usando a classe ArrayList. Todos com acesso privado;

Método para inserir uma nova pessoa. Parâmetro a pessoa;

Observações:
Não poderá ser cadastrado fornecedor com cnpj já cadastrado;
Não poderá ser cadastrado cliente com cpf já cadastrado;
A meta mensal de vendas do vendedor tem que ser maior do que zero e o cpf não pode ser repetido;
[/b]
[/i]

Fiz a seguinte logica:

[i][b]private ArrayList pessoas = new ArrayList();
private ArrayList produto = new ArrayList();
private ArrayList compras = new Arraylist();
private ArrayList listavendas = new ArrayList();

public void inserePessoa(Pessoa objPes)
{
if(objPes.getTipo() == obj.Pes.CLIENTE) //CLIENTE é uma constante declarada na classe abstrata Pessoa.
{
for(Cliente objCli : pessoas)
{
//Como eu faria a condição para ver se um CPF ja existe no cadastro?
}
pessoas.add(objPes);
}
}
[/b]
[/i]

Este pedaço é a penas o inicio do método, ainda terei que implementar as condições para fornecedor e vendedor. Mas estou garrado no Cliente.

As classes fornecedor, cliente e vendedor, são heranças da classe abstrata Pessoa.

Poderiam me ajudar?

Obrigado.

Use a tag [code], caso não seja muito difícil para tua capacidade.

Bom… vamos lá… qual a dificuldade, o que você não está conseguindo fazer, você já fez a classe pessoa com as suas heranças?

Sim, ja implementei os codigos das herdeiras, e esta classe é pra implementar os metodos de inserção, exclusão, fazer compra, excluir compra, inserir venda, excluir venda, e inserir produto.

Eu estava fazendo a seguinte condição:

[code]private ArrayList pessoas = new ArrayList();
private ArrayList produto = new ArrayList();
private ArrayList compras = new Arraylist();
private ArrayList listavendas = new ArrayList();

public void inserePessoa(Pessoa objPes)
{
if(objPes.getTipo() == obj.Pes.CLIENTE) //CLIENTE é uma constante declarada na classe abstrata Pessoa.
{
for(Cliente objCli : pessoas) // nesta linha o eclipse gerava um erro
{
if(objCli.getCpf().equals(objPes.getCpf()) // nesta outra linha também dava erro, pois a classe Pessoa nao tem o atributo CPF.
}
pessoas.add(objPes);
}
}[/code]

O exercicio diz que nao posso inserir 2 pessoas com cpf igual, logicamente, mas como farei a condição correta se a classe pessoa passada como parametro nao possui CPF?

Ai está a questão, você não passa a classe pessoa, passa a classe cliente ou fornecedor.

Tente ir fazendo mais um pouco se tiver problemas posta aqui que ajudamos.

Valeu pela ajuda Jeffev.

Tentei também fazer usando casting para a classe Pessoa, assim: ((Cliente)objPes) pra ele ter acesso ao metodo getCpf(), mas também não funcionou.

Se quiser te envio o .doc do meu trabalho pra voce entender melhor, pode ser também que eu nao esteja explicando direito.

Bom, para adicionar uma pessoa, antes de mais nada você precisa verificar o tipo dela (CLIENTE, FORNECEDOR …),
que é a sua condição com a constante CLIENTE certo?

Depois disso, você precisa verificar se já existe algum CPF cadastrado, então você precisa varrer a lista procurando o CPF.
Depois de varrer a lista inteira e não encontrar o CPF, você pode adicionar a pessoa.

Faça algo do tipo:

[code]private ArrayList pessoas = new ArrayList();
private ArrayList produto = new ArrayList();
private ArrayList compras = new Arraylist();
private ArrayList listavendas = new ArrayList();

public void inserePessoa(Pessoa objPes)
{
if (objPes.getTipo() == obj.Pes.CLIENTE) {
boolean cpfCadastrado = false;
for (Pessoa pessoa : pessoas) {
if (pessoa instanceof Cliente) {
Cliente objCli = (Cliente)pessoa;
if (objCli.getCpf().equals(((Cliente)objPes).getCpf()) {
cpfCadastrado = true;
break; // Se já achou um cpf igual nem precisa continuar a procurar, sai do loop
}
}
}
if (!cpfCadastrado) {
pessoas.add(objPes);
} else {
// CPF JA CADASTRADO
}
}
}[/code]

Para verificar se ja existe o cpf na base ?

Objeto = select * from pessoas where cpfpessoa = '1234567891011";

Abraços.