Duvida em implementação de metodo para inserir pessoas

7 respostas
guilherme178

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  cadastrado;

Não poderá ser cadastrado cliente com cpf  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.

7 Respostas

drsmachado

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

jeffev

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?

guilherme178

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:

private ArrayList<Pessoa> pessoas = new ArrayList<Pessoa>();
private ArrayList<Produto> produto = new ArrayList<Produto>();
private ArrayList<Compras> compras = new Arraylist<Compras>();
private ArrayList<Vendas> listavendas = new ArrayList<Vendas>();

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);
       }
}

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?

jeffev

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.

guilherme178

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.

F

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:

private ArrayList<Pessoa> pessoas = new ArrayList<Pessoa>();
private ArrayList<Produto> produto = new ArrayList<Produto>();
private ArrayList<Compras> compras = new Arraylist<Compras>();
private ArrayList<Vendas> listavendas = new ArrayList<Vendas>();

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
          }            
       }
}
R

Para verificar se ja existe o cpf na base ?

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

Abraços.

Criado 30 de outubro de 2012
Ultima resposta 31 de out. de 2012
Respostas 7
Participantes 5