Analisem minhas classes por favor!

5 respostas
rebinho

E aí galera.
Bom estou fazendo um programa como se fosse para uma pizzaria.

Tive algumas dúvidas quanto a ArrayList aí a galera me deu um Help e consegui entender... Agora terminei, se possível queria dessem uma olhadinha por cima.

O programa está rodando direitinho e como estamos começando o professor não exige muita qualidade das tarefas, mas quero saber de vocês se está muito longe da realidade... Principalmente quanto a Orientação a Objetos pois estou começando aprender agora.

Lembrando que o programa tem MUITAS brechas... Não tem metade do que deveria, nem verifica algumas coisas importantes... Mas esta cumprindo as especificações que o professor passou!rs

Bom vou postar as Classes:

Classe Main
package diskpizza;

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


public class Main {

    public static List<MotoBoys> listaMotoBoys = new ArrayList<MotoBoys>();
    public static List<Pedido> listaDePedidos = new ArrayList<Pedido>();

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

        JOptionPane.showMessageDialog(null, "Cadastre sua Pizzaria!");
        DiskPizza.cadastrarPizzaria();
        do{
            opcao = Integer.parseInt(JOptionPane.showInputDialog("Pizzaria "+DiskPizza.razaoSocial+".\n\n"
                + "1 - Cadastrar Pedido.\n2 - Cadastrar MotoBoys.\n3 - Relatar MotoBoys.\n"
                + "4 - Relatar DiskPizza.\n5 - Relatar Pedidos.\n0 - Fechar Programa."));

            switch(opcao){
                case 1:
                    Pedido.gerarPedido();
                    break;
                case 2:
                    MotoBoys.cadastrarMotoBoy();
                    break;
                case 3:
                    MotoBoys.relatarMotoBoys();
                    break;
                case 4:
                    DiskPizza.relatarPizzaria();
                    break;
                case 5:
                    Pedido.mostrarPedido();
                    break;
                case 0:
                    JOptionPane.showMessageDialog(null, "Total de Pizzas entregues foi: "+DiskPizza.totalDePizzas
                            +"\nTotal de MotoBoys é: "+DiskPizza.qtdMotoBoys+"\n");
                    JOptionPane.showMessageDialog(null, "Programa Encerrado!");

                default:
                    JOptionPane.showMessageDialog(null, "Opção Inválida!");
                    continue;
            }
        }while(opcao != 0);

    }
}
Classe DiskPizza
package diskpizza;

import javax.swing.JOptionPane;

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

    public static void cadastrarPizzaria(){
        razaoSocial = JOptionPane.showInputDialog("Nome da Pizzaria: ");
        CNPJ = JOptionPane.showInputDialog("CNPJ da Pizzaria: ");
    }

    public static void relatarPizzaria(){
        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 {
    String nome;
    String rg;
    int rfid;

    public static void cadastrarMotoBoy(){

        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 = Integer.parseInt(JOptionPane.showInputDialog("Digite o nº do RFID do Motoboy: "));

            DiskPizza.qtdMotoBoys++;
            Main.listaMotoBoys.add(motoboy);
        }
        else
            JOptionPane.showMessageDialog(null, "Já existe 3 MotoBoys Cadastrados.");
    }

    public  static void relatarMotoBoys(){
        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 {
    String rgMotoboy;
    int codCliente;
    int codPizza;
    
    public static void gerarPedido(){
        if(DiskPizza.qtdMotoBoys < 1){
            JOptionPane.showMessageDialog(null, "Não tem MotoBoy cadastrado para fazer a entrega!");
            return;
        }
        
        Pedido pedido = new Pedido();

        if((Main.listaDePedidos.size()) < 5)
        {
            pedido.codCliente = 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: ");

            Main.listaDePedidos.add(pedido);
            DiskPizza.totalDePizzas++;
        }
        else
            JOptionPane.showMessageDialog(null, "Só pode ser feito até 5 pedidos.");
    }

    public static void mostrarPedido(){
        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).codCliente);
            JOptionPane.showMessageDialog(null, "RG do MotoBoy: "+Main.listaDePedidos.get(i).codCliente);
        }
    }

}

