Rébinho 0 Denunciar post Postado Maio 26, 2011 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
Vergil 15 Denunciar post Postado Maio 26, 2011 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