Diagrama de clases - sjperalta/nexthome GitHub Wiki

Claro, aquí tienes un ejemplo de cómo se podría estructurar un diagrama de clases para el sistema NexHome:

Diagrama de Clases para NexHome

+--------------------+            +---------------------+             +-----------------------+
|      User          | <--------- | Administrator: User | <---------- | ReservationRequest    |
+--------------------+            +---------------------+             +-----------------------+
| - id: int          |            | + createUser()      |             | - id: int             |
| - firstName: String|            | + uploadDocuments() |             | - lotId: int          |
| - lastName: String |            | + changeStatus()    |             | - status: String      |
| - email: String    |            +--------------------+              | - paymentTerm: int    |
| - password: String |                                                | - created_at: date    |
| - national_id: id  |                                                | - expiration_at: date |
+--------------------+                                                | - userId: int         |
| + userInfo()       |                                                +-----------------------+
| + login()          |                                                | + createRequest()     |
| + recoverPassword()|                                                | + approveRequest()    |
+--------------------+                                                | + rejectRequest()     |
                                                                      | + uploadDocument()    |
                                                                      | + documentStatus()    |
                                                                      +-----------------------+
                                                                                ^
                                             -----------------------------------|
                                            |
                                            |
                                  +-----------------------------+             +-------------------------+           +----------------------+
                                  |      Project                | <---------- |         Documents       | <-------- |    DocumentType      |
                                  +---------------------------- +             +-------------------------+           +----------------------+
                                  | - id: int                   |             | - id: int               |           | - NationalId         |    
                                  | - name: String              |             | - documentUrl: string   |           | - RTN                |
                                  | - address: String           |             | + documentType: int     |           | - Plan               |
                                  | - lotCount: int             |             | + addDocument()         |           +----------------------+
                                  | - pricePerSquareMeter: float|             | + uploadDocument()      |
                                  | - interestRate: float       |             +-------------------------+
                                  | - lotSize: float            |
                                  | - documentId: id            |
                                  +-----------------------------+
                                  | + addProject(Project)       |
                                  | + editProject(id)           |
                                  | + deleteProject(id)         |
                                  | + searchProject(name)       |
                                  | + addLots(List<Lot>)        |
                                  | + addLot(Lot)               |
                                  +-----------------------------+
                                            ^
                                            |
                                            |
                                  +----------------------+
                                  |       Lot            |
                                  +----------------------+
                                  | - id: int            |
                                  | - size: float        |
                                  | - status: String     |
                                  | - projectId: int     |
                                  +----------------------+
                                  | + reserve(id)        |
                                  | + release(id)        |
                                  +----------------------+
                                            ^
                                            |
                                            |
                                  +--------------------------+
                                  |  Contract                |
                                  +--------------------------+
                                  | - id: int                |
                                  | - interest rate: int     |
                                  | - start Date: date       |
                                  | - end Date: date         |
                                  | - tota_amount: int       |
                                  | - payment_frecuency: int |
                                  | - payment_schedule: int  |
                                  | - status: string         |
                                  | - lotId: int             |
                                  +--------------------------+
                                  | + generatePaymentSchedule() |
                                  +--------------------------+
                                            ^
                                            |
                                            |
                                  +--------------------------+
                                  |   PaymentSchedule        |
                                  +--------------------------+
                                  | - id: int                |
                                  | - payment type: int      |
                                  | - payment date: date     |
                                  | - payment due date: date |
                                  | - amount: float          |
                                  | - contractId: int        |
                                  +--------------------------+
                                            ^
                                            |
                                            |
                                  +----------------------+
                                  |      Payment         |
                                  +----------------------+
                                  | - id: int            |
                                  | - amount: float      |
                                  | - date: Date         |
                                  | - fees: float        |
                                  | - documentId: string |
                                  | - status: string     |
                                  | - userId: string     |
                                  +----------------------+
                                  | + pay(id)            |
                                  | + approve(id)        |
                                  | + status(id)         |
                                  +----------------------+

Explicación del Diagrama de Clases

Claro, aquí está la traducción al español:

Explicación del Diagrama de Clases Actualizado

  1. Usuario: Representa a los usuarios del sistema. Los atributos incluyen id, nombre, apellido, correo electrónico y contraseña. Los métodos incluyen registrar, iniciar sesión y recuperar la contraseña.
  2. Administrador: Hereda de Usuario y tiene métodos adicionales para crear usuarios, subir documentos de usuarios y cambiar estados.
  3. SolicitudReserva: Representa una solicitud de reserva para un lote. Los atributos incluyen id, idLote, estado, plazo de pago, identificación nacional y idUsuario. Los métodos incluyen crear, aprobar y rechazar solicitudes.
  4. Proyecto: Representa un proyecto que incluye varios lotes. Los atributos incluyen id, nombre, dirección, cantidad de lotes, precio por metro cuadrado, tasa de interés y tamaño del lote. Los métodos incluyen agregar, editar, eliminar, buscar proyectos y agregar lotes.
  5. Lote: Representa un lote específico dentro de un proyecto. Los atributos incluyen id, tamaño, estado y idProyecto. Los métodos incluyen reservar y liberar el lote.
  6. Contrato: Representa el contrato para un lote. Los atributos incluyen id, tasa de interés, fecha de inicio, fecha de finalización, monto total, frecuencia de pago, calendario de pagos, estado e idLote. Los métodos incluyen generar el calendario de pagos.
  7. Cuota(PaymentSchedule): Representa el calendario de pagos para un contrato. Los atributos incluyen id, tipo de pago, fecha de pago, fecha de vencimiento del pago, monto e idContrato.
  8. Pago: Representa un pago realizado por el usuario. Los atributos incluyen id, monto, fecha, tasas, idDocumento, estado e idUsuario. Los métodos incluyen registrar y aprobar el pago.
  9. Plan: Representa un plan que puede estar asociado con un lote. Los atributos incluyen id y urlDocumento. Los métodos incluyen agregar un plan y asociarlo con un lote y una zona.
⚠️ **GitHub.com Fallback** ⚠️