Reto02_Diagramas‐UML - Jul1anT/Retos-OOP_2025 GitHub Wiki

Diagrama 1: Relaciones entre Persona, Empleado y Proveedor

  • Persona: Es una clase general que contiene atributos básicos como id, nombre y dirección.
  • Empleado: Hereda de Persona y representa a los trabajadores de la tienda, quienes pueden realizar ventas y gestionar devoluciones.
  • Proveedor: También hereda de Persona, y sus métodos están orientados a modificar el stock de los productos.

classDiagram
    direction TB
    class Persona {
        +id: int
        +nombre: String
        +direccion: String
    }
    class Empleado {
        +id_empleado: int
        +cargo: String
        +vender(Venta): void
        +realizar_devolucion(Devolucion): void
    }
    class Proveedor {
        +id_proveedor: int
        +telefono: String
        +modificar_stock(Producto, int): void
    }

    Persona <|-- Empleado
    Persona <|-- Proveedor

Diagrama 2: Relaciones entre Producto, Caja, Venta y Devolción.

  • Producto: Contiene información como id_producto, nombre, precio, descripción y stock. Además, permite actualizar su cantidad mediante el método actualizar_stock.
  • Caja: Representa el registro de transacciones realizadas en el sistema, tanto por ventas como por devoluciones, con atributos como id_caja, monto y fecha.
  • Venta: Incluye productos y afecta directamente la caja, con atributos como id_venta, fecha, cantidad y total. Puede calcular su total usando el método calcular_total.
  • Devolución: Relacionada con una venta, puede revertirla y ajustar el stock de los productos mediante revertir_venta.
classDiagram
    direction TB
    class Producto {
        +id_producto: int
        +nombre: String
        +precio: float
        +descripcion: String
        +stock: int
        +actualizar_stock(cantidad: int): void
    }
    class Caja {
        +id_caja: int
        +monto: float
        +fecha: Date
        +registrar_transaccion(tipo: String, monto: float): void
    }
    class Venta {
        +id_venta: int
        +fecha: Date
        +productos: List~Producto~
        +cantidad: int
        +total: float
        +calcular_total(): float
    }
    class Devolucion {
        +id_devolucion: int
        +motivo: String
        +fecha_devolucion: Date
        +revertir_venta(Venta): void
    }

    Venta "*" --> "*" Producto : incluye
    Venta "1" --> "1" Caja : genera
    Devolucion "1" --> "1" Caja : afecta
    Devolucion "1" --> "*" Producto : ajusta_stock
    Venta <|-- Devolucion