Amigos,
Tudo bem? Colocarei as classes aqui e depois perguntarei as minhas dúvidas.public abstract class Produto {
private int cod;
private double preco;
private String nome;
private String marca;
public Produto() {
}
public int getCod() {
return cod;
}
public void setCod(int cod) {
this.cod = cod;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
public double getPreco() {
return preco;
}
public void setPreco(double preco) {
this.preco = preco;
}
public void cadastrarProduto() {
}
public static Scanner leitor = new Scanner(System.in);
public void dadosDoProduto() {
System.out.print("Codigo: ");
this.cod = leitor.nextInt();
System.out.print("Nome: ");
this.nome = leitor.next();
System.out.print("Marca: ");
this.marca = leitor.next();
System.out.print("Preco: ");
this.preco = leitor.nextDouble();
}
public void exibirProduto() {
System.out.println("\nCodigo:" + Integer.toString(cod)
+ "\nNome: " + nome + "\nMarca: " + marca
+ "\nPreco: " + Double.toString(preco));
}
public abstract void reajustarPreco();
}
public class Estoque{
private ArrayList<Produto> listaProdutos = new ArrayList<Produto>();
public ArrayList<Produto> getListaProdutos(){
return listaProdutos;
}
// public void reajustarPreco(){
// }
public void cadastrarProduto(Produto p){
listaProdutos.add(p);
}
public ArrayList<Produto> getProdutos(){
return listaProdutos;
}
public void produtos(){
for(int i=0;i<listaProdutos.size();i++){
listaProdutos.get(i).dadosDoProduto();
}
}
public void ListarProdutos(){
for(int i=0;i<listaProdutos.size();i++){
listaProdutos.get(i).exibirProduto();
}
}
}
public class CestaDeCompras extends Estoque {
private ArrayList<Produto> item = new ArrayList<Produto>();
public CestaDeCompras() {
}
public static Scanner leitor = new Scanner(System.in);
public void adicionarProduto(Estoque y) {
System.out.print("Informe o codigo do produto: ");
int codigo = leitor.nextInt();
for (int i = 0; i < y.getListaProdutos().size(); i++) {
Produto p = y.getListaProdutos().get(i);
if (p.getCod() == (codigo)) {
item.add(p);
} else
System.out.println("Produto nao Cadastrado!");
}
}
public void ListarProdutos() {
for (int i = 0; i < item.size(); i++) {
item.get(i).exibirProduto();
}
}
}
public class Televisao extends Produto {
private int polegadas;
private double novoPreco;
private double desconto;
public Televisao(){
super();
}
//Gets e Setters
public int getPolegadas() {
return polegadas;
}
public void setPolegadas(int polegadas) {
this.polegadas = polegadas;
}
//public static Scanner leitor = new Scanner(System.in);
public void dadosDoProduto(){
super.dadosDoProduto();
System.out.println("Polegadas: ");
this.polegadas = leitor.nextInt();
}
public void exibirProduto(){
super.exibirProduto();
System.out.print("Polegadas: "+Integer.toString(polegadas));
}
@Override
public void reajustarPreco() {
//this.getPreco() * (0.1+this.novoPreco/100);
desconto = this.getPreco() * 1/100;
novoPreco = getPreco() - desconto;
System.out.println("O novo preço da televisão será: "+novoPreco);
}
}
public class Menu {
public static Scanner leitor = new Scanner(System.in);
public static void main(String args[]) {
Estoque novo = new Estoque();
int op;
do {
System.out.println("1-Cadastrar Produto");
System.out.println("2-Cesta de Compras");
System.out.println("3-Sair");
System.out.print("Opção: ");
op = leitor.nextInt();
switch (op) {
case 1:
String nomeProduto = null;
System.out.println("Digite o nome do produto que queira cadastrar:");
nomeProduto = leitor.next();
if ("televisao".equals(nomeProduto)) {
Produto tv = new Televisao();
novo.cadastrarProduto(tv);
novo.produtos();
novo.ListarProdutos();
System.out.println("\n");
break;
}
if ("dvd".equals(nomeProduto)) {
Produto dvd = new DvdPlayer();
novo.cadastrarProduto(dvd);
novo.produtos();
novo.ListarProdutos();
System.out.println("\n");
break;
}
if ("Micro System".equals(nomeProduto)) {
Produto som = new MicroSystem();
novo.cadastrarProduto(som);
novo.produtos();
novo.ListarProdutos();
System.out.println("\n");
break;
}
if ("notebook".equals(nomeProduto)) {
Produto notebook = new Notebook();
novo.cadastrarProduto(notebook);
novo.produtos();
novo.ListarProdutos();
System.out.println("\n");
break;
}
if ("video game".equals(nomeProduto)) {
Produto videoGame = new VideoGame();
novo.cadastrarProduto(videoGame);
novo.produtos();
novo.ListarProdutos();
System.out.println("\n");
break;
}
break;
case 2:
CestaDeCompras cesta = new CestaDeCompras();
/*Produto compra1 = new Televisao();
cesta.adicionarProduto(compra1);*/
cesta.adicionarProduto(novo);
cesta.ListarProdutos();
System.out.println("\n");
break;
case 3:
Produto p = new Televisao();
p.reajustarPreco();
break;
case 4:
System.out.println("Fim do Programa");
break;
default:
System.out.println("Opcao Invalida!");
}
} while (op != 4);
}
}
Coloquei a classe de apenas um produto para não alongar mais =/
Tem mais 4, mas a classe ficaria muito parecida, pra não falar igual, a da Televisão, que também é um produto a ser cadastrado.
As classes que eu postei não estão aparecendo erro, do jeito que está, mas dá erro ao compilar.
O programa está cadastrando, está adicionando à cesta e está listando corretamente o PRIMEIRO produto cadastrado. Quando ele faz o Loop e eu peço para cadastrar o segundo produto, da erro porque ele pede o código do produto, eu escolho Notebook e pede polegadas pra cadastro... umas coisas nada a ver.
Outra coisa que eu estou em dúvida: Na classe Produtos() eu fiz um método para reajustarPreco(), e eu não sei instanciar ele no menu...
Me ajudem, por favor! =)
Obrigado.
Att. Gustavo.
Desculpem o tamanho do post.
Se tiver outra forma de faze-lo, menor, no caso, falem que eu refaço.