Duvida Basica sobre herança

5 respostas
Heartbreaker
Estou desenvolvendo um aplicativo(cardapio digital) para uma pizzaria e estou com problemas para gerenciar algumas coisas;

Os itens tem alguns atributos em comum como nome, descrição, etc. e alguns especificos, como por exemplo a pizza que tem 4 preços, um para cada tamanho;

Em certos momentos eu vou precisar te-los todos agrupados em uma lista e em outros, dividi-los mais de acordo com seu tipo para mexer em seus atributos.

Tentei fazer uma classe abstrata pai e extender cada tipo mas não manjo muito de herança, não sei o que declarar e instanciar na classe abstrata e o que declarar e instanciar nas filhas, quando criar uma lista da classe pai, quando criar uma lista da classe filha, quando declarar classe pai e instanciar filha, quando declarar filha e instanciar filha, etc, e isso esta me gerando alguns erros.

 alguma outra opção para este problema, como por exemplo haver uma unica classe para todos os itens e diferenciar suas implementações internamente? Pensei em fazer isso mas achei muito gambiarra.  alguma boa prática do que fazer em caso parecido?

Qualquer sugestão é bem vinda. Obrigado.

5 Respostas

yurifw

não acho que herança seria necessario não, qual seria a classe pai (e quais atributos) e a classe filha(e os atributos). explica melhor pq vc acha que usar herança seria o ideal, se for só por causa do tipo da pizza eu acho melhor colocar como atributo, até pq se cada tipo de pizza for uma classe vai ser bem complicado quando a pizzaria decidir adicionar uma pizza nova no cardapio xD

Heartbreaker
Tipo ItemCardapio(comum):

long id;

int tipo; (definido em outro lugar)

String nome;

String desc;

Double preço;

Tipo ItemCardapio_Pizza:

long id;

int tipo;

String nome;

String desc;

Double preço_P;

Double preço_M;

Double preço_G;

Double preço_F;

Havera momentos em que eu vou precisar tratar os dois como um tipo só e momentos em que vou precisar tratar mais especificamente. Pra colocar numa lista, arrumar o adapter (to programando pra android), puxar um tipo especifico do banco, etc.

yurifw

quais seriam as outras classes filhas de ItemCardapio? se só tiver uma não vale a pena usar herança

Heartbreaker

Mas como eu faço quando precisar colocar ambos em uma lista?

yurifw

se so tiver essas duas classes tira a ItemCardapio e usa só a Pizza, se quiser continuar usando herança pra colocar algo tipo bebidas, vc instancia declara uma List de ItemCardapio:

//assim vc consegue ter td numa List só
List<ItemCardapio> itens = new ArrayList<>();
ItemCardapio item =  new ItemCardapio();
Pizza pizza = new Pizza();
itens.add(item);
itens.add(pizza);
//pra recuperar os metodos da Pizza:

for (ItemCardapio i: itens){
   if (i instanceof Pizza){
      System.out.println("este item é uma pizza, é só fazer cast q vc usa ele como Pizza:");
      Pizza p = (Pizza)i;//aqui vc faz o cast e transforma a instancia de ItemCardapio em Pizza
   }
}
Criado 28 de outubro de 2013
Ultima resposta 30 de out. de 2013
Respostas 5
Participantes 2