Ir para conteúdo

POWERED BY:

Arquivado

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

Rébinho

Minhas Classes estão dentro do padrão de OO?

Recommended Posts

Bom estou desenvolvendo um programa relacionado a Pizzaria, é bem básico sem interface gráfica nem nada do tipo... Como estou começando com Java e tentando aprender Orientação a Objeto, resolvi postar minhas classes para que vocês darem uma analisada e dizer se esta muito longe da idéia de OO e se possível dizer oque posso melhorar...

 

Obs.: Não precisam perder tempo vendo linha por linha, se possível só de uma olhada de forma geral. E a funcionalidade do programa não me preocupa no momento, mesmo estando muito básico, feio, poderia ter muito mais coisas porém minha dúvida é quanto a OO.

 

Classe Main:

package diskpizza;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

public class Main {
   //ArrayList de MotoBoys
   public static List<MotoBoys> listaMotoBoys = new ArrayList<MotoBoys>();
   //ArrayList de Pedidos
   public static List<Pedido> listaDePedidos = new ArrayList<Pedido>();

   //Instânciando Objeto pizzaria
   public static DiskPizza pizzaria = new DiskPizza();

   public static void main(String[] args){
       int opcao = 0;

       JOptionPane.showMessageDialog(null, "Cadastre sua Pizzaria!");
       //Invocando método para Cadastrar Pizzaria
       pizzaria.setCadastrarPizzaria();

       do{
           opcao = Integer.parseInt(JOptionPane.showInputDialog("Pizzaria "+pizzaria.getMostraRzSocial()
               +".\n\n1 - Cadastrar Pedido.\n2 - Cadastrar MotoBoys.\n3 - Relatar MotoBoys.\n"
               + "4 - Relatar DiskPizza.\n5 - Relatar Pedidos.\n0 - Fechar Programa."));

           switch(opcao){
               case 1:
                   Pedido.setGerarPedido();break;
               case 2:
                   MotoBoys.setCadastrarMotoBoy();break;
               case 3:
                   MotoBoys.getRelatarMotoBoys();break;
               case 4:
                   pizzaria.getRelatarPizzaria();break;
               case 5:
                   Pedido.getMostrarPedido();break;
               case 0:
                   JOptionPane.showMessageDialog(null, "Total de Pizzas entregues foi: "
                           +pizzaria.getMostraTotalPizzas()+"\nTotal de MotoBoys é: "
                           +pizzaria.getMostraQtdeMotoBoy()+"\n");
                   JOptionPane.showMessageDialog(null, "Programa Encerrado!");             
           }
       }while(opcao != 0);

   }
}

Classe DiskPizza:

package diskpizza;
import javax.swing.JOptionPane;

public class DiskPizza {
   private String CNPJ;
   private String razaoSocial;
   private int qtdMotoBoys;
   private int totalDePizzas;

   public void setCadastrarPizzaria(){
       razaoSocial = JOptionPane.showInputDialog("Nome da Pizzaria: ");
       CNPJ = JOptionPane.showInputDialog("CNPJ da Pizzaria: ");
   }
   //Incrementa em 1 o Total de Pizzas
   public void setIncrementaTotalPizza(){
       totalDePizzas += 1;
   }
   //Incrementa em 1 a quantidade de MotoBoy
   public void setIncrementaMotoBoy(){
       qtdMotoBoys += 1;
   }
   //Mostra Razão Social da Pizzaria
   public String getMostraRzSocial(){
       return razaoSocial;
   }
   //Mostra Total de Pizzas
   public int getMostraTotalPizzas(){
       return totalDePizzas;
   }
   //Mostra a quantidade de MotoBoy
   public int getMostraQtdeMotoBoy(){
       return qtdMotoBoys;
   }
   //Mostra os valores dos atributos da pizzaria
   public void getRelatarPizzaria(){
       JOptionPane.showMessageDialog(null, "Razão Social: "+razaoSocial+"\nCNPJ: "+CNPJ
                                +"\nQuantidade de MotoBoys: "+qtdMotoBoys
                                +"\nTotal de Pizzas Entregues: "+totalDePizzas);
   }

}

Classe MotoBoys:

package diskpizza;

import javax.swing.JOptionPane;

public class MotoBoys {
   private String nome;
   private String rg;
   private String rfid;

   //Verifica se RG digitado existe.
   public static boolean isVerificaRG(String RG){
       for(int i = 0; i < Main.listaMotoBoys.size(); i++){
           if(RG.equals(Main.listaMotoBoys.get(i).rg)) //.equals faz comparação de Strings
               return true;
       }
       return false;
   }

   public String getMostraRG(){
       return rg;
   }

   public static void setCadastrarMotoBoy(){

       MotoBoys motoboy = new MotoBoys();

       if(Main.listaMotoBoys.size() < 3){   //Verifica se quantidade de Motoboys cadastrados é menor que 3

           motoboy.nome = JOptionPane.showInputDialog("Digite o nome do Motoboy: ");
           motoboy.rg = JOptionPane.showInputDialog("Digite o RG do Motoboy: ");
           motoboy.rfid = JOptionPane.showInputDialog("Digite o nº do RFID do Motoboy: ");

           //Invoca método que incrementa 1 MotoBoy
           Main.pizzaria.setIncrementaMotoBoy();

           //Adiciona o Objeto Instânciado ao ArrayList de MotoBoys
           Main.listaMotoBoys.add(motoboy);
       }
       else
           JOptionPane.showMessageDialog(null, "Já existe 3 MotoBoys Cadastrados.");
   }

