Clase Compra package com.cursoalura.desafiocompras.modelos;
public class Compra implements Comparable { private String descripcion; private double valor;
public Compra(String descripcion, double valor){
this.descripcion = descripcion;
this.valor = valor;
}
//no tenemos setters porque colocamos el valor cuando comienza
public String getDescripcion() {
return descripcion;
}
public double getValor() {
return valor;
}
@Override
public String toString() {
return "Compra: valor=" + valor +
",descripcion='" + descripcion;
}
@Override
public int compareTo(Compra otraCompra) {
return Double.valueOf (this.valor).compareTo(Double.valueOf(otraCompra.getValor()));
}
}
Clase TarjetaDeCredito
package com.cursoalura.desafiocompras.modelos;
import java.util.ArrayList; import java.util.List;
public class TarjetaDeCredito { private double limite; private double saldo; private List listaDeCompras;
public TarjetaDeCredito(double limite){
this.saldo = limite;
this.limite = limite;
this.listaDeCompras = new ArrayList<>();
}
public boolean lanzarCompra (Compra compra){
if (this.saldo >= compra.getValor()){
this.saldo -= compra.getValor();
this.listaDeCompras.add (compra);
return true;
}
return false;
}
// no dejamos que nadie toque el limite asi que no usamos setters
public double getLimite() {
return limite;
}
public double getSaldo() {
return saldo;
}
public List<Compra> getListaDeCompras() {
return listaDeCompras;
}
}
Clase Principal
package com.cursoalura.desafiocompras.principal;
import com.cursoalura.desafiocompras.modelos.Compra; import com.cursoalura.desafiocompras.modelos.TarjetaDeCredito;
import java.util.Collections; import java.util.Scanner;
public class Principal { public static void main(String[] args) { Scanner lectura = new Scanner(System.in); System.out.println("Escriba el límite de la tarjeta: "); double limite = lectura.nextDouble(); TarjetaDeCredito tarjeta = new TarjetaDeCredito(limite);
int salir = 1;
while(salir != 0) {
System.out.println("Escriba la descripción de la compra:");
String descripcion = lectura.next();
System.out.println("Escriba el valor de la compra:");
double valor = Double.valueOf(lectura.next());
Compra compra = new Compra(descripcion, valor);
boolean compraRealizada = tarjeta.lanzarCompra(compra);
if (compraRealizada) {
System.out.println("Compra realizada!");
System.out.println("Escriba 0 para salir o 1 para continuar");
salir = lectura.nextInt();
} else {
System.out.println("Saldo insuficiente!");
salir = 0;
}
}
System.out.println("***********************");
System.out.println("COMPRAS REALIZADAS:\n");
Collections.sort(tarjeta.getListaDeCompras());
for (Compra compra : tarjeta.getListaDeCompras()) {
System.out.println(compra.getDescripcion() + " - " +compra.getValor());
}
System.out.println("\n***********************");
System.out.println("\nSaldo de la tarjeta: " +tarjeta.getSaldo());
}
}