{"id":26981007,"url":"https://github.com/allersec/sistema-gestion-pizza","last_synced_at":"2026-05-05T07:31:55.490Z","repository":{"id":285730172,"uuid":"958886465","full_name":"AllerSec/sistema-gestion-pizza","owner":"AllerSec","description":" Proyecto Java con interfaz gráfica Swing que simula un sistema completo para realizar pedidos de pizza","archived":false,"fork":false,"pushed_at":"2025-04-02T10:37:00.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-02T11:32:22.744Z","etag":null,"topics":["java","maven"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AllerSec.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-01T23:32:26.000Z","updated_at":"2025-04-02T10:37:50.000Z","dependencies_parsed_at":"2025-04-02T11:42:48.860Z","dependency_job_id":null,"html_url":"https://github.com/AllerSec/sistema-gestion-pizza","commit_stats":null,"previous_names":["allersec/sistema-gestion-pizza"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllerSec%2Fsistema-gestion-pizza","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllerSec%2Fsistema-gestion-pizza/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllerSec%2Fsistema-gestion-pizza/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllerSec%2Fsistema-gestion-pizza/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AllerSec","download_url":"https://codeload.github.com/AllerSec/sistema-gestion-pizza/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247024156,"owners_count":20870940,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","maven"],"created_at":"2025-04-03T15:19:59.237Z","updated_at":"2026-05-05T07:31:55.455Z","avatar_url":"https://github.com/AllerSec.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🍕 Sistema de Gestión de Pedidos de Pizza en Línea\n\n**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.\n\n---\n\n## 📂 Estructura del Proyecto\n\n```\nsrc/\n├── main/java/com/pizzasystem\n│   ├── App.java                  # Clase principal\n│   ├── di/                      # Inyector de dependencias centralizado\n│   ├── interfaces/              # Interfaces (contratos de servicios)\n│   ├── models/                  # Modelos de datos (Pizza, Order, User)\n│   ├── services/                # Implementaciones de lógica de negocio\n│   └── ui/                      # Interfaz gráfica con Swing\n└── test/java/com/pizzasystem    # Tests unitarios con JUnit\n```\n\n---\n\n## ✅ Funcionalidades\n\n- Registro e inicio de sesión de usuarios\n- Selección de pizzas y gestión de carrito\n- Creación y cancelación de pedidos\n- Procesamiento y reembolso de pagos\n- Interfaz gráfica amigable\n- Inyección de dependencias con patrón Singleton\n\n---\n\n## 🛠️ Principios SOLID aplicados\n\n### 1. **S - Single Responsibility Principle (Responsabilidad Única)**  \nCada clase tiene una única razón para cambiar:\n- `Authenticator.java`: gestiona autenticación.\n- `OrderManager.java`: lógica de pedidos.\n- `PaymentProcessor.java`: gestiona pagos.\n- `DatabaseManager.java`: persistencia y consultas.\n\n### 2. **O - Open/Closed Principle (Abierta para extensión, cerrada para modificación)**  \nLas interfaces (`IAuthenticator`, `IOrderManager`, etc.) permiten extender funcionalidad sin modificar las clases que las usan.\n\n### 3. **L - Liskov Substitution Principle (Sustitución de Liskov)**  \nCualquier clase que implemente una interfaz puede sustituirse sin alterar el funcionamiento:\n- Por ejemplo, `Authenticator implements IAuthenticator` se puede sustituir por otro autenticador sin romper nada.\n\n### 4. **I - Interface Segregation Principle (Segregación de Interfaces)**  \nCada interfaz define solo lo que necesita:\n- `IPaymentProcessor` no incluye lógica de base de datos ni autenticación.\n- `IDatabaseManager` se centra únicamente en operaciones CRUD.\n\n### 5. **D - Dependency Inversion Principle (Inversión de Dependencias)**  \nLas clases dependen de abstracciones (`interfaces`), no de implementaciones:\n- Todas las dependencias se inyectan desde `DependencyInjector.java`, cumpliendo el principio de inversión.\n\n---\n\n## 🔌 Inyección de Dependencias\n\nSe realiza mediante la clase `DependencyInjector` (patrón Singleton):\n\n```java\nthis.authenticator = new Authenticator(databaseManager);\nthis.orderManager = new OrderManager(databaseManager);\nthis.paymentProcessor = new PaymentProcessor(databaseManager);\n```\n\nEstas instancias se inyectan en la UI (`LoginPanel`, `OrderPanel`, `PaymentPanel`) y servicios, evitando acoplamiento directo y facilitando testeo.\n\n---\n\n## 🧪 Testing\n\nEn `/test/java/com/pizzasystem/` se encuentran pruebas unitarias por servicio:\n- `AuthenticatorTest`\n- `OrderManagerTest`\n- `DatabaseManagerTest`\n- `PaymentProcessorTest`\n- `DependencyInjectorTest`\n\n---\n\n## ▶️ Ejecución\n\n1. Compila el proyecto (preferiblemente en IntelliJ o similar).\n2. Ejecuta `App.java` (interfaz Swing).\n3. Usa el usuario de prueba:  \n   **usuario / password**\n\n---\n\n## 📌 Tecnologías\n\n- Java 17\n- Swing (GUI)\n- JUnit (Testing)\n- Inyección manual de dependencias\n- Base de datos en memoria (simulada)\n\n---\n\n## Link al repositorio\n\nhttps://github.com/AllerSec/sistema-gestion-pizza.git\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallersec%2Fsistema-gestion-pizza","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fallersec%2Fsistema-gestion-pizza","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallersec%2Fsistema-gestion-pizza/lists"}