https://github.com/allersec/sistema-gestion-pizza
Proyecto Java con interfaz gráfica Swing que simula un sistema completo para realizar pedidos de pizza
https://github.com/allersec/sistema-gestion-pizza
java maven
Last synced: about 2 months ago
JSON representation
Proyecto Java con interfaz gráfica Swing que simula un sistema completo para realizar pedidos de pizza
- Host: GitHub
- URL: https://github.com/allersec/sistema-gestion-pizza
- Owner: AllerSec
- License: apache-2.0
- Created: 2025-04-01T23:32:26.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-04-02T10:37:00.000Z (about 1 year ago)
- Last Synced: 2025-04-02T11:32:22.744Z (about 1 year ago)
- Topics: java, maven
- Language: Java
- Homepage:
- Size: 26.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🍕 Sistema de Gestión de Pedidos de Pizza en Línea
**Ejercicio 2** – Proyecto Java con interfaz gráfica Swing que simula un sistema completo para realizar pedidos de pizza. Incluye autenticación, gestión de pedidos, procesamiento de pagos e inyección de dependencias centralizada mediante el patrón Singleton.
---
## 📂 Estructura del Proyecto
```
src/
├── main/java/com/pizzasystem
│ ├── App.java # Clase principal
│ ├── di/ # Inyector de dependencias centralizado
│ ├── interfaces/ # Interfaces (contratos de servicios)
│ ├── models/ # Modelos de datos (Pizza, Order, User)
│ ├── services/ # Implementaciones de lógica de negocio
│ └── ui/ # Interfaz gráfica con Swing
└── test/java/com/pizzasystem # Tests unitarios con JUnit
```
---
## ✅ Funcionalidades
- Registro e inicio de sesión de usuarios
- Selección de pizzas y gestión de carrito
- Creación y cancelación de pedidos
- Procesamiento y reembolso de pagos
- Interfaz gráfica amigable
- Inyección de dependencias con patrón Singleton
---
## 🛠️ Principios SOLID aplicados
### 1. **S - Single Responsibility Principle (Responsabilidad Única)**
Cada clase tiene una única razón para cambiar:
- `Authenticator.java`: gestiona autenticación.
- `OrderManager.java`: lógica de pedidos.
- `PaymentProcessor.java`: gestiona pagos.
- `DatabaseManager.java`: persistencia y consultas.
### 2. **O - Open/Closed Principle (Abierta para extensión, cerrada para modificación)**
Las interfaces (`IAuthenticator`, `IOrderManager`, etc.) permiten extender funcionalidad sin modificar las clases que las usan.
### 3. **L - Liskov Substitution Principle (Sustitución de Liskov)**
Cualquier clase que implemente una interfaz puede sustituirse sin alterar el funcionamiento:
- Por ejemplo, `Authenticator implements IAuthenticator` se puede sustituir por otro autenticador sin romper nada.
### 4. **I - Interface Segregation Principle (Segregación de Interfaces)**
Cada interfaz define solo lo que necesita:
- `IPaymentProcessor` no incluye lógica de base de datos ni autenticación.
- `IDatabaseManager` se centra únicamente en operaciones CRUD.
### 5. **D - Dependency Inversion Principle (Inversión de Dependencias)**
Las clases dependen de abstracciones (`interfaces`), no de implementaciones:
- Todas las dependencias se inyectan desde `DependencyInjector.java`, cumpliendo el principio de inversión.
---
## 🔌 Inyección de Dependencias
Se realiza mediante la clase `DependencyInjector` (patrón Singleton):
```java
this.authenticator = new Authenticator(databaseManager);
this.orderManager = new OrderManager(databaseManager);
this.paymentProcessor = new PaymentProcessor(databaseManager);
```
Estas instancias se inyectan en la UI (`LoginPanel`, `OrderPanel`, `PaymentPanel`) y servicios, evitando acoplamiento directo y facilitando testeo.
---
## 🧪 Testing
En `/test/java/com/pizzasystem/` se encuentran pruebas unitarias por servicio:
- `AuthenticatorTest`
- `OrderManagerTest`
- `DatabaseManagerTest`
- `PaymentProcessorTest`
- `DependencyInjectorTest`
---
## ▶️ Ejecución
1. Compila el proyecto (preferiblemente en IntelliJ o similar).
2. Ejecuta `App.java` (interfaz Swing).
3. Usa el usuario de prueba:
**usuario / password**
---
## 📌 Tecnologías
- Java 17
- Swing (GUI)
- JUnit (Testing)
- Inyección manual de dependencias
- Base de datos en memoria (simulada)
---
## Link al repositorio
https://github.com/AllerSec/sistema-gestion-pizza.git