Estou criando um projeto de vendas, antes ela estava funcionando mas quando a tornei uma classe abstrata e mãe das classe VendaPrazo e VendaVista, ela não reconhece o objeto Produto, e assim ela não consegue calcular o total de preços. Segue os códigos:
public class Produto {
private String descricao;
private double preco;
public Produto(String descricao, double preco) {
this.descricao = descricao;
this.preco = preco;
}
public String getDescricao() {
return descricao;
}
public double getPreco() {
return preco;
}
public String toString() {
return "Descricao: " + descricao + " Preco: " + preco;
}
}
public abstract class Venda {
double total;
private Date data;
private Cliente cliente;
private Produto[] p;
private int numProdutos;
public Venda(Date data, Cliente cliente) {
this.data = data;
this.cliente = cliente;
}
public Venda(Date data) {
this.data = data;
}
public Venda(Date data, Cliente cliente, Produto[] p) {
this.data = data;
this.cliente = cliente;
this.p = p;
}
public Venda(int qtdMaxProdutos) {
this(new Produto[qtdMaxProdutos]);
}
public Venda(Produto[] p) {
this.p = p;
}
public abstract double getTotal();
public void incluirProduto(Produto produto) {
p[numProdutos] = produto;
numProdutos++;
if (numProdutos == p.length) { // se o vetor t� cheio
Produto[] vetorMaior = new Produto[2 * p.length]; // cria um novo vetor com o dobro do tamanho
System.arraycopy(p, 0, vetorMaior, 0, p.length); // copia os elementos do vetor antigo pro
// novo
p = vetorMaior;// atualiza a refer�ncia do vetor antigo para o novo
}
}
public Produto getProduto(int i) {
return this.p[i];
}
public Produto produto(int posicao) {
if (posicao < 0) {
throw new IllegalArgumentException(posicao + " uma posicao invalida");
}
if (posicao >= numProdutos) {
throw new IllegalArgumentException(
posicao + " uma posicao invalida " + numProdutos + " elementos no vetor");
}
return p[posicao];
}
public int numProdutos() {
return numProdutos;
}
public int getNumProdutos() {
return numProdutos++;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public double total() {
double total = 0;
for (int i = 0; i < numProdutos; i++) {
total += p[i].getPreco();
}
return total;
}
public String toString() {
return "Data: " + data + "\nCliente: " + cliente.nome + "\nEndereco: " + cliente.endereco + " " + total;
}
}
public class Aplicacao {
/**
* @param args
*/
public static void main(String[] args) {
Date data = new Date();
Atendente atendente = new Atendente("Mariana", 756148, 1700.0, 50.0);
Cliente cliente = new Cliente("McGyver", "Belivery Hills");
Gerente gerente = new Gerente("Juliana", 951357, 4000.0, 1000.0);
Repositor repositor = new Repositor("Pedro", 852456, 1400.0, 100.0, 17.0);
Produto produto = new Produto("arroz", 30.0);
VendaPrazo vendaPrazo = new VendaPrazo(data, cliente, produto);
VendaVista vendaVista = new VendaVista(data, cliente);
System.out.println("Atendente-> " + atendente);
System.out.println("Cliente-> " + cliente);
System.out.println("Gerente-> " + gerente);
System.out.println("Repositor-> " + repositor);
System.out.println("\nProduto: ");
System.out.println(produto);
System.out.println("\nVenda a prazo: ");
System.out.println(vendaPrazo);
System.out.println("\nVenda a vista: ");
System.out.println(vendaVista);
}
}
import java.util.*;
public class VendaPrazo extends Venda {
private Date data;
private Cliente cliente;
private Produto[] p;
private double total;
public VendaPrazo(Date data, Cliente cliente, Produto[] p) {
super(data, cliente, p);
}
@Override
public double getTotal() {
double juros = 1 + 0.15;
total = this.total() * juros;
return total;
}
public void setTotal(double total) {
this.total = total;
}
@Override
public String toString() {
return super.toString() + ", Total: " + this.total();
}
}