Prezados, confesso que, quando vi o desafio, não pensei na possibilidade de utilizar uma Lista como atributo da Classe Cartao (na realidade, nem sabia que isso era possível), criando uma Classe Compra atrelada à lista.
Por não ver alternativas, dei uma pesquisada no uso do HashMap, que foi citado no material complementar. Cheguei a uma solução para o problema que considero "satisfatória". O único problema, na implementação que fiz, é que não consegui achar uma forma de ordenar o HashMap que construí, de acordo com o critério de valores.
Tem como ser feito?
OBS: também não criei a possibilidade do limite do Cartão ser construído no início da aplicação, pois queria me concentrar mais no problema em si. Então já criei uma clase com valor fixo no início.