Lista 4

Recomendações Importantes

    • A lista deve ser entregue até às 23:59:59 do dia 10/08.
    • Deixe seus programas entendíveis. Imprima mensagens para auxiliar o usuário a utilizar o seu programa.
    • Seja criativo. As mensagens do seu programa não necessitam estar iguais aos exemplos, a menos que seja especificado.
    • A lista é individual, portanto não compartilhe seus códigos com outros alunos ou os coloque em locais públicos (Pastebin, Github).
    • Não copie. Se for detectado cópia da internet ou de um colega, as LISTAS envolvidas serão completamente zeradas.
    • Alguns exemplos aqui definidos podem apresentar comentários. Note que são apenas ilustrativos.
    • A correção da Questão Desafio é booleana. Ou seja: você receberá o ponto extra do desafio caso a resposta esteja 100% correta. Qualquer erro, mesmo que seja em apenas um caso, invalidará a questão.
  • Nota importante: Aconselhamos a fazer as questões desta lista em específico na ordem em que as questões são apresentadas

Questão 1 - "We were on a break!"

Ross, um paleontólogo, está estudando a evolução e as caracteristicas dos dinossauros. Para isso, ele pediu para você, querido programador, para fazer um programa segundo os requisitos abaixo:

    • Todos os dinossauros devem possuir um método "rugido", que devolve uma string caracterizando o som produzido pela espécie.
    • Todos eles também possuem um nome científico, uma cor, um bioma e um comprimento em centímetros.
    • Todos também possuem um método "velocidade", que retorna um double indicando a velocidade máxima de locomoção daquele dinossauro em metros por segundo.
    • Todos possuem um método chamado "idade máxima", que segue a fórmula: tipoBioma*(tamanho/10)
    • Além disso, cada dinossauro deve possuir um tipo, que tem informações especificas:
      • Voador - possui a largura da asa e o tempo médio de voo
      • Terrestre - possui a quantidade de patas
      • Aquático - possui a quantidade de nadadeiras
    • Os biomas, e suas influências na idade, podem ser:
      • Oceano - 5
      • Lago - 4
      • Rio - 4
      • Poça - 1
      • Montanha - 5
      • Campo - 3
      • Caverna - 4
      • Praia - 2
      • Floresta - 2
      • Deserto - 3

Crie uma classe "Main" para testar seu programa. Nela já deve conter pelo menos 8 dinossauros cujas informações podem ser consultadas. Deve haver pelo menos um dinossauro de cada tipo dentre esses 8 e ao menos 2 dinossauros do mesmo bioma. Além disso, o usuário deve poder cadastrar um novo dinossauro.

Questão 2 - "Shut up, the camera adds ten pounds."

Monica, com inveja do programa que o irmão conseguiu, pediu ajuda a suas amigas e descobriu que foi você quem fez o programa. Por isso, ela também decidiu contratar você, exímio programador, para criar uma aplicação para ajudá-la com seus ingredientes de cozinha.

Para aumentar ainda mais a organização do seu armário, Mônica quer um programa que consiga cadastrar e buscar seus ingredientes, que estão dispostos em prateleira e rótulos exatos e únicos (no seu programa não deverá existir, ou ser possível cadastrar, dois ingredientes com o mesmo rótulo. Ou seja, se o usuário tentar fazer isso, uma mensagem de erro deve ser exibida e a operação de cadastro cancelada.)

  • Todo ingrediente possui um nome, um preço, um rótulo e uma quantidade.
  • Alguns ingredientes podem ser frutas, para essas, deve ser guardado se elas são livres ou não de agrotóxicos.
  • Alguns ingredientes podem ser verduras, para essas, deve ser guardado se elas são livres ou não de agrotóxicos.
  • Alguns ingredientes podem ser industrializados, esses devem possuir uma data de validade.
  • Alguns ingredientes industrializados podem ser biscoitos, esses devem possuir um sabor.
  • Existem ingredientes que não são nem frutas, nem verduras, nem industrializados e nem biscoitos. Mônica não está interessada em informações adicionais sobre esses ingedientes, apenas as básicas são suficientes.

Crie uma classe "Main" para testar seu programa que inicialize com pelo menos 5 ingredientes. Nela deve ser possível cadastrar um novo ingrediente, modificar a quantidade de um ingrediente já cadastrado, remover um ingrediente do catálogo e buscar informações sobre um ingrediente através do nome, preço, rótulo e/ou quantidade.

Questão 3 - "How you doin'?"

