// clase: TarjetaDeCredito.java // package com.tiendaonline.modelos;
public class TarjetaDeCredito { private double saldoDisponible;
public TarjetaDeCredito(double saldoDisponible) {
this.saldoDisponible = saldoDisponible;
}
public double getSaldoDisponible() {
return saldoDisponible;
}
public void restarSaldo(double cantidad) {
this.saldoDisponible -= cantidad;
}
} // clase: Compra.java // package com.tiendaonline.modelos;
public class Compra implements Comparable { private String descripcion; private double valor;
public Compra(String descripcion, double valor) {
this.descripcion = descripcion;
this.valor = valor;
}
public String getDescripcion() {
return descripcion;
}
public double getValor() {
return valor;
}
@Override
public String toString() {
return "Producto: " + descripcion + ", Valor: $" + valor;
}
@Override
public int compareTo(Compra otraCompra) {
return Double.compare(this.valor, otraCompra.valor);
}
} // clase: Principal.java // package com.tiendaonline.principal;
import com.tiendaonline.modelos.Compra; import com.tiendaonline.modelos.TarjetaDeCredito;
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner;
public class Principal { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);
// Paso 1: Solicitar el límite de la tarjeta
System.out.print("Escriba el límite de la tarjeta: ");
double limiteTarjeta = scanner.nextDouble();
TarjetaDeCredito tarjeta = new TarjetaDeCredito(limiteTarjeta);
List<Compra> listaCompras = new ArrayList<>();
String continuar = "C";
// Paso 2: Proceso de compras
while (continuar.equalsIgnoreCase("C")) {
System.out.print("Escriba la descripción del producto: ");
String descripcion = scanner.next();
System.out.print("Escriba el valor del producto: ");
double valor = scanner.nextDouble();
if (valor > tarjeta.getSaldoDisponible()) {
System.out.println("Saldo insuficiente para realizar la compra.");
} else {
Compra compra = new Compra(descripcion, valor);
listaCompras.add(compra);
tarjeta.restarSaldo(valor);
System.out.println("¡Compra realizada!");
}
System.out.print("Escriba S para salir o C para continuar: ");
continuar = scanner.next();
}
// Paso 3: Ordenar y mostrar las compras realizadas
Collections.sort(listaCompras);
System.out.println("\nLISTA DE COMPRAS:");
for (Compra compra : listaCompras) {
System.out.println(compra);
}
// Paso 4: Mostrar el saldo restante
System.out.println("\nSaldo de la tarjeta: $" + tarjeta.getSaldoDisponible());
}
}