Siguiendo la lógica de la Programación Orientada a Objetos se diseñaron las clases (Artículo, Tarjeta) y el programa principal (main).
Clase Artículo ubicada en el paquete modelos
package com.alura.compras.modelos;
public class Articulo {
public String nombre;
public double costo;
public Articulo(String nombre, double costo) {
this.nombre = nombre;
this.costo = costo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public double getCosto() {
return costo;
}
public void setCosto(double costo) {
this.costo = costo;
}
@Override
public String toString() {
return this.getNombre() + "-" + this.getCosto();
}
}
Clase Tarjeta ubicada en el paquete modelos
package com.alura.compras.modelos;
public class Tarjeta {
double monto;
public Tarjeta() {
}
public double getMonto() {
return monto;
}
public void setMonto(double monto) {
this.monto = monto;
}
public double consumo(double articulo){
this.monto -= articulo;
return this.monto;
}
}
Clase Main ubicada en el paquete principal
package com.alura.compras.principal;
import com.alura.compras.modelos.Articulo;
import com.alura.compras.modelos.Tarjeta;
import java.util.ArrayList;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Tarjeta tarjeta = new Tarjeta();
ArrayList<Articulo> articulos = new ArrayList<>();
Scanner teclado = new Scanner(System.in);
System.out.println("Ingresa el monto de tu tarjeta: ");
double monto = teclado.nextInt();
tarjeta.setMonto(monto);
int op = 1;
while(op==1){
System.out.println("Escribe la descripción de la compra");
System.out.println("Ingresa el nombre de la compra: ");
String nombre = teclado.next();
System.out.println("¡Valor agregado!");
System.out.println("Ingrese el precio de la compra: ");
double precio = teclado.nextDouble();
System.out.println("¡Valor agregado!");
if(tarjeta.getMonto() < precio){
System.out.println("Saldo insuficiente para agregar este artículo a su carrito :c");
break;
}else{
tarjeta.consumo(precio);
Articulo articulo = new Articulo(nombre,precio);
articulos.add(articulo);
System.out.println("¡Compra realizada!");
System.out.println("Escriba 0 para salir o 1 para continuar: ");
op = teclado.nextInt();
}
}
System.out.println("*******DETALES DE CONSUMO*******");
System.out.println("Compras totales:");
for (Articulo item: articulos ){
System.out.println(item.getNombre()+" - "+item.getCosto());
}
System.out.println("Saldo de la tarjeta: " + tarjeta.getMonto());
}
}