#+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 - 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 + habilitado: bool } Presupuesto "0..*" <--* "1" Producto Proveedor <-- Presupuesto class Proveedor { + id: int + Nombre: string + RazónSocial: string + habilitado: bool } class Venta { + id: int - Detalles: List + MostrarDetalles(): ReadOnlyCollection + AñadirDetalle(Detalle): void + ModificarDetalle(Detalle): void + EliminarDetalle(Detalle): void } 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 Producto -- Lote class Lote { + id: int + Producto: Producto + CantidadDeProductos: long + habilitado: bool } enum EnvaseTipo { Plastico, Enlatado, Cartón, } ProductoNoPercedero --> EnvaseTipo @enduml #+end_src #+RESULTS: [[file:DiagramaSinRepos.jpg]]