Clases - UESSalexmendoza/Diseno-Software GitHub Wiki

📚 Diseño de Modelo de Clases: Plataforma de Trueque de Libros entre Estudiantes


🎯 Objetivo

Definir el modelo de clases que describe las principales entidades del sistema de trueque de libros entre estudiantes, estableciendo sus atributos, relaciones y estructuras de datos.
Este modelo permitirá el diseño lógico de la base de datos, la implementación del sistema en Django, y la correcta organización del código.


📝 Resumen

El modelo de clases representa las entidades fundamentales del sistema, como usuarios, libros, peticiones de intercambio y catálogos auxiliares. Cada clase abstrae un concepto del dominio del problema y define los atributos necesarios para gestionar las funcionalidades requeridas.

Se establece también la relación entre las clases para asegurar la integridad de los datos y facilitar la navegación entre entidades.


🗂️ Tabla de Clases y Descripción General

Clase Descripción
Usuario Representa a los estudiantes registrados que pueden publicar, buscar y solicitar libros.
Perfil Define el rol o perfil asignado a un usuario (Administrador o Estudiante).
TipoContacto Define los distintos métodos de contacto disponibles (correo, WhatsApp, formulario).
FormaContacto Relaciona un usuario con sus formas de contacto preferidas.
Categoria Clasifica los libros según su temática (Historia, Ciencia, Matemáticas, etc.).
EstadoLibro Indica el estado físico de los libros (Nuevo, Usado, Aceptable).
Libro Representa un libro publicado para intercambio.
EstadoPeticion Define los estados posibles de una solicitud de trueque (Pendiente, Aceptada, Rechazada).
Peticion Representa la solicitud de un usuario para obtener un libro de otro usuario.

📦 Detalle de Clases


Clase: Perfil

Atributo Tipo de Dato Descripción
idPerfil INT (PK) Identificador único del perfil.
nombrePerfil VARCHAR(50) Nombre del perfil (Administrador, Estudiante).
estado BOOLEAN Estado del perfil.

Clase: TipoContacto

Atributo Tipo de Dato Descripción
idTipoContacto INT (PK) Identificador único del tipo de contacto.
tipoContacto VARCHAR(50) Tipo de contacto disponible (Email, WhatsApp, Formulario).
estado BOOLEAN Estado del tipo de contacto.

Clase: FormaContacto

Atributo Tipo de Dato Descripción
idFormaContacto INT (PK) Identificador único de la forma de contacto.
idUsuario Usuario Usuario que utiliza esta forma de contacto.
idTipoContacto TipoContacto Tipo de contacto elegido.

Clase: Categoria

Atributo Tipo de Dato Descripción
idCategoria INT (PK) Identificador único de la categoría.
nombreCategoria VARCHAR(50) Nombre de la categoría del libro.
estado BOOLEAN Estado de la categoría.

Clase: EstadoLibro

Atributo Tipo de Dato Descripción
idEstadoLibro INT (PK) Identificador único del estado del libro.
estado VARCHAR(50) Estado físico del libro.

Clase: Libro

Atributo Tipo de Dato Descripción
idLibro INT (PK) Identificador único del libro.
nombre VARCHAR(100) Título del libro.
descripcion TEXT Descripción del contenido o condición del libro.
autor VARCHAR(100) Autor del libro.
idCategoria Categoria Categoría asignada al libro.
idEstadoLibro EstadoLibro Estado físico del libro.
idUsuario Usuario Usuario que publicó el libro en la aplicación.
estadoRegistro BOOLEAN Estado del registro en la tabla (Activo / Inactivo).

Clase: Usuario

Atributo Tipo de Dato Descripción
idUsuario INT (PK) Identificador único del usuario.
nombreUsuario VARCHAR(50) Nombre de usuario para login.
nombreReal VARCHAR(100) Nombre completo del usuario.
email VARCHAR(100) Correo electrónico único.
password VARCHAR(255) Contraseña cifrada del usuario.
fechaAcceso DATETIME Fecha y hora del último acceso.
aceptacionPolitica BOOLEAN Si aceptó la política de privacidad.
fechaAceptacion DATETIME Fecha de aceptación de políticas.
intentosFallidos INT Número de intentos fallidos de login.
estatus VARCHAR(20) Estado del usuario (Activo, Inactivo).
perfil Perfil Perfil asignado al usuario.
formasContacto List<TipoContacto> Formas de contacto asignadas al usuario.
libros List<Libro> Libros que tiene registrados en el sistema.

Clase: EstadoPeticion

Atributo Tipo de Dato Descripción
idEstadoPeticion INT (PK) Identificador único del estado de una petición.
estado VARCHAR(50) Descripción del estado (Pendiente, Aceptada, Rechazada).

Clase: Peticion

Atributo Tipo de Dato Descripción
idPeticion INT (PK) Identificador único de la petición.
idUsuario Usuario Usuario solicitante.
idLibro Libro Libro solicitado.
fechaPeticion DATETIME Fecha de creación de la solicitud.
idEstadoPeticion EstadoPeticion Estado actual de la petición.
fechaLimiteDevolucion DATETIME Fecha límite acordada para devolución del libro.
mensaje TEXT Comentario adicional de la solicitud.
respuesta TEXT Respuesta del propietario del libro.

⚠️ **GitHub.com Fallback** ⚠️