Coleções e ordenação

olá preciso de uma mão num exercício.Tô perdido , não sei que classes tenho q implementar. Quais terão q ter arrayList… Não estou conseguindo interpretar o enunciado.

Supermercado

Crie uma aplicação que simule o funcionamento do estoque e do caixa de um supermercado.
Utilize as classes que implementam o estoque e faça as modificações necessárias.
Cada produto deve ter um código único, que é um número de três dígitos.
Cada cliente deve ter uma cesta de compras, que apresenta os produtos que o cliente deseja adquirir nesta compra.
A lista de compras permite acrescentar ou remover um produto, pelo seu código. No caso de remoção, o produto deve aparecer como cancelado e seu valor não participa do total da lista. Podem ser removidas uma ou mais ocorrências do produto.
No caso de mais de uma inserção ou remoção de um produto, as ocorrências devem ser unificadas.
Não podem ser colocados mais produtos na cesta do que os que estão disponíveis no estoque.
O programa pode ser criado para processar uma única lista de compras ou várias.
Não é necessário representar o cliente.

VEJAM BEM NÃO QUERO A RESPOSTA MAS SIM UM EMPURRÃO PRA INICIAR!!
vALEU

Produto
-codigo

ItemEstoque
-Produto
-qtdeNoEstoque

Estoque
-Lista de ItemEstoque
+adicionar(Produto)
+remover(Produto)
+obterProdutos()

ItemCompra
-Produto
-qtdeNaCesta
-cancelado

ListaDeCompra
-Lista de ItemCompra
+adicionar(Produto)
+remover(Produto)
+obterProdutos()
+obterTotal

ProgramaSupermercado
-Estoque
+menu
-fazerLista()
-comprarProdutos(ListaDeCompras)

A medida que vc for criando seu codigo e surgir duvidas, vá postando para podermos te ajudar.

flw e bom trabalho

Com relação a ordenação de uma olhada neste post.
http://emdia.wordpress.com/2008/11/01/ordenando-uma-lista-de-objeto/

Opa!!! Já apareceu uma luz no túnel… Mãos a obra.

Surgindo dúvidas atormentarei a vida de vocês
Valeu.