Bom dia,
Fazendo apenas oque o exercício pediu, omitindo os testes, os códigos ficaram assim:
Classe Produto:
public class Produto {
private String nome;
private int codigo;
private double valor;
public Produto(String nome, int codigo, double valor){
this.nome = nome;
this.codigo = codigo;
this.valor = valor;
}
public String getNome(){
return this.nome;
}
public int getCodigo(){
return this.codigo;
}
public double getValor(){
return this.valor;
}
@Override
public String toString(){
return this.getNome();
}
@Override
public int hashCode() {
return this.getCodigo();
}
@Override
public boolean equals(Object obj) {
if(this.getCodigo() == obj.hashCode())
return true;
return false;
}
}
Classe ProdutoComTamanho:
public class ProdutoComTamanho extends Produto {
public ProdutoComTamanho(String nome, int codigo, double preco, int tamanho) {
super(nome, codigo, preco);
this.tamanho = tamanho;
}
public int getTamanho(){
return this.tamanho;
}
@Override
public boolean equals(Object obj) {
if(super.getCodigo() == obj.hashCode() && this.tamanho == ((ProdutoComTamanho) obj).tamanho)
return true;
return false;
}
}
Classe CarrinhoDeCompras:
import java.util.HashMap;
public class CarrinhoDeCompras {
private HashMap<Produto, Integer> controle = new HashMap<>();
public void adicionaProduto(Produto produto, int quantidade){
if( this.getControle().containsKey(produto)){
this.getControle().put(produto, this.getControle().get(produto) + quantidade);
} else {
this.getControle().put(produto, quantidade);
}
}
private HashMap<Produto, Integer> getControle(){
return this.controle;
}
public void removeProduto(Produto produto, int quantidade){
if( this.getControle().containsKey(produto) && this.getControle().get(produto) > quantidade){
this.getControle().put(produto, this.getControle().get(produto) - quantidade);
} else if( this.getControle().containsKey(produto) && this.getControle().get(produto) <= quantidade){
this.getControle().remove(produto);
}
}
public double valorTotal(){
double valorTotal = 0;
for(Produto temp : this.getControle().keySet()){
valorTotal += temp.getValor() * this.getControle().get(temp);
};
return valorTotal;
}
}
Classe Principal:
public class Principal {
public static void main(String[] args) {
CarrinhoDeCompras carrinhoCarlos = new CarrinhoDeCompras();
//Produtos -> nome, código, valor
Produto p1 = new Produto("cha", 123, 2.45);
Produto p2 = new Produto("café", 321, 9.85);
Produto p3 = new Produto("biscoito", 465, 1.50);
Produto p4 = new Produto("oleo", 389, 2.00);
Produto p5 = new Produto("macarrao", 134, 2.90);
//ProdutoComTamanho -> nome, código, valor, tamanho
ProdutoComTamanho pt1 = new ProdutoComTamanho("camisa", 675, 20.50, 40);
ProdutoComTamanho pt3 = new ProdutoComTamanho("camisa", 675, 20.50, 40);
ProdutoComTamanho pt2 = new ProdutoComTamanho("calca", 685, 20.50, 40);
ProdutoComTamanho pt4 = new ProdutoComTamanho("calca", 685, 20.50, 42);
//Inclusão dos produtos no carrinho -> Produto/ProdutoComTamanho, quantidade
carrinhoCarlos.adicionaProduto(p1, 1);
carrinhoCarlos.adicionaProduto(p2, 2);
carrinhoCarlos.adicionaProduto(p3, 1);
carrinhoCarlos.adicionaProduto(p4, 4);
carrinhoCarlos.adicionaProduto(p5, 2);
carrinhoCarlos.adicionaProduto(pt1, 2);
carrinhoCarlos.adicionaProduto(pt2, 2);
carrinhoCarlos.adicionaProduto(pt3, 5);
carrinhoCarlos.adicionaProduto(pt4, 2);
System.out.println(carrinhoCarlos.valorTotal());
}
}
Ou baixem o projeto do eclipse:
heranca.zip (6,9 KB)
Gostaria de feedbacks, opiniões, críticas, etc
Sem mais. Obrigado