Projecto do supermercado alguém pode me ajudar?

Considere um supermercado automatizado que controle carrinhos de compras e utilize as classes Produto, CarrinhoCompra, Item, ItemDesconto, Cliente e Automóvel e a interface TransporteCarga.

Implemente os seguintes itens:

A classe Produto que tem os atributos identificadores, descrição, quantidade em estoque e o preço unitário, com os métodos gets e sets.

O construtor padrão e o que recebe quatro valores como parâmetro da classe Produto.

A classe Item com os atributos produto e a quantidade deste produto no carrinho, seu construtor com 2 parâmetros e o método calculaPreco que devolve a multiplicação do preço unitário e da quantidade de itens. Implementa também os gets e sets

A classe ItemDesconto que herda da classe Item, possui um atributo n que corresponde a promoções do tipo LEVE n e PAGUE n_1 e redefine o método calculaPreco para considerar este tipo de desconto.

A interface TransporteCarga possui dois métodos carregar e descarregar. O método carregar recebe como parâmetro um item e o armazena e o método descarregar imprime na tela os produtos que foram descarregados e os remove do armazenamento.

A classe CarrinhoCompra possui os atributos quantidade de itens no carrinho de compras e os itens propriamente ditos, assim como o construtor padrão. Considere que os itens estão armazenados em um array com capacidade para 200 itens no máximo. Implementa o método get para o atributo quantidade de itens, e não existe mais nenhum método get e set nesta classe.

Os métodos adicionar e remover da classe CarrinhoCompras. Estes métodos recebem como parâmetro o produto e a quantidade de itens a serem inseridos/removidos. Estes métodos devem atualizar a quantidade de produtos do estoque, pois a medida que o cliente coloca os produtos no carrinho, eles já não estão mais disponíveis para compra por outro cliente. Se o cliente mandar remover mais unidades do que tem no carrinho, realize a remoção da quantidade disponível no carrinho de compras e aumente esta mesma quantidade no estoque. Um produto não pode ocupar mais de uma posição, assim como um produto com quantidade zerada não pode ocupar uma posição no array privado da classe CarrinhoCompras. O método transfere da classe CarrinhoCompras retira todos os itens deste carrinho de compras e carrega um TransporteCarga recebido como parâmetro.

A classe Cliente implementa a interface TransporteCarga e possui os atributos: nome, cpf, endereço, automóvel, carrinho de compras, os atributos necessários para implementação do TransporteCarga e o construtor que recebe como parâmetro o nome e o cpf, o endereço do cliente e o seu carro (se o cliente não tiver carro, este último parâmetro será nulo). Assuma que a classe automóvel também é do tipo TransporteCarga.

O método abandonar carrinho em que o cliente irá se desfazer do carrinho, este método executa o abandonar da classe CarrinhoCompras. Implemente também o abandonar da classe CarrinhoCompras, para que todos os produtos voltem automaticamente para o estoque.

O método pegar um carrinho que recebe como parâmetro um carrinho que ele usará para realizar as suas compras. Caso ele já tenha um carrinho, o mesmo será abandonado.

O método calcular preço da classe CarrinhoCompras imprime na tela o cupom fiscal e devolve o valor total da compra.

O método comprar que não recebe parâmetro, mostra uma mensagem “Entregando Kz xx,xx para o caixa”, e transfere todos os itens do carrinho de compras para o seu transporte de carga (o seu automóvel ou ele próprio, caso não tenha automóvel). Este método deve chamar o método transfere de CarrinhoCompras.

Qual a dúvida?

Não consigo implementar o método carregar() e descarregar(). Já le várias vezes não consigo achar uma lógica pra implementar os métodos…

Alguém de boa fé pode ajudar a implementar os métodos carregar() e descarregar() da Interface TransporteCarga

De acordo com o enunciado:

  • o método carregar recebe como parâmetro um Item e o armazena.

  • o método descarregar imprime na tela os produtos que foram descarregados e os remove do armazenamento.

Posta o seu código da sua interface e da implementação, pra ver como ficou.
Não esqueça de usar o botão de formatação de código </>.

package supermercado;

public class Automovel implements TransporteCarga {

Item[] itens = new Item[200];
Item item;
Produto produto;

CarrinhoCompra c;

@Override
public void carregar(Item item) {

    c.carrinho.add(item);
}

@Override
public void descarregar() {
    if(c.carrinho.isEmpty())
    {
        System.out.println("Produto: " +produto);
    }
    
    c.carrinho.remove(item);
}
}
package supermercado;

import java.util.ArrayList;

public class CarrinhoCompra {

    //Atributos
    private int qtd_intem_carrinho;
    Item itens;
    ArrayList<Item> carrinho;

    public CarrinhoCompra() {
    }

    public int getQtd_intem_carrinho() {
        return qtd_intem_carrinho;
    }

    public void adicionar(Produto produto, int qtd_intem_carrinho) {
        this.carrinho.add(itens);
    }

    public void remover(Produto produto, int qtd_intem_carrinho) {
        produto.setQtd_estoque(produto.getQtd_estoque() - 1);
        this.carrinho.remove(itens);
    }

}