Este es un repositorio completo de ejercicios de programación en Java diseñado como material educativo y portfolio para demostrar el progreso realizado en la asignatura de Programación durante el primer curso del FP Desarrollo de Aplicaciones Multiplataforma en ThePower. Reúne todos los ejercicios, proyectos y entregables del curso, estructurados y organizados bajo una arquitectura profesional que evidencia la progresión desde fundamentos hasta proyectos integrales avanzados.
✨ Educativo: Aprendizaje estructurado y progresivo desde lo básico hasta POO avanzada
✨ Profesional: Código limpio con JavaDoc completo en todas las clases
✨ Práctico: Proyectos reales y completamente ejecutables
✨ Moderno: Java 21 LTS con sintaxis actualizada (pattern matching, arrow functions)
✨ Completo: 50+ clases, 200+ métodos, 4000+ líneas de código documentado
- Java 21 o superior
- Un editor (VS Code, IntelliJ IDEA, etc.)
cd src/main/java
javac com/dam/programacion/**/*.javajava com.dam.programacion.fundamentos.operadores.OperadoresConceptos básicos de programación Java:
- Entrada/Salida: Scanner, System.out, manejo de excepciones
- Estructuras de Control: if/else, switch, bucles (for, while, do-while, for-each)
- Operadores: Aritméticos, lógicos, relacionales, bit a bit, ternario
📁 src/main/java/com/dam/programacion/fundamentos/
📖 README.md
Manejo de estructuras de datos lineales:
- Arrays unidimensionales (vectores)
- Arrays bidimensionales (matrices)
- Búsqueda, ordenamiento, iteración
- Operaciones matriciales
📁 src/main/java/com/dam/programacion/arrays/
📖 README.md
Colecciones fundamentales del JCF:
- Pilas con
Deque - Colas FIFO con
ArrayDeque - Listas dinámicas con
ArrayList - Listas doblemente enlazadas con
LinkedList
📁 src/main/java/com/dam/programacion/collections/
📖 README.md
Programación Orientada a Objetos completa:
- Clases Básicas: Encapsulación, getters/setters, constructores
- Herencia: Jerarquías de clases, método super(), polimorfismo
- Abstracción: Clases abstractas, métodos abstractos
- Interfaces: Contratos, segregación de interfaces
📁 src/main/java/com/dam/programacion/poo/
📖 README.md
- 8 clases + 3 interfaces
- Sistema de gestión de superhéroes con poderes únicos
- Superman (vuelo), Batman (artes marciales), Spiderman (telaraña), Hulk (rabia)
- Demostración de polimorfismo avanzado y pattern matching
java com.dam.programacion.proyectos.superheroes.aplicacion.Main- 8 clases + 2 interfaces
- Simulador de diferentes especies con comportamientos específicos
- Gato (7 vidas), Perro (raza), Pajaro (volador), Mosquito (pequeño), Pez (acuático)
- Interfases segregadas (Volador, Picotear)
java com.dam.programacion.proyectos.animales.Main- 7 clases + 2 interfaces
- Sistema de gestión de corredores en categorías
- Popular, Juvenil, Federado, Elite
- Sistema de patrocinios y cálculo de cuotas
java com.dam.programacion.proyectos.carreras.aplicacion.Main- 2 clases principales con 1000+ líneas
- Triage médico automatizado
- Clasificación de urgencia (crítico, muy urgente, urgente, normal)
- Evaluación inteligente de síntomas
java com.dam.programacion.proyectos.urgencias.EmergencyTriageExample📁 src/main/java/com/dam/programacion/proyectos/
📖 README.md
| Métrica | Valor |
|---|---|
| Líneas de Código | 4000+ |
| Clases | 50+ |
| Interfaces | 8+ |
| Métodos | 200+ |
| Documentación | JavaDoc 100% |
| Ejemplos Ejecutables | 20+ |
| READMEs Detallados | 6 |
| Paquetes | 15 |
- ✅ Variables y tipos de datos primitivos
- ✅ Operadores (aritméticos, lógicos, relacionales, bit a bit)
- ✅ Precedencia de operadores
- ✅ Estructuras condicionales (if/else, switch)
- ✅ Bucles (for, while, do-while, for-each)
- ✅ Entrada/Salida con Scanner
- ✅ Arrays unidimensionales (vectores)
- ✅ Arrays bidimensionales (matrices)
- ✅ Iteración eficiente
- ✅ Búsqueda y ordenamiento
- ✅ Operaciones matriciales
- ✅ Clases y objetos
- ✅ Encapsulación (getters/setters)
- ✅ Herencia simple y múltiple (interfaces)
- ✅ Polimorfismo (sobrescritura y sobrecarga)
- ✅ Clases abstractas
- ✅ Interfaces
- ✅ Pattern matching (Java 14+)
- ✅ Modificadores de acceso (public, protected, private)
- ✅ Strategy (mediante interfaces)
- ✅ Template Method (clases base)
- ✅ Adapter (implementación múltiple)
- ✅ Factory (constructores)
Demuestra:
- Herencia de clase abstracta
- Múltiples interfaces en una clase
- Polimorfismo en tiempo de ejecución
- Pattern matching moderno
- JavaDoc profesional
Ejemplo de Ejecución:
=== Superman ===
Identidad Secreta: Clark Kent
[Superman] Tengo todos los superpoderes!
Superman vuela a una altitud de 10000.0 metros a velocidad supersonica.
Superman levanta un objeto de 500.0 toneladas sin esfuerzo.
Demuestra:
- Jerarquía clara de clases
- Interfaces segregadas (responsabilidad única)
- Encapsulación avanzada
- Atributos especiales por tipo
- Polimorfismo de interfaces
Ejemplo de Ejecución:
--- TODOS LOS ANIMALES SE PRESENTAN ---
Soy Garfield, tengo 3 años y soy un Gato naranja
¡Garfield dice: ¡MIAU MIAU!
Soy Rex, tengo 5 años y soy un Pastor Alemán
¡Rex hace: ¡GUAU GUAU!
Cada módulo contiene documentación completa:
| Módulo | README | Contenido |
|---|---|---|
| Fundamentos | ✅ | Explicaciones, ejemplos, ejercicios |
| Arrays | ✅ | Conceptos, operaciones, errores comunes |
| POO | ✅ | 4 pilares, buenas prácticas, patrones |
| Proyectos | ✅ | Descripciones, arquitectura, progresión |
- Este
README.md(visión general) src/main/java/com/dam/programacion/README.mdsrc/main/java/com/dam/programacion/fundamentos/README.mdsrc/main/java/com/dam/programacion/poo/README.mdsrc/main/java/com/dam/programacion/proyectos/README.md
MES 1: Fundamentos (6 semanas)
├─ Entrada/Salida (Scanner, System.out)
├─ Operadores (aritméticos, lógicos, bit a bit)
└─ Estructuras de Control (if/switch/bucles)
↓
MES 2: Estructuras de Datos (4 semanas)
├─ Arrays 1D (vectores)
├─ Arrays 2D (matrices)
└─ Búsqueda y ordenamiento
↓
MESES 3-4: Programación Orientada a Objetos (9 semanas)
├─ Clases Básicas (encapsulación, getters/setters)
├─ Herencia (jerarquías de clases)
├─ Polimorfismo (interfaces, clases abstractas)
└─ Patrones de Diseño (Strategy, Template Method, Factory)
↓
MESES 5-6: Collections y APIs Avanzadas (9 semanas)
├─ Colecciones (List, Set, Map, Queue, Deque)
├─ Iteración y Streams API
├─ Excepciones y Manejo de Errores
└─ I/O y Operaciones de Archivo (NIO.2)
↓
MESES 7-9: Proyectos Integrales (13 semanas)
├─ Superhéroes (básico: polimorfismo simple)
├─ Animales (básico: jerarquía de clases)
├─ Carreras (intermedio: herencia multinivel)
└─ Urgencias (avanzado: lógica compleja)
- Lenguaje: Java
- Versión Java: 21 LTS
- JDK: OpenJDK 21 o superior
- Encoding: UTF-8 (soporte completo de acentos españoles)
- Compilación: Manual (sin dependencias externas)
java --version
javac --versionEste repositorio demuestra:
- Fundamentos Sólidos en Java
- POO Completo: Herencia, polimorfismo, interfaces, encapsulación
- Código Profesional: Documentado, limpio, mantenible
- Capacidad Analítica: Resolución de problemas complejos
- Buenas Prácticas: JavaDoc, nombres descriptivos, estructura clara
- Progresión Lógica: De básico a avanzado, bien organizado
- Ejemplos Ejecutables: Todo funciona sin errores
- Portfolio en GitHub: Listo para demostrar habilidades
- Documentación Oficial Java 21
- Java SE 21 API Docs
- Oracle Java Tutorials
- Effective Java - Joshua Bloch
- Lee el README correspondiente a tu nivel
- Examina el código fuente (bien comentado)
- Ejecuta los ejemplos
- Modifica y experimenta
- Realiza los ejercicios propuestos
- Clona el repositorio
- Muestra la estructura organizada
- Ejecuta los ejemplos en vivo
- Explica los conceptos implementados
- Habla de lo que aprendiste
- Fork el repositorio
- Crea una rama con tus cambios
- Envía un pull request
- Comparte mejoras o nuevos ejemplos
- 🐍 Pattern Matching Moderno: Sintaxis Java 14+ con arrow functions
- 📊 Diagramas UML: En comentarios de clases importantes
- 🎨 Salida Formateada: Uso de box drawing para mejor visualización
- 📚 Ejercicios Propuestos: En cada módulo, desde básico a avanzado
- 🚀 Código Optimizado: Eficiente y fácil de mantener
- 🧪 Manejo de Errores: Robusto con try-catch donde corresponde
- 🌍 Unicode Completo: Soporte total para acentos españoles
ejercicios-programacion-dam/
├── README.md # Este archivo
├── pom.xml # Configuración Maven (opcional)
├── .gitignore # Especificaciones Git
├── docs/
│ ├── apuntes/ # Material de estudio
│ └── practicas/ # Prácticas adicionales
└── src/
├── main/java/com/dam/programacion/
│ ├── README.md # Guía principal
│ ├── fundamentos/
│ │ ├── README.md
│ │ ├── entrada_salida/Main.java
│ │ ├── estructuras_control/EstructurasControl.java
│ │ └── operadores/Operadores.java
│ ├── arrays/
│ │ ├── README.md
│ │ ├── one_dimensional/
│ │ └── bidimensionales/
│ ├── poo/
│ │ ├── README.md
│ │ ├── clases_basicas/
│ │ ├── herencia/
│ │ └── polymorphism/
│ └── proyectos/
│ ├── README.md
│ ├── superheroes/
│ ├── animales/
│ ├── carreras/
│ └── urgencias/
└── test/java/com/dam/programacion/
└── AppTest.java
Después de completar todo, deberías poder:
- Entender variables, tipos y operadores
- Escribir condicionales y bucles
- Crear y manipular arrays
- Diseñar clases con encapsulación
- Implementar herencia efectiva
- Usar polimorfismo en código real
- Crear interfaces segregadas
- Documentar código con JavaDoc
- Resolver problemas de diseño
- Explicar conceptos a otros
MIT License - Libre para usar con propósitos educativos y profesionales
MIT License
Copyright (c) 2024 Estudiante de DAM
Permission is hereby granted, free of charge, to any person obtaining a copy...
Andrea Gicela Bravo Landeta @roseprogramming en Github Estudiante de Desarrollo de Aplicaciones Multiplataforma en ThePower
Creado como:
- 📚 Material educativo personal
- 🏆 Portfolio GitHub profesional
- 💼 Preparación para entrevistas técnicas
- 🚀 Base para proyectos futuros
- Oracle por la excelente documentación de Java
- La comunidad Java por mejores prácticas
- Instructores de DAM en ThePower por la guía educativa
¿Preguntas o sugerencias?
- Abre un issue en GitHub
- Envía un pull request con mejoras
- Comparte tu feedback
Si te resulta útil para aprender Java:
- ⭐ Dale una estrella en GitHub
- 🔄 Comparte con otros estudiantes
- 💬 Deja un comentario con tu feedback
Siguiente paso: Dirígete a src/main/java/com/dam/programacion/ para empezar 👉
¡Feliz aprendizaje! 🚀