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).