Duvida , sobre Boa pratica de Programaçao

Pessoal estou com uma duvida de iniciante “ai ai sou um iniciante em java!”
para uma boa pratica de programação oque é certo fazer

  1. Um metodo resgistraEntrada() e instanciando como eu fiz la em baixo
    public void registrarEntrada() {

          System.out.println("\nDIGITE O NOME DO LOCATÁARIO");
          nomeLocatario = scan.nextLine();

          System.out.println("\nDIGITE A DIA ENTRADA");
          diaEntrada = scan.nextInt();

          System.out.println("\nDIGITE O MÊS DE ENTRADA");
          mesEntrada = scan.nextInt();

          System.out.println("\nDIGITE O ANO ENTRADA");
          anoEntrada = scan.nextInt();

          System.out.println("\nDIGITE A HORA DA ENTRADA");
          horaEntrada = scan.nextInt();

          System.out.println("\nDIGITE O MINUTO DA ENTRADA");
          int minuto = scan.nextInt();

          AluguelQuarto aluguelQuarto = new AluguelQuarto(nomeLocatario, diaEntrada, mesEntrada, anoEntrada, horaEntrada, minutoEntrada);

     }
  1. ou Passar todos esses dados de entrada para a classe de teste main(String[] args)
     public static void main(String[] args) {

          System.out.println("\nDIGITE O NOME DO LOCATÁARIO");
         String nomeLocatario = scan.nextLine();

          System.out.println("\nDIGITE A DIA ENTRADA");
        int  diaEntrada = scan.nextInt();

          System.out.println("\nDIGITE O MÊS DE ENTRADA");
         int mesEntrada = scan.nextInt();

          System.out.println("\nDIGITE O ANO ENTRADA");
         int anoEntrada = scan.nextInt();

          System.out.println("\nDIGITE A HORA DA ENTRADA");
        int  horaEntrada = scan.nextInt();

          System.out.println("\nDIGITE O MINUTO DA ENTRADA");
          int minuto = scan.nextInt();

          AluguelQuarto aluguelQuarto = new AluguelQuarto(nomeLocatario, diaEntrada, mesEntrada, anoEntrada, horaEntrada, minutoEntrada);


     }

Obrigado pela ajuda

Olha, na prática, não se faz um programa assim, porque geralmente os programas contam com interfaces gráficas…

Este é um exemplo mais didático mesmo, seu professor (ou o livro que você deve estar lendo) está explicando assim, mais é para que você possa ir entendendo os comandos e como funcionam os métodos…

Vou explicar…

Se você quisesse registrar um “ponto eletrônico”, por exemplo, usaríamos a classe GregorianCalendar, e pegaríamos a hora atual do sistema, assim o usuário só precisaria registrar seu código+senha…(Ou talvez nem precise se usarmos um sistema de cartões/carteirinhas)

E não dessa maneira, fazendo-o digitar a hora…(Porque o usuário pode colocar qualquer coisa =P e burlar o seu sistema de ponto.)

Em um programa com interface gráfica, geralmente as funções lógicas de um programa ficam dentro de métodos, cada botão do programa, pode chamar um método (exemplo).

Assim, se você tem uma outra classe, que precisa exercer aquela mesma função, você não precisa reescrever código, mas apenas chamar o método da outra classe que contém o código (que você já escreveu).

Já o método Main, como você mostrou, no meu ponto de vista serve de “boot” para o seu sistema.
Ele vai chamar um Frame, uma Classe, um Método, e a partir dali, todo o programa vai seguindo seu rumo…
A partir disto, uma classe chama uma outra, que chama um método que faz isso, e aquilo […]

Eu estou explicando dessa maneira mais para fins didáticos, porque na prática, em um sistema OO, algumas coisas que eu falei podem ser diferentes.

Espero ter ajudado ou contribuído de alguma forma.

Avelino7, você ajudou sim, todo comentário é bem vindo, obrigado

alguém mais pode me ajudar, nos comentarios

Os metodos são melhores utilizados quando precisam ser executados mais de uma vez, se voce fizer esse cadastro e se no seu sistema ele se repetir apenas uma vez, pode até fazer ele no Main.
Mas agora, se por exemplo, voce tem um menuzinho no seu sistema que tem como opção esse seu cadastro e você vai precisar cadastrar mais vezes usando esse mesmo cadastro, seria muito mais viável você fazer um método com o menu e outro método com o cadastro e chamar o cadastro em seu menu.
Então no Main você faria um loop chamando seu menu que junto chamaria seu cadastro.

