Ejercicio 2: Supermercado

Supermercado

Queremos hacer un sistema para hacer compras online de modo que se puedan agregar productos al carrito de compras, y hacer diversas consultas para analizar el estado de la compra.

Debemos contemplar dos tipos de productos distintos:

  • De venta unitaria, a los cuales nos interesa poder configurarles su descripción y el precio unitario. Por ejemplo, un producto podría tener como descripción "Aceite de girasol" y como precio unitario el valor 60.75.

  • De venta por peso, que nos interesa poder configurarles la descripción, el precio por kilo y el peso (en kilogramos) que se está comprando. El precio a abonar por estos productos sería el precio por kilo multiplicado por el peso del producto. Por ejemplo, podríamos querer tener un producto por peso cuya descripción sea "Queso cremoso", el precio por kilo sea 320 y el peso sea 0.3 kilos. Por ende el valor que se debería abonar por ese producto debería ser: 320 * 0.3 => 96.

Requerimientos y cosas a tener en cuenta:

  • Necesitamos poder agregar productos al carrito, considerando que debe ser posible agregar un mismo producto al carrito varias veces, lo cual implica que se desea comprar esa cantidad del producto en cuestión.
  • Queremos poder determinar:
    • si el carrito está vacío, que se cumple cuando no se le agregó ningún producto.
    • cuántos productos hay en el carrito en total (si se agrega 2 veces un mismo producto, debe contabilizarse 2 veces).
    • cuál es el total a abonar por los productos agregados al carrito.
    • cuál es el producto más caro de los que se agregaron al carrito.
  • Además queremos obtener el detalle de la compra, que debería ser una lista con las descripciones de los productos que se agregaron al carrito. La misma no debería tener descripciones repetidas, y se espera que esté en orden alfabético.

Ejemplos de uso:

>>> carrito.agregar(unPoducto)
>>> carrito.estaVacio()
>>> carrito.cantidadDeProductos()
>>> carrito.totalAAbonar()
>>> carrito.productoMasCaro()
>>> carrito.detalleDeCompra()

Tené en cuenta que para que las pruebas funcionen deben respetarse los siguientes nombres de clases y atributos

  • ProductoUnitario, con atributos descripcion y precioUnitario
  • ProductoPorPeso, con atributos descripcion, precioPorKilo y peso
¡Dame una pista!

Recordá que si lo necesitás podés ayudarte con la guía de lenguajes y la documentación oficial de Wollok.

Tenés que iniciar sesión antes de empezar a enviar tus soluciones

¡Ups! Tu solución no se puede ejecutar

  • Revisá que tu programa no tenga recursión o algún bucle infinito
  • Revisá que tengas conexión a internet
  • Esperá un rato e intentalo nuevamente

Estamos procesando tu solución

Si no se muestra automáticamente en unos segundos, presioná F5