Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Proyecto] Proyecto Compras - Solución personal

Yo decidí seguir una vía propia para resolver el ejercicio, a continuación dejo mi código:

Clase Articulo

package com.aluracursos.modelos;

public class Articulo implements Comparable<Articulo> {

    private String nombre;
    private double precio;

    public Articulo(String nombre, double precio) {
        this.nombre = nombre;
        this.precio = precio;
    }

    public String getNombre() {
        return nombre;
    }

    public double getPrecio() {
        return precio;
    }

    @Override
    public String toString() {
        return "Nombre producto: " + getNombre() + ", Precio: " + getPrecio();
    }

    @Override
    public int compareTo(Articulo otroArticulo) {
        return Double.valueOf(this.getPrecio()).compareTo(Double.valueOf(otroArticulo.getPrecio()));
    }

}

Clase Tarjeta

package com.aluracursos.modelos;

public class Tarjeta {

    private double saldoTotal;

    public Tarjeta(double saldoTotal) {
        this.saldoTotal = saldoTotal;
    }

    public double getSaldoTotal() {
        return saldoTotal;
    }

    public void setSaldoTotal(double saldoTotal) {
        this.saldoTotal = saldoTotal;
    }

    public double realizarPago(double monto) {
        if (saldoTotal >= monto) {
            saldoTotal = saldoTotal - monto;
            return saldoTotal;

        } else {
            System.out.println("SALDO INSUFICIENTE");
            return saldoTotal;  // Devuelve el saldo actual sin cambios
        }
    }
}

Clase Main

import com.aluracursos.modelos.Articulo;
import com.aluracursos.modelos.Tarjeta;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Tarjeta tarjeta = new Tarjeta(0);
        List<Articulo> listaArticulos = new ArrayList<>();

        int opcion = 0;
        String nombreProducto;
        double precioProducto;

        ingresarSaldoTarjeta(scanner, tarjeta);

        do {
            System.out.println("Escribe el nombre del articulo");
            nombreProducto = scanner.nextLine();
            System.out.println("Escribe el precio del articulo");
            precioProducto = scanner.nextDouble();
            scanner.nextLine();

            if (tarjeta.getSaldoTotal() >= precioProducto && opcion != 2) {

                tarjeta.realizarPago(precioProducto);
                Articulo producto = new Articulo(nombreProducto, precioProducto);
                listaArticulos.add(producto);

                System.out.println("COMPRA REALIZADA EXITOSAMENTE");
                System.out.println("Escribe 1 para agregar otro articulo, 2 para salir");
                opcion = scanner.nextInt();
                scanner.nextLine();
            } else {
                System.out.println("SALDO INSUFICIENTE");
                break;
            }

        } while (opcion != 2);
        mostrarComprasRealizadas(listaArticulos, tarjeta);
        scanner.close();
    }

    static void ingresarSaldoTarjeta(Scanner scanner, Tarjeta tarjeta) {
        System.out.print("Ingrese el limite de saldo de su tarjeta: ");
        double limiteTarjeta = scanner.nextDouble();
        tarjeta.setSaldoTotal(limiteTarjeta);
        scanner.nextLine();
    }

    static void mostrarComprasRealizadas(List<Articulo> listaArticulos, Tarjeta tarjeta) {
        System.out.println("***************************");
        System.out.println("COMPRAS REALIZADAS EFECTIVAMENTE:");
        Collections.sort(listaArticulos);
        
        for (Articulo articulo : listaArticulos) {
            System.out.println(articulo);
        }
        System.out.println("Saldo restante tarjeta: " + tarjeta.getSaldoTotal());
    }
}
1 respuesta

Hola Héctor, espero que estés bien

Considero su código muy bueno, en este momento no veo puntos de mejora. ¡Continúa con sus estudios y éxito en su carrera!

Gracias por compartir tu ejercício práctico con nosotros! Tu contribución es fundamental para el crecimiento de nuestra comunidad en Alura. Sigue comprometido y no dudes en regresar al foro en caso que tengas alguna duda o dificultad.

¡Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!