não sei se deu para entender mas esta ai :lol:
Grande abraço.

[quote=PauloHart]Os metodos são melhores utilizados quando precisam ser executados mais de uma vez, se voce fizer esse cadastro e se no seu sistema ele se repetir apenas uma vez, pode até fazer ele no Main.
Mas agora, se por exemplo, voce tem um menuzinho no seu sistema que tem como opção esse seu cadastro e você vai precisar cadastrar mais vezes usando esse mesmo cadastro, seria muito mais viável você fazer um método com o menu e outro método com o cadastro e chamar o cadastro em seu menu.
Então no Main você faria um loop chamando seu menu que junto chamaria seu cadastro.

não sei se deu para entender mas esta ai :lol:
Grande abraço. [/quote]

Eu discordo disso, se no momento você não precisa ainda sim eu recomendaria transformar em metodo pois se mais para frente você precisar disso dai pode te dar uma dor de cabeça.

Eu jamais recomendaria alguém a colocar muita coisa no main. Tente sempre dividir as responsabilidades entre as classes e seus metodos.

[quote=Sem_Nome][quote=PauloHart]Os metodos são melhores utilizados quando precisam ser executados mais de uma vez, se voce fizer esse cadastro e se no seu sistema ele se repetir apenas uma vez, pode até fazer ele no Main.
Mas agora, se por exemplo, voce tem um menuzinho no seu sistema que tem como opção esse seu cadastro e você vai precisar cadastrar mais vezes usando esse mesmo cadastro, seria muito mais viável você fazer um método com o menu e outro método com o cadastro e chamar o cadastro em seu menu.
Então no Main você faria um loop chamando seu menu que junto chamaria seu cadastro.

não sei se deu para entender mas esta ai :lol:
Grande abraço. [/quote]

Eu discordo disso, se no momento você não precisa ainda sim eu recomendaria transformar em metodo pois se mais para frente você precisar disso dai pode te dar uma dor de cabeça.

Eu jamais recomendaria alguém a colocar muita coisa no main. Tente sempre dividir as responsabilidades entre as classes e seus metodos.[/quote]

Pois é, o que eu queria explicar ali é que dividindo isso em metodos e classes, ele não precisaria coloca tudo no main, que no caso nao é uma boa escolha.

só não intendi o que você falou ali em mais para frente, o que ali pode dar dor de cabeça ? me explica melhor :oops:

Amigo, me surgiu uma grande duvida agora, como eu instanciaria a classe AluguelChale com os dados ( nomeLocatario, diaEntrada, mesEntrada, anoEntrada, horaEntrada, minutoEntrada), se eu estou usando um método sobrescrito

essa é a minha grande duvida!!!


@Override
public void registrarEntrada() {

System.out.println(\nQUANTOS CAMAS VOCÊ QUER ALUGAR);
numeroCamasExtras = scan.nextInt();

super.registrarEntrada(); // esse é meu metodo da classe AluguelQuarto 

AluguelChale aluguelChale = new AluguelChale(numeroCamasExtras, null, null, null,null , null, null);



}

[quote=PauloHart][quote=Sem_Nome][quote=PauloHart]Os metodos são melhores utilizados quando precisam ser executados mais de uma vez, se voce fizer esse cadastro e se no seu sistema ele se repetir apenas uma vez, pode até fazer ele no Main.
Mas agora, se por exemplo, voce tem um menuzinho no seu sistema que tem como opção esse seu cadastro e você vai precisar cadastrar mais vezes usando esse mesmo cadastro, seria muito mais viável você fazer um método com o menu e outro método com o cadastro e chamar o cadastro em seu menu.
Então no Main você faria um loop chamando seu menu que junto chamaria seu cadastro.

não sei se deu para entender mas esta ai :lol:
Grande abraço. [/quote]

Eu discordo disso, se no momento você não precisa ainda sim eu recomendaria transformar em metodo pois se mais para frente você precisar disso dai pode te dar uma dor de cabeça.

Eu jamais recomendaria alguém a colocar muita coisa no main. Tente sempre dividir as responsabilidades entre as classes e seus metodos.[/quote]

Pois é, o que eu queria explicar ali é que dividindo isso em metodos e classes, ele não precisaria coloca tudo no main, que no caso nao é uma boa escolha.

só não intendi o que você falou ali em mais para frente, o que ali pode dar dor de cabeça ? me explica melhor :oops: [/quote]

Se por exemplo, você fez um codigo que achou que não ia precisar transformar em um metodo, pode ser que mais para frente você va precisar dele mas você fez de uma forma que ficasse muito acoplada ao local que você criou esse código, transforma-lo em metodo pode ser um pouco trabalhoso, por isso prefiro já deixa-lo como metodo.