Bom a cagada está aí... Se alguém puder dar uma olhada e dizer o que posso melhorar (espero que não seja tudo!). :(

Valeu Abraço!

5 Respostas

kritiuns

tenta não usar static quando se pode ter um objeto do mesmo …

vou modificar uma de suas classes para que fique no padrão…

package diskpizza;  
      
    import javax.swing.JOptionPane;  
      
    public class DiskPizza {  
        private String CNPJ;  
        private String razaoSocial;  
        private int qtdMotoBoys;  
        private int totalDePizzas;  

        //Metodos Getters and Setters
      
        public void cadastrarPizzaria(){  
            razaoSocial = JOptionPane.showInputDialog("Nome da Pizzaria: ");  
            CNPJ = JOptionPane.showInputDialog("CNPJ da Pizzaria: ");  
        }  
      
        public void relatarPizzaria(){  
            JOptionPane.showMessageDialog(null, "Razão Social: "+razaoSocial+"\nCNPJ: "+CNPJ  
                    +"\nQuantidade de MotoBoys: "+qtdMotoBoys+"\nTotal de Pizzas Entregues: "+totalDePizzas);  
        }  
      
    }

e o acesso para ela ficaria assim …

DiskPizza diskPizza = new DiskPizza();
diskPizza.cadastrarPizzaria();

os métodos getters e setters é só vc da uma lida nesse link

Abraço !

rmendes08

Bom, o seu código está organizado, continue assim. Porém isso é um programa estruturado em Java.

rebinho

kritiuns:
tenta não usar static quando se pode ter um objeto do mesmo …

vou modificar uma de suas classes para que fique no padrão…

package diskpizza;  
      
    import javax.swing.JOptionPane;  
      
    public class DiskPizza {  
        private String CNPJ;  
        private String razaoSocial;  
        private int qtdMotoBoys;  
        private int totalDePizzas;  

        //Metodos Getters and Setters
      
        public void cadastrarPizzaria(){  
            razaoSocial = JOptionPane.showInputDialog("Nome da Pizzaria: ");  
            CNPJ = JOptionPane.showInputDialog("CNPJ da Pizzaria: ");  
        }  
      
        public void relatarPizzaria(){  
            JOptionPane.showMessageDialog(null, "Razão Social: "+razaoSocial+"\nCNPJ: "+CNPJ  
                    +"\nQuantidade de MotoBoys: "+qtdMotoBoys+"\nTotal de Pizzas Entregues: "+totalDePizzas);  
        }  
      
    }

e o acesso para ela ficaria assim …

DiskPizza diskPizza = new DiskPizza();
diskPizza.cadastrarPizzaria();

os métodos getters e setters é só vc da uma lida nesse link

Abraço !


kritiuns, valeu pela dica cara… esclareceu muita coisa pra mim.
Não tinha muita noção sobre getters e setters… Já tinha dado uma lida em um livro aqui mais não me dei conta da importância em usá-los.
E depois ainda assistindo umas vídeos aulas (ainda estou no começo) vi o static… Como aprendi e estou acostumado com programação estruturada achei uma maravilha.HEHEHE :stuck_out_tongue:
Estou dando uma olhada no link (muito interessante por sinal…), vou pesquisar mais e brincar um pouquinho pra ver se fixo melhor na cabeça!rs

Muito obrigado, Abraço!

Editado________
Esqueci de uma coisa…
Você mostrou que eu poderia ter instanciado um objeto da classe DiskPizza, mas se por exemplo esse objeto estivesse na classe Main e eu quisesse através da classe MotoBoy acessar o atributo qtdMotoBoys na classe DiskPizza. Eu teria que criar outro objeto na classe MotoBoy?

rebinho

Olá rmendes08.

Então cara tanto a organização do código quanto a forma estrutura é meio que costume…rsrs Comecei aprendendo assim e até “ontem” só conhecia OO de ouvir falar! :?

Mas suponhamos que meu programa tenha chance de algum dia virar Orientado a Objetos. :wink:
Se eu seguir a dica do kritiuns e começar a usar métodos Getter e Setter ao invés de sair espalhando static pelas classes tem muitas outras coisas que podem ser melhoradas?

Obrigado pela atenção, abraço!

rebinho

Bom galera tive um tempinho tentei dar uma melhorada nas minhas Classes... Dei uma atenção na utilização de métodos Getters e Setters, e a partir daí dar uma melhorada no aspecto geral das Classes.

Quero pedir novamente a ajuda com a análise das Classes, como tem o primeiro post com as Classes e esse agora com as mesmas alteradas queria saber se estou caminhando no caminho certo ou se continuo a fazer merda.

Obs.: Os comentários são apenas pra me auxiliar na leitura do código como já está resolvi deixar...

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
Se alguém puder opinar fico grato!
Criado 20 de maio de 2011
Ultima resposta 25 de mai. de 2011
Respostas 5
Participantes 3