Joey e Chandler precisam de uma maneira de organizar sua coleção de jogos e para isso chamaram você, o famoso programador de listas de IP, para criar um programa que armazenasse os seus jogos. Eles possuem diversos tipos de jogos, de plataformas diferentes e mídias diferentes, por isso eles precisam que você crie um programa que ajude-os a procurar por sua coleção os jogos que eles possuem para que eles decidam o que jogar. Eles listaram algumas propriedades para lhe ajudar a fazer o programa.

Características:

  • Todos os jogos possuem um preço, um nome e um gênero.
  • Os jogos podem ser do tipo PC, Console e Portátil.
  • Jogos de PC são da Plataforma PC.
  • Os jogos de Console podem ser das plataformas Super Nintendo, Nintendo 64, Xbox, PS2 e PS3.
  • Os jogos de Portátil podem das plataformas ser de Game Boy, Nintendo DS ou Nintendo 3DS.
  • As Mídias do jogos de PC podem ser CD, DVD ou Digital.
  • Os jogos de Console podem ser Cartucho, DVD ou Digital.
  • Os jogos de Portátil podem ser Cartucho ou Digital.
  • O Super Nintendo, Nintendo 64, Game Boy e Nintendo DS só podem ter como mídia um Cartucho.
  • Os consoles Xbox, PS2 e PS3 não aceitam cartuchos.

Crie um main do seu programa que deve possibilitar à Chandler (Vamos combinar que Joey não vai usar nunca, correto?) que ele:

  1. Adicione jogos em sua coleção.
  2. Mostre toda a coleção.
  3. Mostrar seus jogos através de um filtro que pode ser pelo nome do jogo, pelo tipo de mídia, pela plataforma ou pelo tipo ou uma combinação qualquer desses filtros.
  4. Seu programa deve usar conceitos de herança e, principalmente, classe abstrata porque Joey acha que isso tem um nome legal.

Observações:

  1. Inicialize o programa com pelo menos 5 jogos para testar.
  2. Faça as verificações listadas por Joey e Chandler para evitar inconsistências como um PS2 ter um jogo que seja de Cartucho.

Questão 4 - "I'm Regina Phalange"

Rachel e Phoebe acabaram de comprar um Coffee Shop, o “Central Perk”. Como seus amigos falaram muito bem do seu trabalho como programador, elas pediram que você fizesse um programa pra ajudar no gerenciamento do estabelecimento, em troca de café grátis pelo resto de sua vida. Para ajudar você nessa tarefa, elas passaram a lista de elementos que precisam ser gerenciados pelo programa.

Rachel falou o que você precisa saber sobre as bebidas:

  • Chás possuem vários tipos (Verde,Camomila, Earl Grey, etc)
  • Cafés possuem vários tipos (Expresso, Cappuccino, Mocca, etc) e podem ser descafeinados ou não.
  • Água pode ser ou não gaseificada.
  • Refrigerantes e Sucos possuem vários sabores.
  • Todas as bebidas possuem um volume(mL).

Phoebe ficou a cargo de falar sobre as comidas, mas como ela estava mais preocupada em cantar sobre algum gato fedorento, você conseguiu entender poucas coisas

  • Bolos possuem vários sabores, sendo cada um vendido em fatias.
  • Cookies possuem vários sabores, e podem ser “especial” ou não (Ela falou algo sobre o seu cookie de aveia com passas ser o melhor do mundo)
  • Salgados tem um nome (Pão italiano, Folhado, Coxinha, etc), e possuem uma lista de ingredientes(Galinha, Presunto, Carne, etc)
  • As vendas sempre são feitas por unidade.

Todos os produtos devem possuir um controle de quantidade em estoque, bem como o preço do mesmo. Devem existir dois repositórios, um para bebidas, e outro para comidas.

O sistema deve possibilitar três atividades principais, venda, compra e balanço.

  • Na compra, devem ser pedidas todas as informações sobre o produto a ser adicionado em estoque. Ajude Rachel e Phoebe a não levarem prejuízo ao adicionar os produtos, o preço de venda de um produto sempre deve gerar lucro.
  • Na venda, o sistema deve listar os produtos disponíveis, permitindo que seja escolhido qual produto será comprado. Durante esta transação, o usuário deve dizer ao caixa a quantidade que vai querer de cada produto, e ao final da compra, receberá o valor total de sua conta.
  • O balanço consiste apenas em dizer o quanto foi gasto e o quanto foi arrecadado até o momento.

Lembre de fazer uma interface agradável para as meninas usarem o seu programa sem complicações.

Questão Desafio - "WENUS (Weekly Estimated Net Usage System)"

Para receber o token de desafio, você deve ter nota maior ou igual a 7.0 nesta lista.