Classe Pessoa PessoaFisica , PessoaJuridica Cliente e Vendas
9 respostas
tenclar
Estou criando a logica de um projeto para cadastro de cliente onde cliente pode ser pessoa jurídica ou Fisica, alguem tem uma sujestão baseado nas tradicionais classes:
Utilize do poliformismo. Faça com que a classe Pessoa seja abstrata para que ela não possa ser instanciada, e na classe Cliente crie um método de cadastro que recebe Pessoa.
davidbuzatto
Use composição com a classe Pessoa, que poderá ser tanto pessoa física como jurídica.
Faça um favor a você mesmo: NÃO use herança de Pessoa pra Pessoa Física e Jurídica. Apesar do nome parecido, o comportamento delas é sempre absurdamente diferente. Aprendi do pior jeito possível umas três vezes, porquê nem sempre eu tinha opção) que fazer isso traz problemas.
Separa esse bagulho, que 3 ou 4 atributos economizados não justificam a herança aí.
Abraço!
tenclar
eu só queria saber o que ponho na classe cliente para que inclua pessoa tanto fisica quanto juridica .
gustavo_mb
tenclar:
eu só queria saber o que ponho na classe cliente para que inclua pessoa tanto fisica quanto juridica .
Você já pesquisou polimorfismo? Acho que não. Vou te mostrar como faz dessa vez, mas não deixe de pesquisar para que aprenda!
public abstract class Pessoa {
private String nome;
private String telefone;
private String endereco;
//getters e setters
publicclassPessoaFisicaextendsPessoa{privateStringcpf;privateStringrg;//getters e setters
publicclassPessoaJuridicaextendsPessoa{privateStringcnpj;privateStringie;//getters e setters
publicclassCliente{privatestaticArrayList<Pessoa>listaDeClientes=newArrayList<Pessoa>();publicvoidadicionaCliente(Pessoap){//Aqui entra um dos conceitos de polimorfismo... estamos pedindo pra receber uma pessoa aqui. Uma PessoaFisica é uma Pessoa? E uma Pessoa Juridica é uma Pessoa? No nosso caso sim!Conta.listaDeClientes.add(p);System.out.println(p.getNome()+" adicionado com sucesso na lista de Clientes!");}publicArrayList<Pessoa>getListaDeClientes(){returnlistaDeClientes;}}
publicclassTeste{publicstaticvoidmain(String[]args){//Pessoa p = new Pessoa(); //não instancia, pois a classe Pessoa é abstrataPessoaFisicapf=newPessoaFisica();PessoaJuridicapj=newPessoaJuridica();pf.setNome("Pessoa Física");pj.setNome("Pessoa Juridica");Clientec=newCliente();c.adicionaCliente(pf);c.adicionaCliente(pj);}}
K
kassamba
Pessoal boa noite,
Sou iniciante na linguagem java e tenho algumas dúvidas em relação ao conceito de polimorfismo. Através da classe Pessoa, tenho que fazer um vetor que receba os dados dos clientes, imprimá-os e também os “diferenciem” entre os tipos de cliente: Pessoa Física e Pessoa Jurídica.
No momento da comparação através do laço “if”, eu nao estou sabendo mais como fazer.
Caso alguém possa me ajudar ou passar orientações, fico agradecido. O código que está abaixo, é até onde eu consegui fazer.
packagebr.edu.ifsuldeminas.teste;importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){inti=0;Pessoaclientes[]=newPessoa[5];clientes[0]=newPessoaFisica();clientes[1]=newPessoaJuridica();clientes[2]=newPessoaFisica();clientes[3]=newPessoaJuridica();clientes[4]=newPessoaFisica();Scannerentrada=newScanner(System.in);for(i=0;i<5;i++){System.out.println("---------------------------------------------");System.out.print("Digite o nome da Pessoa:");clientes[i].setNome(entrada.nextLine());System.out.print("Digite o endereco da Pessoa:");clientes[i].setEndereco(entrada.nextLine());System.out.print("Digite o telefone da Pessoa:");clientes[i].setTelefone(entrada.nextInt());entrada.nextLine();System.out.println("---------------------------------------------");//Aqui precisa fazer a comparação se o cliente é Pessoa Fisica ou Pessoa Juridica.// }System.out.println("Dados dos Clientes");for(i=0;i<5;i++){System.out.println("---------------------------------------------");System.out.println("Clientes["+i+"]="+clientes[i].getNome());System.out.println("Clientes["+i+"]="+clientes[i].getEndereco());System.out.println("Clientes["+i+"]="+clientes[i].getTelefone());System.out.println("---------------------------------------------");}}}
Daniel_T_S
Geralmente eu crio apenas uma classe Pessoa e todas as pessoas no meu sistema herdam de Pessoa, sejam elas físicas ou jurídicas.
Então crio uma classe ‘Documento’ que tem rg, cpf, cnpj e etc. E então a classe Pessoa passa a ‘ter’ uma variável do tipo Documento.