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:
+--------------------+ +---------------------+ +-----------------------+
| 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) |
+----------------------+
Claro, aquí está la traducción al español:
- 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.
- Administrador: Hereda de Usuario y tiene métodos adicionales para crear usuarios, subir documentos de usuarios y cambiar estados.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.