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|            | + uploadUserDocuments()|          | - lotId: int          |
| - lastName: String |            | + changeStatus()    |             | - status: String      |
| - email: String    |            | ---------------------             | - paymentTerm: int    |
| - password: String |                                                | - national_id: string |
+--------------------+                                                | - userId: int         |
| + register()       |                                                +-----------------------+
| + login()          |                                                | + createRequest()     |
| + recoverPassword()|                                                | + approveRequest()    |
+--------------------+                                                | + rejectRequest()     |
                                                                      +-----------------------+
                                                                                ^
                                             -----------------------------------|
                                            |
                                            |
                                  +-----------------------------+             +------------------------------+
                                  |      Project                | <---------- |         Plan                 |
                                  +---------------------------- +             +------------------------------+
                                  | - id: int                   |             | - id: int                    |
                                  | - name: String              |             | - documentUrl: string        |
                                  | - address: String           |             +------------------------------+
                                  | - lotCount: int             |             | + addPlan()                  |
                                  | - pricePerSquareMeter: float|             | + associateWithLot(lot, zone)|
                                  | - interestRate: float       |             +------------------------------+
                                  | - lotSize: float            |
                                  +-----------------------------+
                                  | + addProject()              |
                                  | + editProject()             |
                                  | + deleteProject()           |
                                  | + searchProject()           |
                                  | + addLots()                 |
                                  | + addLot()                  |
                                  +-----------------------------+
                                            ^
                                            |
                                            |
                                  +----------------------+
                                  |       Lot            |
                                  +----------------------+
                                  | - id: int            |
                                  | - size: float        |
                                  | - status: String     |
                                  | - projectId: int     |
                                  +----------------------+
                                  | + reserve()          |
                                  | + release()          |
                                  +----------------------+
                                            ^
                                            |
                                            |
                                  +----------------------+
                                  |  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     |
                                  +----------------------+
                                  | + registerPayment()  |
                                  | + approvePayment()   |
                                  +----------------------+

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.