Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Proyecto] trabajar con listas y datos

tengo una duda es que el código que hice yo por mi cuenta tiene varias diferencias con el de la clase (consolidando conocimientos Java: trabajar con listas y coleccionas de datos

package com.aluracompras.principal;

import com.aluracompras.modelos.Producto;
import com.aluracompras.modelos.TarjetaDeCompras;

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

public class Principal {
    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        List<Producto> listaDeProductos = new ArrayList<>();

        int seguirComprando = 1;

        System.out.println("cual es tu saldo:");
        TarjetaDeCompras misaldo = new TarjetaDeCompras(teclado.nextDouble());
        System.out.println(misaldo.getSaldo());
        teclado.nextLine();
        while (seguirComprando != 0 ) {
            switch (seguirComprando) {
                case 1:
                    System.out.println("Descripción del producto:");
                    String descripcion = teclado.nextLine();
                    System.out.println("Precio del producto:");
                    double precio = teclado.nextDouble();
                    teclado.nextLine();
                    listaDeProductos.add(new Producto(descripcion, precio));
                    double precioDelUltimoProducto = listaDeProductos.get(listaDeProductos.size()-1).getPrecio();

                    if((misaldo.getSaldo() - precioDelUltimoProducto) <= 0){
                        seguirComprando = 2;
                        System.out.println("No se pudo realizar la compra");
                    }else {
                        misaldo.restarSaldo(listaDeProductos);
                        System.out.println("Compra realizada con exito");
                        System.out.println("¿Desea seguir comprando? (1: sí, 2: no)");
                        seguirComprando = teclado.nextInt();
                        teclado.nextLine();
                    }


                    break;
                case 2:

                    for (Producto item : listaDeProductos) {
                        System.out.println(item.getDescripcion() + " " + item.getPrecio() + "$");
                    }
                    System.out.println("Su saldo actual es: " + misaldo.getSaldo());
                    seguirComprando = 0;
                    break;
                default:
                    break;
            }
        }

    }
}
package com.aluracompras.modelos;

import com.aluracompras.principal.Principal;

import java.util.List;


public class Producto extends Principal {

    private double precio;
    private String descripcion;

    public Producto(String descripcion, double precio) {
        this.descripcion = descripcion;
        this.precio = precio;

    }

    public double getPrecio() {
        return precio;
    }

    public void setPrecio(double precio) {
        this.precio = precio;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

}
package com.aluracompras.modelos;

import com.aluracompras.principal.Principal;

import java.util.List;
import java.util.Scanner;

public class TarjetaDeCompras extends Principal {
    Scanner teclado = new Scanner(System.in);
    private double saldo;


    public TarjetaDeCompras(double saldoInicial) {
        this.saldo = saldoInicial;
    }

    public double getSaldo() {
        return saldo;
    }


    public void restarSaldo(List<Producto> productos) {
            Producto ultimoProducto = productos.get(productos.size() - 1);
            this.saldo -= ultimoProducto.getPrecio();
    }

}

nose que opinan de mi codigo, que puede mejorar

2 respuestas

¡Hola Luis, espero que estés bien!

Veo que estás trabajando en un proyecto de Java donde estás modelando clases para una aplicación de compras. Me alegra ver que estás avanzando en tu aprendizaje. Analizando tu código, veo que has creado las clases Principal, Producto y TarjetaDeCompras. En cuanto a mejoras, aquí tienes algunas sugerencias:

  1. Separación de responsabilidades: Es importante separar las responsabilidades de las clases. Por ejemplo, la clase Producto no debería heredar de Principal, ya que no parece tener una relación de herencia con ella. Además, la clase TarjetaDeCompras tiene un escaneo de entrada que podría ser manejado de manera más eficiente.

  2. Validación de entradas: Asegúrate de validar las entradas del usuario para evitar errores inesperados. Por ejemplo, al leer el saldo, podrías incluir una validación para asegurarte de que se ingrese un número válido.

  3. Documentación: Considera agregar comentarios que expliquen la funcionalidad de tus clases y métodos. Esto facilitará la comprensión del código para ti y para otros programadores que puedan trabajar en el proyecto en el futuro.

En cuanto a la creación de la clase Compra y su relación con TarjetaDeCredito, parece que estás avanzando en la dirección correcta. La separación de responsabilidades entre las clases es fundamental para mantener un código limpio y fácil de mantener.

Si tienes más preguntas específicas sobre cómo implementar alguna de estas sugerencias, no dudes en preguntar. ¡Sigue adelante con tu proyecto y no dudes en compartir tus avances!

Espero haber ayudado y buenos estudios!

hola, muchas gracias por tu respuesta el escaneo de tarjeta no hace nada por lo que ya lo quite el resto si me faltaimplementarlo