ESTRUCTURA DE DATOS DEL SISTEMA DE LIBRERIA DIGITAL

馃捇 Organizaci贸n de la Informaci贸n del Punto de Venta (POO y Memoria RAM)

La organizaci贸n de la informaci贸n en el Punto de Venta (PDV) de la Librer铆a Digital se basa en un enfoque de Programaci贸n Orientada a Objetos (POO). Los datos se estructuran en clases principales, las cuales definen las propiedades (atributos) y comportamientos (m茅todos) de las entidades del PDV. La informaci贸n se almacena y gestiona en memoria RAM durante la ejecuci贸n, utilizando colecciones din谩micas de Java.


1. Clases Principales y sus Atributos

A continuaci贸n, se describen los esquemas de las clases principales que componen el Punto de Venta:

1.1. Libro

Representa un ejemplar de libro individual en el inventario del PDV.

  • id: String - Identificador 煤nico del libro (ej. "LIB001").

  • titulo: String - T铆tulo del libro.

  • autor: String - Autor del libro.

  • precio: double - Precio de venta del libro en el PDV.

  • cantidad: int - Cantidad de unidades de este libro disponibles en stock.

1.2. Usuario

Representa a un cliente del Punto de Venta que puede comprar o alquilar libros.

  • nombreUsuario: String - Nombre de usuario 煤nico para el acceso.

  • contrasena: String - Contrase帽a para la autenticaci贸n.

1.3. Admin

Representa al personal con privilegios de administrador para gestionar el PDV.

  • nombreAdmin: String - Nombre de usuario 煤nico para el acceso administrativo.

  • contrasena: String - Contrase帽a para la autenticaci贸n administrativa.

1.4. Venta

Registra una transacci贸n de compra procesada por el Punto de Venta.

  • idLibro: String - ID del libro involucrado en la venta.

  • tituloLibro: String - T铆tulo del libro al momento de la venta.

  • autorLibro: String - Autor del libro al momento de la venta.

  • cantidadVendida: int - Cantidad de unidades del libro vendidas.

  • precioUnitario: double - Precio unitario del libro al momento de la venta.

  • totalVenta: double - Monto total de esta venta espec铆fica (cantidadVendida * precioUnitario).

  • fechaVenta: LocalDateTime - Fecha y hora exacta en que se realiz贸 la venta.

1.5. Renta

Registra una transacci贸n de alquiler (renta) de un libro.

  • idLibro: String - ID del libro alquilado.

  • tituloLibro: String - T铆tulo del libro al momento del alquiler.

  • autorLibro: String - Autor del libro al momento del alquiler.

  • nombreUsuario: String - Nombre del usuario que realiz贸 la renta.

  • fechaRenta: LocalDateTime - Fecha y hora en que se inici贸 la renta.

  • fechaDevolucionEstimada: LocalDateTime - Fecha y hora en que se espera la devoluci贸n del libro.

  • fechaDevolucionReal: LocalDateTime - Fecha y hora real de devoluci贸n (puede ser null si la renta a煤n est谩 activa).

  • estadoRenta: String - Estado actual de la renta (ej., "ACTIVA", "DEVUELTA").

  • precioRenta: double - Costo del alquiler del libro (calculado como la mitad del precio de venta).


2. Organizaci贸n de la Informaci贸n en Memoria (PuntoVentaDigital e Inventario)

La gesti贸n y el almacenamiento de las instancias de estas clases se centralizan en la clase PuntoVentaDigital y su colaboradora Inventario, utilizando principalmente la estructura de datos ArrayList.

Clase Inventario:

Contiene un ArrayList de objetos Libro llamado libros.

private List<Libro> libros;

  • Este ArrayList es el repositorio principal para todas las instancias de Libro disponibles en el PDV. Se encarga de las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) relacionadas con los libros.

Clase PuntoVentaDigital:

Contiene los ArrayList que gestionan las colecciones de usuarios, administradores, ventas y rentas.

private static List<Usuario> usuarios; private static List<Admin> administradores; private static List<Venta> historialVentas; private static List<Renta> historialRentas;

Esquema de la Organizaci贸n en Memoria:

Cuando la aplicaci贸n del Punto de Venta se ejecuta, se inicializan estas listas est谩ticas. Cada vez que se agrega un nuevo libro, usuario, venta o renta, se crea una nueva instancia de la clase correspondiente y se a帽ade a su ArrayList respectivo.

  • libros (en Inventario): [Libro_1 (id, titulo, autor, precio, cantidad)], [Libro_2, ...]

  • usuarios (en PuntoVentaDigital): [Usuario_1 (nombreUsuario, contrasena)], [Usuario_2, ...]

  • administradores (en PuntoVentaDigital): [Admin_1 (nombreAdmin, contrasena)], [Admin_2, ...]

  • historialVentas (en PuntoVentaDigital): [Venta_1 (idLibro, ..., totalVenta, fechaVenta)], [Venta_2, ...]

  • historialRentas (en PuntoVentaDigital): [Renta_1 (idLibro, ..., estadoRenta, precioRenta)], [Renta_2, ...]


3. Relaciones entre Clases

Las clases interact煤an entre s铆 para lograr las funcionalidades del Punto de Venta:

  • PuntoVentaDigital es la clase central que orquesta las operaciones. Se comunica con la instancia de Inventario para la gesti贸n de libros y maneja directamente las listas de Usuario, Admin, Venta y Renta.

  • Las clases Venta y Renta hacen referencia a idLibro, tituloLibro y autorLibro para registrar los detalles de los libros involucrados en sus respectivas transacciones, capturando la informaci贸n hist贸rica en el momento de la operaci贸n.

  • La clase Inventario es la encargada exclusiva de modificar el cantidad (stock) de los objetos Libro y de buscar Libro por su ID, reflejando el estado actual del inventario del PDV.

4. Persistencia de Datos (Consideraci贸n Actual)

Es importante destacar que, en la implementaci贸n actual del Punto de Venta, todos estos datos residen 煤nicamente en la memoria RAM mientras la aplicaci贸n est谩 en ejecuci贸n. Esto significa que si la aplicaci贸n se cierra, todos los datos generados o modificados (libros, usuarios adicionales, ventas y rentas) se perder谩n. Para una implementaci贸n futura, se requerir铆a un m贸dulo de persistencia (como una base de datos o archivos) para almacenar la informaci贸n de forma permanente.

Comentarios

Entradas m谩s populares de este blog

ORGANIZACION DE INFORMACION DE PUNTO DE VENTA LIBRERIA

REQUISITOS DEL SISTEMA

REPORTES DE PRUEBA DEL SISTEMA DE LIBRERIA DIGITAL