[quote=Sem_Nome][quote=PauloHart][quote=Sem_Nome][quote=PauloHart]Os metodos são melhores utilizados quando precisam ser executados mais de uma vez, se voce fizer esse cadastro e se no seu sistema ele se repetir apenas uma vez, pode até fazer ele no Main.
Mas agora, se por exemplo, voce tem um menuzinho no seu sistema que tem como opção esse seu cadastro e você vai precisar cadastrar mais vezes usando esse mesmo cadastro, seria muito mais viável você fazer um método com o menu e outro método com o cadastro e chamar o cadastro em seu menu.
Então no Main você faria um loop chamando seu menu que junto chamaria seu cadastro.

não sei se deu para entender mas esta ai :lol:
Grande abraço. [/quote]

Eu discordo disso, se no momento você não precisa ainda sim eu recomendaria transformar em metodo pois se mais para frente você precisar disso dai pode te dar uma dor de cabeça.

Eu jamais recomendaria alguém a colocar muita coisa no main. Tente sempre dividir as responsabilidades entre as classes e seus metodos.[/quote]

Pois é, o que eu queria explicar ali é que dividindo isso em metodos e classes, ele não precisaria coloca tudo no main, que no caso nao é uma boa escolha.

só não intendi o que você falou ali em mais para frente, o que ali pode dar dor de cabeça ? me explica melhor :oops: [/quote]

Se por exemplo, você fez um codigo que achou que não ia precisar transformar em um metodo, pode ser que mais para frente você va precisar dele mas você fez de uma forma que ficasse muito acoplada ao local que você criou esse código, transforma-lo em metodo pode ser um pouco trabalhoso, por isso prefiro já deixa-lo como metodo.[/quote]~

Amigo, me surgiu uma grande duvida agora, como eu instanciaria a classe AluguelChale com os dados ( nomeLocatario, diaEntrada, mesEntrada, anoEntrada, horaEntrada, minutoEntrada), se eu estou usando um método sobrescrito

essa é a minha grande duvida!!!


@Override
public void registrarEntrada() {

System.out.println(\nQUANTOS CAMAS VOCÊ QUER ALUGAR);
numeroCamasExtras = scan.nextInt();

super.registrarEntrada(); // esse é meu metodo da classe AluguelQuarto 

AluguelChale aluguelChale = new AluguelChale(numeroCamasExtras, null, null, null,null , null, null);



}

Você poderia invocar o metodo registrarEntrada() dentro do construtor.

Por favor faça um exemplo, de como ficaria isso dentro do construtor

agora você me embaralhou minha mente kkk serio.

[quote=PauloJava2012]Por favor faça um exemplo, de como ficaria isso dentro do construtor

agora você me embaralhou minha mente kkk serio.[/quote]


String nomeLocatario;
int diaEntrada;
int mesEntrada;
int anoEntrada;
int horaEntrada;
int minuto;

public AluguelChale() {
registrarEntrada();
}

//no metodo registrarEntrada ficaria assim
public registrarEntrada() {
System.out.println("\nDIGITE O NOME DO LOCATÁARIO");  
      nomeLocatario = scan.nextLine();  
  
      System.out.println("\nDIGITE A DIA ENTRADA");  
      diaEntrada = scan.nextInt();  
  
      System.out.println("\nDIGITE O MÊS DE ENTRADA");  
      mesEntrada = scan.nextInt();  
  
      System.out.println("\nDIGITE O ANO ENTRADA");  
      anoEntrada = scan.nextInt();  
  
      System.out.println("\nDIGITE A HORA DA ENTRADA");  
      horaEntrada = scan.nextInt();  
  
      System.out.println("\nDIGITE O MINUTO DA ENTRADA");  
      minuto = scan.nextInt();  
}

E o seu metodo construtor não receberá nenhum argumento.

toda vez que eu chamar uma instancia de AluguelChale, vai iniciar o metodo registraEndrada() , é isso ?

Sim.

ok vou tentar aqui muito obrigado pela ajuda vlw

Então Sem_Nome, também acho que criar eles em métodos, e depois chama-los fica mais fácil por que até depois se quiser ampliar o sistema, você já esta com os métodos criados e então é só chama-los.
como tinha dito no inicio do tópico, cria um método de menu com algumas opçoes para o usuario fazer. Cria o metodo menu() e dentro dele chama o metodo cadastro(). E então no Main você só precisa chamar o menu().