#+title: Diagrama De Clases #+LATEX_HEADER: \usepackage{svg} * Diagrama de clases con Repositorios #+begin_src plantuml :file DiagramaConRepos.jpg @startuml skinparam groupInheritance 2 class RepositorioLotes { + Añadir(detalle): bool + Modificar(detalle): bool + Eliminar(detalle): bool } RepositorioLotes "1" *-- "0..*" Lote class RepositorioDetalles { + Añadir(detalle): bool + Modificar(detalle): bool + Eliminar(detalle): bool } RepositorioDetalles "1" *-- "0..*" Detalle class RepositorioFacturas { + Añadir(Factura): bool + Modificar(Factura): bool + Eliminar(Factura): bool } RepositorioFacturas "1" *-- "0..*" Factura class RepositorioVentas { + Añadir(Venta): bool + Modificar(Venta): bool + Eliminar(Venta): bool } RepositorioVentas "1" *-- "0..*" Venta class RepositorioClientes { + Añadir(Cliente): bool + Modificar(Cliente): bool + Eliminar(Cliente): bool } RepositorioClientes "1" *-- "0..*" Cliente class RepositorioProveedores { + Añadir(Proveedor): bool + Modificar(Proveedor): bool + Eliminar(Proveedor): bool } class RepositorioPresupuestos { + Añadir(Presupuesto): bool + Modificar(Presupuesto): bool + Eliminar(Presupuesto): bool } class RepositorioProductos { + Añadir(T): bool + Modificar(T): bool + Eliminar(T): bool } RepositorioProductos ..|> Repositorio: Implementa RepositorioLotes ..|> Repositorio: Implementa RepositorioPresupuestos ..|> Repositorio: Implementa RepositorioFacturas ..|> Repositorio: Implementa RepositorioClientes ..|> Repositorio: Implementa RepositorioVentas ..|> Repositorio: Implementa RepositorioDetalles ..|> Repositorio: Implementa RepositorioProveedores ..|> Repositorio: Implementa interface Repositorio { + Añadir(T): bool + Modificar(T): bool + Eliminar(T): bool } RepositorioProductos "1" *--> "0..*" Producto enum EnvaseTipo { Plastico, Enlatado, Cartón, } ProductoNoPercedero --> EnvaseTipo class ProductoNoPercedero { + TipoDeEnvase: EnvaseTipo } class ProductoPercedero { + MesesHastaConsumoPreferente: int + MesesHastaVencimiento: int } Producto <|-- ProductoNoPercedero Producto <|-- ProductoPercedero class Producto { + Id: int + Nombre: string + Precio: double - PresupuestosStock: List? - Lotes: List? + Habilitado: bool + MostrarPresupuestos(): ReadOnlyCollection + AñadirPresupuesto(Presupuesto): bool + EliminarPresupuesto(Presupuesto): bool + MostrarLotesDeProductos(): ReadOnlyCollection + AñadirLotesStock(): bool + EliminarLotesStock(): bool + MostrarStockRemanente(): long } class Presupuesto { + Id: int + Proveedor: Proveedor + Monto: int + CantIdad: int } RepositorioPresupuestos "1" *-- "0..*" Presupuesto RepositorioProveedores "1" *-- "0..*" Proveedor Presupuesto "0..*" <--* "1" Producto Proveedor <-- Presupuesto class Proveedor { + Id: int + Nombre: string + RazónSocial: string } class Venta { + Id: int - Detalles: List + MostrarDetalles(): ReadOnlyCollection + AñadirDetalle(Detalle): voId + ModificarDetalle(Detalle): voId + EliminarDetalle(Detalle): voId } Lote -- Producto class Lote { + Id: int + Producto: Producto + CantIdadDeProductos: long + FechaVencimiento: DateTime } class Detalle { + Id: int + CantIdad: int + PrecioUnitario: double + Subtotal: double + Producto: T } class Cliente { + Cuit: string + Nombre: string + ApellIdo: string + Direccion: string + Correo: string } class Factura { + Total: double + Fecha: DateTime + Cliente: Cliente + Venta: Venta } Cliente <-- Factura Factura --> Venta Venta "1" *-- "1..*" Detalle Detalle --> Producto @enduml #+end_src #+RESULTS: [[file:DiagramaConRepos.jpg]] * Diagrama de clases sin Repositorios #+begin_src plantuml :file DiagramaSinRepos.jpg @startuml skinparam groupInheritance 2 class ProductoNoPercedero { + TipoDeEnvase: EnvaseTipo } class ProductoPercedero { + MesesHastaConsumoPreferente: int + MesesHastaVencimiento: int } Producto <|-- ProductoNoPercedero Producto <|-- ProductoPercedero class Producto { + Id: int + Nombre: string + Precio: double - Categorias: List? + Habilitado: bool + MostrarCategoriasDeProductos(): ReadOnlyCollection + AñadirCategoriasStock(): bool + EliminarCategoriasStock(): bool } class Categoria { + Id: int + Descripcion: String } class Presupuesto { + Id: int + Fecha: DateTime + Proveedor: Proveedor + Habilitado: bool - Detalles: List + MostrarDetalles(): ReadOnlyCollection + AñadirDetalle(DetallePresupuesto): bool } class Proveedor { + Id: int + Nombre: string + RazónSocial: string + Habilitado: bool } class DetalleFactura { + IdFactura: int + PrecioUnitario: double + Subtotal: double } class Cliente { + Cuit: string + Nombre: string + ApellIdo: string + Direccion: string + Correo: string } class Detalle { + Id: int + Producto: T + Cantidad: int } class Factura { + Total: double + Fecha: DateTime + Cliente: Cliente - detalles: List + MostrarDetalles(): ReadOnlyCollection + AñadirDetalle(DetalleFactura): void + ModificarDetalle(DetalleFactura): void + EliminarDetalle(DetalleFactura): void } class DetallePedido { + IdPedido: int } class PedidoDePresupuesto { + Id: int + Fecha: DateTime - detallesPedidos: List + Proveedor: Proveedor + MostrarDetalles(): ReadOnlyCollection + AñadirDetalle(DetallePedido): void + EliminarDetalle(DetallePedido): void } class Lote { + Id: int + Fecha: DateTime + Producto: Producto + CantidadDeProductos: long + Habilitado: bool } enum EnvaseTipo { Plastico, Enlatado, Cartón, } class DetallePresupuesto { + IdPresupuesto: int + CostoUnitario: double + Aceptado: bool } class OrdenDeCompra { + Id: int - Productos: List + Proveedor: Proveedor + MostrarDetalles(): ReadOnlyCollection + AñadirDetalle(DetalleOrdenDeCompra): bool + ModificarDetalle(DetalleOrdenDeCompra): bool + EliminarDetalle(DetalleOrdenDeCompra): bool } class DetalleOrdenDeCompra { + IdOrdenDeCompra: int } class Remito { + Id: int - LotesDeProductosEntregados: List + Proveedor: Proveedor + MostrarLotes(): ReadOnlyCollection + AñadirLote(Lote): bool } Detalle <|-- DetalleOrdenDeCompra Detalle <|-- DetallePedido Detalle <|-- DetalleFactura Detalle <|-- DetallePresupuesto Presupuesto "1" *--> "1..*" DetallePresupuesto PedidoDePresupuesto "1" --> "1" Proveedor PedidoDePresupuesto "1" *--> "1..*" DetallePedido PedidoDePresupuesto "1" --> "1" Presupuesto OrdenDeCompra "1" --> "1" Proveedor OrdenDeCompra "1" *--> "1..*" DetalleOrdenDeCompra Remito "1" --> "1" Proveedor Remito "1" *--> "1..*" Lote Producto "1" <-- "1..*" Lote ProductoNoPercedero "1" --> "1" EnvaseTipo Cliente "1" <-- "1" Factura Factura "1 ." *--> "1..*" DetalleFactura DetalleFactura "1 ." --> "1" Producto Proveedor "1" <-- "1 ." Presupuesto Categoria "0..*" <--o "1 ." Producto @enduml #+end_src #+RESULTS: [[file:DiagramaSinRepos.jpg]] #+begin_comment Presupuesto "1" --> "1..*" Lote #+end_comment