Ir ao conteúdo
  • Cadastre-se

Problema no cadastro de cliente em java


systemservico

Posts recomendados

Amigos estou tentando fazer o sistema em java em modo console que tenho uma classe Cliente com atributos em arraylist nome, cpf, endereco e telefone coloquei o construtor

public Cliente() {

this.nome.add(nome);

...

}

depois os Get e Set já la na class principal estou tentando usar um menu com switch no case 1: estou colocando System.out com a mensagem NOME: , CPF pedindo essas informações com o Scanner e atribuindo ao array tipo System.out.println("NOME: ");

cadcliente.cadastraCliente(nome) = entrada.nextLine();

mas esta dando erro estou tentado criar um sistema de locadora de filmes, agradeço desde já a ajuda estou postando o codigo logo abaixo:

Cliente.class


package Cliente;

import java.util.ArrayList;
import java.util.Scanner;
import Principal.Principal;

public class Cliente {

Scanner entrada = new Scanner(System.in);
Principal principal = new Principal();

// Atributos (Variaveis)
private ArrayList<String> nome = new ArrayList<String>();
private ArrayList<String> cpf = new ArrayList<String>();
private ArrayList<String> endereco = new ArrayList<String>();
private ArrayList<String> telefone = new ArrayList<String>();

// Construtor
public Cliente(String nome, String cpf, String endereco, String telefone) {
this.nome.add(nome);
this.cpf.add(cpf);
this.endereco.add(endereco);
this.telefone.add(telefone);
}

// Metodos (Acoes ou Funcoes)
public void cadastraCliente(ArrayList<String> nome, ArrayList<String> cpf, ArrayList<String> endereco, ArrayList<String> telefone) {

this.nome = nome;

this.cpf = cpf;

this.endereco = endereco;

this.telefone = telefone;

principal.main(null);
}

public Scanner getEntrada() {
return entrada;
}

public void setEntrada(Scanner entrada) {
this.entrada = entrada;
}

public ArrayList<String> getNome() {
return nome;
}

public void setNome(ArrayList<String> nome) {
this.nome = nome;
}

public ArrayList<String> getCpf() {
return cpf;
}

public void setCpf(ArrayList<String> cpf) {
this.cpf = cpf;
}

public ArrayList<String> getEndereco() {
return endereco;
}

public void setEndereco(ArrayList<String> endereco) {
this.endereco = endereco;
}

public ArrayList<String> getTelefone() {
return telefone;
}

public void setTelefone(ArrayList<String> telefone) {
this.telefone = telefone;
}
}

Principal.class


package Principal;

import java.util.ArrayList;
import java.util.Scanner;

import org.w3c.dom.CDATASection;

import Cliente.Cliente;

public class Principal {

public static void main(String[] args) {

Scanner entrada = new Scanner(System.in);
Cliente cadcliente = new Cliente();

int menu = 0;
int opcao = 0;

do {
System.out.println("===== LOCADORA DE FILME =====");
System.out.println("1 - CADASTRAR CLIENTE");
System.out.println("2 - CADASTRAR FILME");
System.out.println("3 - LOCAR FILMES");
opcao = entrada.nextInt();

switch (opcao) {

case 1:
System.out.println("NOME: ");
cadcliente.cadastraCliente(nome) = entrada.nextLine();

break;

case 2:

break;

case 3:

break;

default:
System.out.println("Opcao invalida.");
break;
}
} while (menu == 0);
}
}

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Ola systemservico.

Então, o primeiro problema que eu encontrei no seu código foi a questão da "mútua associação", ou seja, "uma classe está utilizando a outra e a outra está utilizando a uma"... Lá em Principal tem uma referência de Cliente, e em Cliente tem uma referência de Principal. No mínimo fica estranho (creio eu que nem funciona - não lembro).

Existem vários "padrões de projetos", mas o mais comum na implementação é deixar as classes o mais simples possível, ou seja, elas só terão os seus atributos, métodos e construtores, e o "trabalho" de criar objetos, instanciar, preencher etc, fica de responsabilidade de outras classes.. como por exemplo esse "Principal".

VAMOS AO QUE INTERESSA

Como já sugeri, a classe Cliente deve ser o mais simples possível, logo só tendo: Métodos, Atributos e Construtores. (todos claro referente única e exclusivamente a classe).

Veja que as classes servem somente como um "esqueleto" ou "molde" do objeto. Daí a aplicação, que no seu caso é a classe Principal, utiliza essas classes para criar os seu objetos que serão usados de modo que correspondam as suas necessidades.

Outro ajuste é no package (pacote). Sugiro de deixe ambos como, por exemplo, package locadora;. O package serve basicamente para organizar as classes em pastas... logo, se tiver em uma "pasta" diferente, é preciso dar um import. Se você quiser, nem precisa usar... usa sem mesmo.

Daí é só ajustar o código de Principal.

No aguardo.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!