   public static void getRelatarMotoBoys(){
       for(int i = 0; i < Main.listaMotoBoys.size(); i++)
       {
           JOptionPane.showMessageDialog(null, "MotoBoy "+(i+1));
           JOptionPane.showMessageDialog(null,"Nome do MotoBoy: "+Main.listaMotoBoys.get(i).nome);
           JOptionPane.showMessageDialog(null,"RG do MotoBoy: "+Main.listaMotoBoys.get(i).rg);
           JOptionPane.showMessageDialog(null,"RFID do MotoBoy: "+Main.listaMotoBoys.get(i).rfid);
       }
   }
}

Classe Pedido:

package diskpizza;
import javax.swing.JOptionPane;

public class Pedido {
   private String rgMotoboy;
   private int codCliente;
   private int codPizza;

   static Pedido pedido = new Pedido();

   private void setPopulaPedido(){
       pedido.codPizza = Integer.parseInt(JOptionPane.showInputDialog("        MENU\n1 - Mussarela\n"
                   + "2 - Calabresa\n3 - Portuguesa"));
       pedido.codCliente = Integer.parseInt(JOptionPane.showInputDialog("Digite o código do Cliente: "));
       pedido.rgMotoboy = JOptionPane.showInputDialog("Digite o RG do Motoboy: ");
   }

   public static void setGerarPedido(){
       //Verifica se a quantidade de Objetos MotoBoy é nula (menor que 1)
       if(Main.pizzaria.getMostraQtdeMotoBoy() < 1){
           JOptionPane.showMessageDialog(null, "Não tem MotoBoy cadastrado para fazer a entrega!");
           return;
       }
       if((Main.listaDePedidos.size()) < 5){
           //Invoca método que atribui valores aos Atributos do Objeto pedido
           pedido.setPopulaPedido();

           //Verifica se retorno do método isVerificaRG é falso
           if(MotoBoys.isVerificaRG(pedido.rgMotoboy) == false){
               JOptionPane.showMessageDialog(null, "Não existe MotoBoy cadastrado com esse RG!");
               return;
           }
           else
               JOptionPane.showMessageDialog(null, "Pedido cadastrado com sucesso!");

           //Adiciona o Objeto pedido ao ArrayList de Pedidos
           Main.listaDePedidos.add(pedido);
           //Invocando método que incrementa o Total de Pizzas em 1
           Main.pizzaria.setIncrementaTotalPizza();
       }
       else
           JOptionPane.showMessageDialog(null, "Só pode ser feito até 5 pedidos.");
   }//Fim do método setGerarPedido

   public static void getMostrarPedido(){
       for(int i = 0; i < Main.listaDePedidos.size(); i++)
       {
           JOptionPane.showMessageDialog(null, "Pedido "+(i+1)+".");
           JOptionPane.showMessageDialog(null, "Código do Cliente: "+Main.listaDePedidos.get(i).codCliente);
           JOptionPane.showMessageDialog(null, "Código da Pizza: "+Main.listaDePedidos.get(i).codPizza);
           JOptionPane.showMessageDialog(null, "RG do MotoBoy: "+Main.listaDePedidos.get(i).rgMotoboy);
       }
   }//Fim do método getMostrarPedido

}//Fim da Classe Pedido

 

Fico muito grato se alguém puder me ajudar!

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só olhando por alto... Primeiro de tudo, você tem que pegar bem o conceito de Entidades. As Entidades são suas classes de domínio/modelo. Outra coisa, métodos com prefixo get e set devem ser utilizados apenas para acessar um atributo de classe. Sendo set pra escrever e get para ler. Se o método set é de escrita, então ele deve receber um parâmetro que seja do mesmo tipo do atributo a ser escrito. Jamais coloque código de interface com o usuário dentro das classes de domínio. Você também não precisa ter atributos que digam quantos motoboys tem a sua pizzaria. Você faria isso por meio de relacionamento entre classes (composição). Exemplo básico das classes de domínio.

 

public class Pizzaria {

  private String cnpj;
  private String razaoSocial;
  private List<Motoboy> motoboys;
  private List<Cliente> clientes;

  public Pizzaria() { }

  public String getCnpj() {
     return cnpj;
  }

  public void setCnpj(String cnpj) {
     this.cnpj = cnpj;
  }

  public String getRazaoSocial() {
     return razaoSocial;
  }

  public void setRazaoSocial(String rs) {
     this.razaoSocial = rs;
  }

  public List<Motoboy> getMotoboys() {
     return motoboys;
  }

  public void setMotoboys(List<Motoboy> motoboys) {
     this.motoboys = motoboys;
  }

  public List<Cliente> getClientes() {
     return clientes;
  }

  public void setClientes(List<Cliente> c) {
     this.clientes = c;
  }
}

public class Motoboy {

  private String nome;
  private String rg;
  private Pizzaria pizzaria;

  public Motoboy() { }

  // Métodos de acesso para os atributos da classe aqui.
}

public class Cliente {

  private Pizzaria pizzaria;
  private List<Pedido> pedidos;
  // Demais atributos para cliente

  public Cliente() { }

  // Métodos de acesso para os atributos da classe aqui.
}

public class Pedido {

  private Cliente cliente; // Requeredor do pedido
  // Demais atributos para pedido

  ...
}

 

Com essa base fica mais fácil desenvolver. Uma pizzaria tem clientes e motoboys. Um motoboy pertence a uma pizzaria. Um cliente está vinculado a uma pizzaria e faz pedidos. Pedido está relacionado a um cliente (e se você quiser, a um motoboy também).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.