Dúvidas na Ultilização de Métodos JAVA

13 respostas
javaprogramação
G

Galera estou em duvida se um metodo qualquer de uma classe pode haver entrada de dados exemplo abaixo

public void CadastrarCliente(){

System.out.print("NOME:  ");

this.nome = teclado.nextLine();

System.out.print("TELEFONE: ");

this.telefone = teclado.nextInt();

}

faz de conta que estes atributos já estavam criado na classe.
Minha dúvida é, se é correto fazer um metódo desse jeito, ou se esses argumentos eu faço no próprio main e não dentro de um metódo.

13 Respostas

M

Construtor não tem que solicitar nada, ele serve só para CONSTRUIR o OBJETO

Seria mais correto assim:

public void cadastrarCliente() {
    //Se é um método de cadastro de cliente, então crie um cliente
    Cliente cliente = new Cliente();

    System.out.print("NOME: ");
    cliente.nome = scanner.nextLine();

    System.out.print("TELEFONE: ");
    cliente.telefone = scanner.nextInt();
}

Se você já viu sobre Getters e Setters, considere trocar os atributos pelos set correspondente

G

não entendi o porque de instanciar a classe cliente dentro do método, sendo que o método já está na classe cliente.

M

Um cliente não cadastra um cliente, né?

Quem cadastra um cliente é outra classe

Um cliente não tem o dever e nem o poder de cadastrar um outro cliente, quem faz isso é a empresa

G

áahhhh acho q entendi então devo criar outra classes com os comandos que eu queira ultilizar com os atributos da classe cliente né isso?

G

No meu caso, estou fazendo um projeto para minha faculdade, estou querendo desenvolver um programa de fazer pedidos de livros, que no caso coloquei as seguintes classes: Principal, Clientes, Pedidos, Editoras e por fim usando sua ideia criei outra classe CadastrarCliente.

Para adicionar os clientes estou criando uma arraylist, para simular um “banco de dados” ,
e nesse programa preciso cadastrar as editoras e também os pedidos. preciso criar outras classes como fiz para o cliente ? tipo CadastrarEditora e a classe CadastrarPedidos??

estou indo pelo caminho certo?

M

CadastrarCliente, CadastrarEditoras e CadastrarPedidos estão mais para ações(métodos) do que Classes.

Então seria uma boa criar os métodos: cadastrarCliente, cadastrarEditoras e cadastrarPedidos em uma classe que não representa algo concreto, pode ser uma classe Sistema, ou até mesmo na Principal (dependendo de como você esta fazendo ou pensa fazer)

EDIT:
Ou como você esta simulando um banco de dados, você pode criar uma classe chamada BancoDeDados e colocar os métodos la.

G

Muito obrigado mano, agora compreendi, tava fazendo tudo bagunçado mais agora deu um tchã no cérebro kkk, vlw mesmo man.

G

public class Sistema {
Scanner teclado = new Scanner(System.in);

//LISTA PARA CLIENTES
ArrayList clientes = new ArrayList();


//CLASSES INSTANCIADAS
Clientes cliente = new Clientes();
Pedidos pedido = new Pedidos();
Editora editora = new Editora();


public void CadastrarClientes(){
    
    System.out.print("NOME DO CLIENTE: ");
    cliente.setNome(new Scanner(System.in).nextLine());
    System.out.print("TELEFONE: ");
    cliente.setTelefone(new Scanner(System.in).nextLine());
    System.out.print("DOCUMENTO: ");
    cliente.setDoc(new Scanner(System.in).nextLine());
    
}

}
é correto eu fazer isto na minha classe sistema q criei?

M

Sim é correto, mas não precisa fiar criando um Scanner toda hora né?

Seria melhor se a classe chamasse Cliente e não Clientes, pois os atributos que vão nela representa um cliente só, a mesma coisa vale para as outras classes

G

Eu fiquei dando esses new scanner dentro dos set pra limpar o buffer, pq se n fica dando um bug quando vou preencher as strings.

G

outra dúvida q estou tendo, é que o seguinte vou cadastrar os clientes e depois as editoras, e quando eu for fazer um pedido eu tenho q seleciona o cliente q irá fazer o tal pedido e como estou usando arrayList estou ficando um pouco perdido, na minha classe Sistema criei os seguintes métodos

//LISTA DOS CLIENTES CADASTRADOS

public void ListarClientes(){

Iterator i = clientes.iterator();

System.out.println("\n\tCLIENTES CADASTRADOS\n");

while(i.hasNext()){

cliente = (Cliente)i.next();

System.out.println("CLIENTE "+(j+=1)+"º: "+cliente.getNome());

}
j=0;
}
//SELECIONANDO CLIENTE DE ACORDO COM A POSIÇÃO QUE ELE ESTA NA LISTA
public void SelecionarCliente(){
    System.out.print("\nSELECIONE O CLIENTE: ");
    es = teclado.nextInt();
    cliente = (Cliente) clientes.get(es-=1);
    System.out.print("\nCLIENTE SELECIONADO: "+cliente.getNome());
}

se tiver outro jeito para eu poder selecionar os clientes melhor q este, pfv me da uma luz.

M

Supondo que você queria selecionar pelo cpf:

cpf = scanner.nextLine();

for(Cliente c: clientes) {
    if(c.getCpf().equals(cpf)) {
        //faz algo
        break;
    }
}
G

não sei pq esta dando este erro.

Criado 22 de setembro de 2018
Ultima resposta 23 de set. de 2018
Respostas 13
Participantes 2