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.
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?
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]